From 151b60c436353ba6c16bf88b4925558419f82612 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Thu, 16 Mar 2023 22:09:19 +0100 Subject: [PATCH] Remove OpenGL and OpenGL ES backends --- src/CMakeLists.txt | 47 - src/common/platform/posix/cocoa/gl_sysfb.h | 17 - src/common/platform/posix/cocoa/i_video.mm | 351 +- src/common/platform/posix/sdl/gl_sysfb.h | 20 - src/common/platform/posix/sdl/sdlglvideo.cpp | 220 +- .../platform/posix/unix/gtk_dialogs.cpp | 19 +- src/common/platform/win32/base_sysfb.cpp | 1 - src/common/platform/win32/gl_sysfb.cpp | 127 - src/common/platform/win32/gl_sysfb.h | 20 - src/common/platform/win32/hardware.cpp | 57 +- src/common/platform/win32/i_system.cpp | 27 +- src/common/rendering/gl/gl_buffers.cpp | 277 -- src/common/rendering/gl/gl_buffers.h | 80 - src/common/rendering/gl/gl_debug.cpp | 365 -- src/common/rendering/gl/gl_debug.h | 44 - src/common/rendering/gl/gl_framebuffer.cpp | 619 --- src/common/rendering/gl/gl_framebuffer.h | 79 - src/common/rendering/gl/gl_hwtexture.cpp | 343 -- src/common/rendering/gl/gl_hwtexture.h | 80 - src/common/rendering/gl/gl_postprocess.cpp | 267 -- .../rendering/gl/gl_postprocessstate.cpp | 134 - src/common/rendering/gl/gl_postprocessstate.h | 41 - src/common/rendering/gl/gl_renderbuffers.cpp | 995 ---- src/common/rendering/gl/gl_renderbuffers.h | 212 - src/common/rendering/gl/gl_renderer.cpp | 183 - src/common/rendering/gl/gl_renderer.h | 116 - src/common/rendering/gl/gl_renderstate.cpp | 612 --- src/common/rendering/gl/gl_renderstate.h | 150 - src/common/rendering/gl/gl_samplers.cpp | 141 - src/common/rendering/gl/gl_samplers.h | 30 - src/common/rendering/gl/gl_shader.cpp | 949 ---- src/common/rendering/gl/gl_shader.h | 358 -- src/common/rendering/gl/gl_shaderprogram.cpp | 363 -- src/common/rendering/gl/gl_shaderprogram.h | 103 - src/common/rendering/gl/gl_stereo3d.cpp | 459 -- src/common/rendering/gl_load/gl_extlist.txt | 15 - src/common/rendering/gl_load/gl_interface.cpp | 251 - src/common/rendering/gl_load/gl_interface.h | 19 - src/common/rendering/gl_load/gl_load.c | 3524 -------------- src/common/rendering/gl_load/gl_load.h | 4223 ----------------- src/common/rendering/gl_load/gl_system.h | 44 - .../gles/glad/include/EGL/eglplatform.h | 125 - .../gles/glad/include/KHR/khrplatform.h | 290 -- .../rendering/gles/glad/include/glad/glad.h | 874 ---- .../gles/glad/include/glad/glad_egl.h | 267 -- src/common/rendering/gles/glad/src/glad.c | 475 -- src/common/rendering/gles/glad/src/glad_egl.c | 45 - src/common/rendering/gles/gles_buffers.cpp | 343 -- src/common/rendering/gles/gles_buffers.h | 84 - .../rendering/gles/gles_framebuffer.cpp | 499 -- src/common/rendering/gles/gles_framebuffer.h | 73 - src/common/rendering/gles/gles_hwtexture.cpp | 348 -- src/common/rendering/gles/gles_hwtexture.h | 83 - .../rendering/gles/gles_postprocess.cpp | 226 - .../rendering/gles/gles_postprocessstate.cpp | 118 - .../rendering/gles/gles_postprocessstate.h | 40 - .../rendering/gles/gles_renderbuffers.cpp | 430 -- .../rendering/gles/gles_renderbuffers.h | 152 - src/common/rendering/gles/gles_renderer.cpp | 158 - src/common/rendering/gles/gles_renderer.h | 107 - .../rendering/gles/gles_renderstate.cpp | 742 --- src/common/rendering/gles/gles_renderstate.h | 144 - src/common/rendering/gles/gles_samplers.cpp | 217 - src/common/rendering/gles/gles_samplers.h | 27 - src/common/rendering/gles/gles_shader.cpp | 949 ---- src/common/rendering/gles/gles_shader.h | 495 -- .../rendering/gles/gles_shaderprogram.cpp | 293 -- .../rendering/gles/gles_shaderprogram.h | 159 - src/common/rendering/gles/gles_system.cpp | 237 - src/common/rendering/gles/gles_system.h | 123 - .../postprocessing/hw_postprocess.cpp | 3 + src/common/rendering/v_video.cpp | 34 - src/common/rendering/v_video.h | 1 - .../rendering/vulkan/system/vk_renderdevice.h | 2 +- src/d_defcvars.cpp | 1 - src/d_main.cpp | 33 + src/gameconfigfile.cpp | 11 +- src/win32/zdoom.rc | 6 - wadsrc/static/menudef.txt | 6 - wadsrc/static/menudef.zsimple | 1 - .../shaders_gles/Uniform usage notes.txt | 90 - wadsrc/static/shaders_gles/glsl/burn.fp | 13 - .../static/shaders_gles/glsl/fogboundary.fp | 30 - .../shaders_gles/glsl/func_defaultlight.fp | 5 - .../shaders_gles/glsl/func_defaultmat.fp | 7 - .../shaders_gles/glsl/func_defaultmat2.fp | 6 - .../static/shaders_gles/glsl/func_normal.fp | 5 - .../shaders_gles/glsl/func_notexture.fp | 6 - .../static/shaders_gles/glsl/func_paletted.fp | 10 - wadsrc/static/shaders_gles/glsl/func_pbr.fp | 5 - wadsrc/static/shaders_gles/glsl/func_spec.fp | 8 - wadsrc/static/shaders_gles/glsl/func_warp1.fp | 19 - wadsrc/static/shaders_gles/glsl/func_warp2.fp | 20 - wadsrc/static/shaders_gles/glsl/func_warp3.fp | 21 - wadsrc/static/shaders_gles/glsl/func_wavex.fp | 17 - .../static/shaders_gles/glsl/fuzz_jagged.fp | 24 - wadsrc/static/shaders_gles/glsl/fuzz_noise.fp | 20 - .../static/shaders_gles/glsl/fuzz_smooth.fp | 18 - .../shaders_gles/glsl/fuzz_smoothnoise.fp | 19 - .../glsl/fuzz_smoothtranslucent.fp | 18 - .../static/shaders_gles/glsl/fuzz_software.fp | 21 - .../static/shaders_gles/glsl/fuzz_standard.fp | 21 - .../static/shaders_gles/glsl/fuzz_swirly.fp | 18 - wadsrc/static/shaders_gles/glsl/main.fp | 566 --- wadsrc/static/shaders_gles/glsl/main.vp | 219 - .../shaders_gles/glsl/material_nolight.fp | 5 - .../shaders_gles/glsl/material_normal.fp | 118 - wadsrc/static/shaders_gles/glsl/stencil.fp | 7 - wadsrc/static/shaders_gles/pp/present.fp | 32 - wadsrc/static/shaders_gles/pp/screenquad.vp | 11 - 110 files changed, 109 insertions(+), 25473 deletions(-) delete mode 100644 src/common/platform/win32/gl_sysfb.cpp delete mode 100644 src/common/platform/win32/gl_sysfb.h delete mode 100644 src/common/rendering/gl/gl_buffers.cpp delete mode 100644 src/common/rendering/gl/gl_buffers.h delete mode 100644 src/common/rendering/gl/gl_debug.cpp delete mode 100644 src/common/rendering/gl/gl_debug.h delete mode 100644 src/common/rendering/gl/gl_framebuffer.cpp delete mode 100644 src/common/rendering/gl/gl_framebuffer.h delete mode 100644 src/common/rendering/gl/gl_hwtexture.cpp delete mode 100644 src/common/rendering/gl/gl_hwtexture.h delete mode 100644 src/common/rendering/gl/gl_postprocess.cpp delete mode 100644 src/common/rendering/gl/gl_postprocessstate.cpp delete mode 100644 src/common/rendering/gl/gl_postprocessstate.h delete mode 100644 src/common/rendering/gl/gl_renderbuffers.cpp delete mode 100644 src/common/rendering/gl/gl_renderbuffers.h delete mode 100644 src/common/rendering/gl/gl_renderer.cpp delete mode 100644 src/common/rendering/gl/gl_renderer.h delete mode 100644 src/common/rendering/gl/gl_renderstate.cpp delete mode 100644 src/common/rendering/gl/gl_renderstate.h delete mode 100644 src/common/rendering/gl/gl_samplers.cpp delete mode 100644 src/common/rendering/gl/gl_samplers.h delete mode 100644 src/common/rendering/gl/gl_shader.cpp delete mode 100644 src/common/rendering/gl/gl_shader.h delete mode 100644 src/common/rendering/gl/gl_shaderprogram.cpp delete mode 100644 src/common/rendering/gl/gl_shaderprogram.h delete mode 100644 src/common/rendering/gl/gl_stereo3d.cpp delete mode 100644 src/common/rendering/gl_load/gl_extlist.txt delete mode 100644 src/common/rendering/gl_load/gl_interface.cpp delete mode 100644 src/common/rendering/gl_load/gl_interface.h delete mode 100644 src/common/rendering/gl_load/gl_load.c delete mode 100644 src/common/rendering/gl_load/gl_load.h delete mode 100644 src/common/rendering/gl_load/gl_system.h delete mode 100644 src/common/rendering/gles/glad/include/EGL/eglplatform.h delete mode 100644 src/common/rendering/gles/glad/include/KHR/khrplatform.h delete mode 100644 src/common/rendering/gles/glad/include/glad/glad.h delete mode 100644 src/common/rendering/gles/glad/include/glad/glad_egl.h delete mode 100644 src/common/rendering/gles/glad/src/glad.c delete mode 100644 src/common/rendering/gles/glad/src/glad_egl.c delete mode 100644 src/common/rendering/gles/gles_buffers.cpp delete mode 100644 src/common/rendering/gles/gles_buffers.h delete mode 100644 src/common/rendering/gles/gles_framebuffer.cpp delete mode 100644 src/common/rendering/gles/gles_framebuffer.h delete mode 100644 src/common/rendering/gles/gles_hwtexture.cpp delete mode 100644 src/common/rendering/gles/gles_hwtexture.h delete mode 100644 src/common/rendering/gles/gles_postprocess.cpp delete mode 100644 src/common/rendering/gles/gles_postprocessstate.cpp delete mode 100644 src/common/rendering/gles/gles_postprocessstate.h delete mode 100644 src/common/rendering/gles/gles_renderbuffers.cpp delete mode 100644 src/common/rendering/gles/gles_renderbuffers.h delete mode 100644 src/common/rendering/gles/gles_renderer.cpp delete mode 100644 src/common/rendering/gles/gles_renderer.h delete mode 100644 src/common/rendering/gles/gles_renderstate.cpp delete mode 100644 src/common/rendering/gles/gles_renderstate.h delete mode 100644 src/common/rendering/gles/gles_samplers.cpp delete mode 100644 src/common/rendering/gles/gles_samplers.h delete mode 100644 src/common/rendering/gles/gles_shader.cpp delete mode 100644 src/common/rendering/gles/gles_shader.h delete mode 100644 src/common/rendering/gles/gles_shaderprogram.cpp delete mode 100644 src/common/rendering/gles/gles_shaderprogram.h delete mode 100644 src/common/rendering/gles/gles_system.cpp delete mode 100644 src/common/rendering/gles/gles_system.h delete mode 100644 wadsrc/static/shaders_gles/Uniform usage notes.txt delete mode 100644 wadsrc/static/shaders_gles/glsl/burn.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fogboundary.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_defaultlight.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_defaultmat.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_defaultmat2.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_normal.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_notexture.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_paletted.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_pbr.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_spec.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_warp1.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_warp2.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_warp3.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/func_wavex.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_jagged.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_noise.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_smooth.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_smoothnoise.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_smoothtranslucent.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_software.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_standard.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/fuzz_swirly.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/main.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/main.vp delete mode 100644 wadsrc/static/shaders_gles/glsl/material_nolight.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/material_normal.fp delete mode 100644 wadsrc/static/shaders_gles/glsl/stencil.fp delete mode 100644 wadsrc/static/shaders_gles/pp/present.fp delete mode 100644 wadsrc/static/shaders_gles/pp/screenquad.vp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6bd3aa92c..9abd79616 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -401,10 +401,8 @@ set( PLAT_WIN32_SOURCES common/platform/win32/i_system.cpp common/platform/win32/i_specialpaths.cpp common/platform/win32/st_start.cpp - common/platform/win32/gl_sysfb.cpp common/platform/win32/base_sysfb.cpp common/platform/win32/win32basevideo.cpp - common/platform/win32/win32glvideo.cpp ) if (HAVE_VULKAN) @@ -587,8 +585,6 @@ file( GLOB HEADER_FILES common/thirdparty/math/*h common/thirdparty/libsmackerdec/include/*.h common/rendering/*.h - common/rendering/gl_load/*.h - common/rendering/gles/*.h common/rendering/hwrenderer/data/*.h common/rendering/vulkan/*.h common/rendering/vulkan/system/*.h @@ -710,7 +706,6 @@ set( FASTMATH_SOURCES common/textures/hires/hqnx/hq4x.cpp common/textures/hires/xbr/xbrz.cpp common/textures/hires/xbr/xbrz_old.cpp - common/rendering/gl_load/gl_load.c rendering/hwrenderer/hw_dynlightdata.cpp rendering/hwrenderer/scene/hw_bsp.cpp rendering/hwrenderer/scene/hw_fakeflat.cpp @@ -755,26 +750,6 @@ set (VULKAN_SOURCES common/rendering/vulkan/textures/vk_framebuffer.cpp ) -if (HAVE_GLES2) - set (GLES_SOURCES - common/rendering/gles/gles_system.cpp - common/rendering/gles/gles_renderer.cpp - common/rendering/gles/gles_framebuffer.cpp - common/rendering/gles/gles_renderstate.cpp - common/rendering/gles/gles_renderbuffers.cpp - common/rendering/gles/gles_postprocess.cpp - common/rendering/gles/gles_postprocessstate.cpp - common/rendering/gles/gles_buffers.cpp - common/rendering/gles/gles_hwtexture.cpp - common/rendering/gles/gles_shader.cpp - common/rendering/gles/gles_shaderprogram.cpp - common/rendering/gles/gles_samplers.cpp - common/rendering/gles/glad/src/glad.c - ) - - set (FASTMATH_SOURCES ${FASTMATH_SOURCES} ${GLES_SOURCES}) -endif() - if (HAVE_VULKAN) set (FASTMATH_SOURCES ${FASTMATH_SOURCES} ${VULKAN_SOURCES}) endif() @@ -1139,20 +1114,6 @@ set (PCH_SOURCES common/rendering/hwrenderer/postprocessing/hw_postprocess.cpp common/rendering/hwrenderer/postprocessing/hw_postprocess_cvars.cpp common/rendering/hwrenderer/postprocessing/hw_postprocessshader_ccmds.cpp - common/rendering/gl_load/gl_interface.cpp - common/rendering/gl/gl_renderer.cpp - common/rendering/gl/gl_stereo3d.cpp - common/rendering/gl/gl_framebuffer.cpp - common/rendering/gl/gl_renderstate.cpp - common/rendering/gl/gl_renderbuffers.cpp - common/rendering/gl/gl_postprocess.cpp - common/rendering/gl/gl_postprocessstate.cpp - common/rendering/gl/gl_debug.cpp - common/rendering/gl/gl_buffers.cpp - common/rendering/gl/gl_hwtexture.cpp - common/rendering/gl/gl_samplers.cpp - common/rendering/gl/gl_shader.cpp - common/rendering/gl/gl_shaderprogram.cpp common/scripting/core/maps.cpp common/scripting/core/dictionary.cpp common/scripting/core/dynarrays.cpp @@ -1265,11 +1226,6 @@ include_directories( . common/startscreen common/rendering common/rendering/hwrenderer/data - common/rendering/gl_load - common/rendering/gl - common/rendering/gles - common/rendering/gles/glad/include - common/rendering/gles/Mali_OpenGL_ES_Emulator/include common/scripting/vm common/scripting/jit common/scripting/core @@ -1469,9 +1425,6 @@ source_group("Common\\Rendering" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR source_group("Common\\Rendering\\Hardware Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/hwrenderer/.+") source_group("Common\\Rendering\\Hardware Renderer\\Data" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/hwrenderer/data/.+") source_group("Common\\Rendering\\Hardware Renderer\\Postprocessing" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/hwrenderer/postprocessing/.+") -source_group("Common\\Rendering\\OpenGL Loader" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl_load/.+") -source_group("Common\\Rendering\\OpenGL Backend" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gl/.+") -source_group("Common\\Rendering\\GLES Backend" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/gles/.+") source_group("Common\\Rendering\\Vulkan Renderer\\System" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/vulkan/system/.+") source_group("Common\\Rendering\\Vulkan Renderer\\Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/vulkan/renderer/.+") source_group("Common\\Rendering\\Vulkan Renderer\\Shaders" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/common/rendering/vulkan/shaders/.+") diff --git a/src/common/platform/posix/cocoa/gl_sysfb.h b/src/common/platform/posix/cocoa/gl_sysfb.h index 144c3cb44..93272f28c 100644 --- a/src/common/platform/posix/cocoa/gl_sysfb.h +++ b/src/common/platform/posix/cocoa/gl_sysfb.h @@ -82,21 +82,4 @@ protected: }; -class SystemGLFrameBuffer : public SystemBaseFrameBuffer -{ - typedef SystemBaseFrameBuffer Super; - -public: - SystemGLFrameBuffer(void *hMonitor, bool fullscreen); - - void SetVSync(bool vsync) override; - - void SetMode(bool fullscreen, bool hiDPI) override; - -protected: - void SwapBuffers(); - - SystemGLFrameBuffer() {} -}; - #endif // COCOA_GL_SYSFB_H_INCLUDED diff --git a/src/common/platform/posix/cocoa/i_video.mm b/src/common/platform/posix/cocoa/i_video.mm index 9a2737ccf..7c3c64732 100644 --- a/src/common/platform/posix/cocoa/i_video.mm +++ b/src/common/platform/posix/cocoa/i_video.mm @@ -31,8 +31,6 @@ ** */ -#include "gl_load.h" - #ifdef HAVE_VULKAN #include #include @@ -51,10 +49,6 @@ #include "v_text.h" #include "version.h" #include "printf.h" -#include "gl_framebuffer.h" -#ifdef HAVE_GLES2 -#include "gles_framebuffer.h" -#endif #ifdef HAVE_VULKAN #include "vulkan/system/vk_renderdevice.h" @@ -177,54 +171,6 @@ namespace // --------------------------------------------------------------------------- -@interface OpenGLCocoaView : NSOpenGLView -{ - NSCursor* m_cursor; -} - -- (void)setCursor:(NSCursor*)cursor; - -@end - - -@implementation OpenGLCocoaView - -- (void)drawRect:(NSRect)dirtyRect -{ - if ([NSGraphicsContext currentContext]) - { - [NSColor.blackColor setFill]; - NSRectFill(dirtyRect); - } - else if (self.layer != nil) - { - self.layer.backgroundColor = CGColorGetConstantColor(kCGColorBlack); - } -} - -- (void)resetCursorRects -{ - [super resetCursorRects]; - - NSCursor* const cursor = nil == m_cursor - ? [NSCursor arrowCursor] - : m_cursor; - - [self addCursorRect:[self bounds] - cursor:cursor]; -} - -- (void)setCursor:(NSCursor*)cursor -{ - m_cursor = cursor; -} - -@end - - -// --------------------------------------------------------------------------- - - @interface VulkanCocoaView : NSView { NSCursor* m_cursor; @@ -343,25 +289,6 @@ NSOpenGLPixelFormat* CreatePixelFormat(const OpenGLProfile profile) return [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]; } -void SetupOpenGLView(CocoaWindow* const window, const OpenGLProfile profile) -{ - NSOpenGLPixelFormat* pixelFormat = CreatePixelFormat(profile); - - if (nil == pixelFormat) - { - I_FatalError("Cannot create OpenGL pixel format, graphics hardware is not supported"); - } - - // Create OpenGL context and view - - const NSRect contentRect = [window contentRectForFrameRect:[window frame]]; - OpenGLCocoaView* glView = [[OpenGLCocoaView alloc] initWithFrame:contentRect - pixelFormat:pixelFormat]; - [[glView openGLContext] makeCurrentContext]; - - [window setContentView:glView]; -} - } // unnamed namespace @@ -373,7 +300,6 @@ class CocoaVideo : public IVideo public: CocoaVideo() { - ms_isVulkanEnabled = V_GetBackend() == 1 && NSAppKitVersionNumber >= 1404; // NSAppKitVersionNumber10_11 } ~CocoaVideo() @@ -391,84 +317,61 @@ public: SystemBaseFrameBuffer *fb = nullptr; #ifdef HAVE_VULKAN - if (ms_isVulkanEnabled) + NSView* vulkanView = [[VulkanCocoaView alloc] initWithFrame:contentRect]; + vulkanView.wantsLayer = YES; + vulkanView.layer.backgroundColor = NSColor.blackColor.CGColor; + + [ms_window setContentView:vulkanView]; + + // See vk_mvk_moltenvk.h for comprehensive explanation of configuration options set below + // https://github.com/KhronosGroup/MoltenVK/blob/master/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h + + if (vk_debug) { - NSView* vulkanView = [[VulkanCocoaView alloc] initWithFrame:contentRect]; - vulkanView.wantsLayer = YES; - vulkanView.layer.backgroundColor = NSColor.blackColor.CGColor; + // Output errors and informational messages + setenv("MVK_CONFIG_LOG_LEVEL", "2", 0); - [ms_window setContentView:vulkanView]; - - // See vk_mvk_moltenvk.h for comprehensive explanation of configuration options set below - // https://github.com/KhronosGroup/MoltenVK/blob/master/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h - - if (vk_debug) + if (mvk_debug) { - // Output errors and informational messages - setenv("MVK_CONFIG_LOG_LEVEL", "2", 0); - - if (mvk_debug) - { - // Extensive MoltenVK logging, too spammy even for vk_debug CVAR - setenv("MVK_DEBUG", "1", 0); - } - } - else - { - // Limit MoltenVK logging to errors only - setenv("MVK_CONFIG_LOG_LEVEL", "1", 0); - } - - if (!vid_autoswitch) - { - // CVAR from pre-Vulkan era has a priority over vk_device selection - setenv("MVK_CONFIG_FORCE_LOW_POWER_GPU", "1", 0); - } - - // The following settings improve performance like suggested at - // https://github.com/KhronosGroup/MoltenVK/issues/581#issuecomment-487293665 - setenv("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", "0", 0); - setenv("MVK_CONFIG_PRESENT_WITH_COMMAND_BUFFER", "0", 0); - - try - { - VulkanInstanceBuilder builder; - builder.DebugLayer(vk_debug); - builder.RequireExtension(VK_KHR_SURFACE_EXTENSION_NAME); // KHR_surface, required - builder.OptionalExtension(VK_EXT_METAL_SURFACE_EXTENSION_NAME); // EXT_metal_surface, optional, preferred - builder.OptionalExtension(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); // MVK_macos_surface, optional, deprecated - auto vulkanInstance = builder.Create(); - - VkSurfaceKHR surfacehandle = nullptr; - if (!I_CreateVulkanSurface(vulkanInstance->Instance, &surfacehandle)) - VulkanError("I_CreateVulkanSurface failed"); - - m_vulkanSurface = std::make_shared(vulkanInstance, surfacehandle); - - fb = new VulkanRenderDevice(nullptr, vid_fullscreen, m_vulkanSurface); - } - catch (std::exception const&) - { - ms_isVulkanEnabled = false; - - SetupOpenGLView(ms_window, OpenGLProfile::Core); + // Extensive MoltenVK logging, too spammy even for vk_debug CVAR + setenv("MVK_DEBUG", "1", 0); } } else -#endif - - SetupOpenGLView(ms_window, OpenGLProfile::Core); - - if (fb == nullptr) { -#ifdef HAVE_GLES2 - if(V_GetBackend() == 2) - fb = new OpenGLESRenderer::OpenGLFrameBuffer(0, vid_fullscreen); - else -#endif - fb = new OpenGLRenderer::OpenGLFrameBuffer(0, vid_fullscreen); + // Limit MoltenVK logging to errors only + setenv("MVK_CONFIG_LOG_LEVEL", "1", 0); } + if (!vid_autoswitch) + { + // CVAR from pre-Vulkan era has a priority over vk_device selection + setenv("MVK_CONFIG_FORCE_LOW_POWER_GPU", "1", 0); + } + + // The following settings improve performance like suggested at + // https://github.com/KhronosGroup/MoltenVK/issues/581#issuecomment-487293665 + setenv("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", "0", 0); + setenv("MVK_CONFIG_PRESENT_WITH_COMMAND_BUFFER", "0", 0); + + VulkanInstanceBuilder builder; + builder.DebugLayer(vk_debug); + builder.RequireExtension(VK_KHR_SURFACE_EXTENSION_NAME); // KHR_surface, required + builder.OptionalExtension(VK_EXT_METAL_SURFACE_EXTENSION_NAME); // EXT_metal_surface, optional, preferred + builder.OptionalExtension(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); // MVK_macos_surface, optional, deprecated + auto vulkanInstance = builder.Create(); + + VkSurfaceKHR surfacehandle = nullptr; + if (!I_CreateVulkanSurface(vulkanInstance->Instance, &surfacehandle)) + VulkanError("I_CreateVulkanSurface failed"); + + m_vulkanSurface = std::make_shared(vulkanInstance, surfacehandle); + + fb = new VulkanRenderDevice(nullptr, vid_fullscreen, m_vulkanSurface); +#else +#error "Vulkan support must be enabled!" +#endif + fb->SetWindow(ms_window); fb->SetMode(vid_fullscreen, vid_hidpi); fb->SetSize(fb->GetClientWidth(), fb->GetClientHeight()); @@ -478,7 +381,7 @@ public: // with fullscreen window and Core Animation's Metal layer // It is somehow related to initial window level and flags // Toggling fullscreen -> window -> fullscreen mysteriously solves the problem - if (ms_isVulkanEnabled && vid_fullscreen) + if (vid_fullscreen) { fb->SetMode(false, vid_hidpi); fb->SetMode(true, vid_hidpi); @@ -498,15 +401,11 @@ private: std::shared_ptr m_vulkanSurface; #endif static CocoaWindow* ms_window; - - static bool ms_isVulkanEnabled; }; CocoaWindow* CocoaVideo::ms_window; -bool CocoaVideo::ms_isVulkanEnabled; - // --------------------------------------------------------------------------- @@ -643,17 +542,9 @@ void SystemBaseFrameBuffer::SetWindowedMode() void SystemBaseFrameBuffer::SetMode(const bool fullscreen, const bool hiDPI) { - if ([m_window.contentView isKindOfClass:[OpenGLCocoaView class]]) - { - NSOpenGLView* const glView = [m_window contentView]; - [glView setWantsBestResolutionOpenGLSurface:hiDPI]; - } - else - { - assert(m_window.screen != nil); - assert([m_window.contentView layer] != nil); - [m_window.contentView layer].contentsScale = hiDPI ? m_window.screen.backingScaleFactor : 1.0; - } + assert(m_window.screen != nil); + assert([m_window.contentView layer] != nil); + [m_window.contentView layer].contentsScale = hiDPI ? m_window.screen.backingScaleFactor : 1.0; if (vid_nativefullscreen && fullscreen != m_fullscreen) { @@ -731,60 +622,6 @@ void SystemBaseFrameBuffer::SetWindowTitle(const char* title) // --------------------------------------------------------------------------- -SystemGLFrameBuffer::SystemGLFrameBuffer(void *hMonitor, bool fullscreen) -: SystemBaseFrameBuffer(hMonitor, fullscreen) -{ -} - - -void SystemGLFrameBuffer::SetVSync(bool vsync) -{ - const GLint value = vsync ? 1 : 0; - - [[NSOpenGLContext currentContext] setValues:&value - forParameter:NSOpenGLCPSwapInterval]; -} - - -void SystemGLFrameBuffer::SetMode(const bool fullscreen, const bool hiDPI) -{ - NSOpenGLView* const glView = [m_window contentView]; - [glView setWantsBestResolutionOpenGLSurface:hiDPI]; - - if (vid_nativefullscreen && fullscreen != m_fullscreen) - { - [m_window toggleFullScreen:(nil)]; - } - else if (fullscreen) - { - SetFullscreenMode(); - } - else - { - SetWindowedMode(); - } - - [m_window updateTitle]; - - if (![m_window isKeyWindow]) - { - [m_window makeKeyAndOrderFront:nil]; - } - - m_fullscreen = fullscreen; - m_hiDPI = hiDPI; -} - - -void SystemGLFrameBuffer::SwapBuffers() -{ - [[NSOpenGLContext currentContext] flushBuffer]; -} - - -// --------------------------------------------------------------------------- - - IVideo* Video; @@ -954,91 +791,3 @@ bool I_CreateVulkanSurface(VkInstance instance, VkSurfaceKHR *surface) return result == VK_SUCCESS; } #endif - - -namespace -{ - TArray polyPixelBuffer; - GLuint polyTexture; - - int polyWidth = -1; - int polyHeight = -1; - int polyVSync = -1; -} - -void I_PolyPresentInit() -{ - ogl_LoadFunctions(); - - glGenTextures(1, &polyTexture); - assert(polyTexture != 0); - - glEnable(GL_TEXTURE_RECTANGLE_ARB); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, polyTexture); - - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -} - -uint8_t *I_PolyPresentLock(int w, int h, bool vsync, int &pitch) -{ - static const int PIXEL_BYTES = 4; - - if (polyPixelBuffer.Size() == 0 || w != polyWidth || h != polyHeight) - { - polyPixelBuffer.Resize(w * h * PIXEL_BYTES); - - polyWidth = w; - polyHeight = h; - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, w, h, 0.0, -1.0, 1.0); - - glViewport(0, 0, w, h); - } - - if (vsync != polyVSync) - { - const GLint value = vsync ? 1 : 0; - - [[NSOpenGLContext currentContext] setValues:&value - forParameter:NSOpenGLCPSwapInterval]; - } - - pitch = w * PIXEL_BYTES; - - return &polyPixelBuffer[0]; -} - -void I_PolyPresentUnlock(int x, int y, int w, int h) -{ - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, &polyPixelBuffer[0]); - - glBegin(GL_QUADS); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glTexCoord2f(0.0f, 0.0f); - glVertex2f(0.0f, 0.0f); - glTexCoord2f(w, 0.0f); - glVertex2f(w, 0.0f); - glTexCoord2f(w, h); - glVertex2f(w, h); - glTexCoord2f(0.0f, h); - glVertex2f(0.0f, h); - glEnd(); - - glFlush(); - - [[NSOpenGLContext currentContext] flushBuffer]; -} - -void I_PolyPresentDeinit() -{ - glBindTexture(GL_TEXTURE_2D, 0); - glDeleteTextures(1, &polyTexture); -} diff --git a/src/common/platform/posix/sdl/gl_sysfb.h b/src/common/platform/posix/sdl/gl_sysfb.h index e9491d098..918b6801b 100644 --- a/src/common/platform/posix/sdl/gl_sysfb.h +++ b/src/common/platform/posix/sdl/gl_sysfb.h @@ -25,25 +25,5 @@ protected: SystemBaseFrameBuffer () {} }; -class SystemGLFrameBuffer : public SystemBaseFrameBuffer -{ - typedef SystemBaseFrameBuffer Super; - -public: - SystemGLFrameBuffer(void *hMonitor, bool fullscreen); - ~SystemGLFrameBuffer(); - - int GetClientWidth() override; - int GetClientHeight() override; - - virtual void SetVSync(bool vsync) override; - void SwapBuffers(); - -protected: - SDL_GLContext GLContext; - - SystemGLFrameBuffer() {} -}; - #endif // __POSIX_SDL_GL_SYSFB_H__ diff --git a/src/common/platform/posix/sdl/sdlglvideo.cpp b/src/common/platform/posix/sdl/sdlglvideo.cpp index 326a5c9d9..5a1812f43 100644 --- a/src/common/platform/posix/sdl/sdlglvideo.cpp +++ b/src/common/platform/posix/sdl/sdlglvideo.cpp @@ -45,14 +45,6 @@ #include "printf.h" #include "hardware.h" -#include "gl_sysfb.h" -#include "gl_system.h" - -#include "gl_renderer.h" -#include "gl_framebuffer.h" -#ifdef HAVE_GLES2 -#include "gles_framebuffer.h" -#endif #ifdef HAVE_VULKAN #include "vulkan/system/vk_renderdevice.h" @@ -117,7 +109,6 @@ CCMD(vid_list_sdl_render_drivers) namespace Priv { SDL_Window *window; - bool vulkanEnabled; bool softpolyEnabled; bool fullscreenSwitch; @@ -160,38 +151,6 @@ namespace Priv SDL_DestroyWindow(Priv::window); Priv::window = nullptr; } - - void SetupPixelFormat(int multisample, const int *glver) - { - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); - SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - if (multisample > 0) { - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, multisample); - } - if (gl_debug) - SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); - - if (gl_es) - { - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); - } - else if (glver[0] > 2) - { - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, glver[0]); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, glver[1]); - } - else - { - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); - } - } } class SDLVideo : public IVideo @@ -213,21 +172,18 @@ private: #ifdef HAVE_VULKAN void I_GetVulkanDrawableSize(int *width, int *height) { - assert(Priv::vulkanEnabled); assert(Priv::window != nullptr); SDL_Vulkan_GetDrawableSize(Priv::window, width, height); } bool I_GetVulkanPlatformExtensions(unsigned int *count, const char **names) { - assert(Priv::vulkanEnabled); assert(Priv::window != nullptr); return SDL_Vulkan_GetInstanceExtensions(Priv::window, count, names) == SDL_TRUE; } bool I_CreateVulkanSurface(VkInstance instance, VkSurfaceKHR *surface) { - assert(Priv::vulkanEnabled); assert(Priv::window != nullptr); return SDL_Vulkan_CreateSurface(Priv::window, instance, surface) == SDL_TRUE; } @@ -249,16 +205,11 @@ SDLVideo::SDLVideo () } #ifdef HAVE_VULKAN - Priv::vulkanEnabled = V_GetBackend() == 1; + Priv::CreateWindow(SDL_WINDOW_VULKAN | SDL_WINDOW_HIDDEN | (vid_fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0)); - if (Priv::vulkanEnabled) + if (Priv::window == nullptr) { - Priv::CreateWindow(SDL_WINDOW_VULKAN | SDL_WINDOW_HIDDEN | (vid_fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0)); - - if (Priv::window == nullptr) - { - Priv::vulkanEnabled = false; - } + Priv::vulkanEnabled = false; } #endif } @@ -276,52 +227,27 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer () // first try Vulkan, if that fails OpenGL #ifdef HAVE_VULKAN - if (Priv::vulkanEnabled) - { - try - { - unsigned int count = 64; - const char* names[64]; - if (!I_GetVulkanPlatformExtensions(&count, names)) - VulkanError("I_GetVulkanPlatformExtensions failed"); - VulkanInstanceBuilder builder; - builder.DebugLayer(vk_debug); - for (unsigned int i = 0; i < count; i++) - builder.RequireExtension(names[i]); - auto instance = builder.Create(); + unsigned int count = 64; + const char* names[64]; + if (!I_GetVulkanPlatformExtensions(&count, names)) + VulkanError("I_GetVulkanPlatformExtensions failed"); - VkSurfaceKHR surfacehandle = nullptr; - if (!I_CreateVulkanSurface(instance->Instance, &surfacehandle)) - VulkanError("I_CreateVulkanSurface failed"); + VulkanInstanceBuilder builder; + builder.DebugLayer(vk_debug); + for (unsigned int i = 0; i < count; i++) + builder.RequireExtension(names[i]); + auto instance = builder.Create(); - surface = std::make_shared(instance, surfacehandle); + VkSurfaceKHR surfacehandle = nullptr; + if (!I_CreateVulkanSurface(instance->Instance, &surfacehandle)) + VulkanError("I_CreateVulkanSurface failed"); - fb = new VulkanRenderDevice(nullptr, vid_fullscreen, surface); - } - catch (CVulkanError const &error) - { - if (Priv::window != nullptr) - { - Priv::DestroyWindow(); - } + surface = std::make_shared(instance, surfacehandle); - Printf(TEXTCOLOR_RED "Initialization of Vulkan failed: %s\n", error.what()); - Priv::vulkanEnabled = false; - } - } + fb = new VulkanRenderDevice(nullptr, vid_fullscreen, surface); #endif - if (fb == nullptr) - { -#ifdef HAVE_GLES2 - if (V_GetBackend() == 2) - fb = new OpenGLESRenderer::OpenGLFrameBuffer(0, vid_fullscreen); - else -#endif - fb = new OpenGLRenderer::OpenGLFrameBuffer(0, vid_fullscreen); - } - return fb; } @@ -350,7 +276,6 @@ int SystemBaseFrameBuffer::GetClientWidth() #ifdef HAVE_VULKAN - assert(Priv::vulkanEnabled); SDL_Vulkan_GetDrawableSize(Priv::window, &width, nullptr); #endif @@ -362,7 +287,6 @@ int SystemBaseFrameBuffer::GetClientHeight() int height = 0; #ifdef HAVE_VULKAN - assert(Priv::vulkanEnabled); SDL_Vulkan_GetDrawableSize(Priv::window, nullptr, &height); #endif @@ -419,116 +343,6 @@ void SystemBaseFrameBuffer::SetWindowSize(int w, int h) } -SystemGLFrameBuffer::SystemGLFrameBuffer(void *hMonitor, bool fullscreen) -: SystemBaseFrameBuffer(hMonitor, fullscreen) -{ - // NOTE: Core profiles were added with GL 3.2, so there's no sense trying - // to set core 3.1 or 3.0. We could try a forward-compatible context - // instead, but that would be too restrictive (w.r.t. shaders). - static const int glvers[][2] = { - { 4, 6 }, { 4, 5 }, { 4, 4 }, { 4, 3 }, { 4, 2 }, { 4, 1 }, { 4, 0 }, - { 3, 3 }, { 3, 2 }, { 2, 0 }, - { 0, 0 }, - }; - int glveridx = 0; - int i; - - const char *version = Args->CheckValue("-glversion"); - if (version != NULL) - { - double gl_version = strtod(version, NULL) + 0.01; - int vermaj = (int)gl_version; - int vermin = (int)(gl_version*10.0) % 10; - - while (glvers[glveridx][0] > vermaj || (glvers[glveridx][0] == vermaj && - glvers[glveridx][1] > vermin)) - { - glveridx++; - if (glvers[glveridx][0] == 0) - { - glveridx = 0; - break; - } - } - } - - for ( ; glvers[glveridx][0] > 0; ++glveridx) - { - Priv::SetupPixelFormat(0, glvers[glveridx]); - Priv::CreateWindow(SDL_WINDOW_OPENGL | (fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0)); - - if (Priv::window == nullptr) - { - continue; - } - - GLContext = SDL_GL_CreateContext(Priv::window); - if (GLContext == nullptr) - { - Priv::DestroyWindow(); - } - else - { - break; - } - } - if (Priv::window == nullptr) - { - I_FatalError("Could not create OpenGL window:\n%s\n",SDL_GetError()); - } -} - -SystemGLFrameBuffer::~SystemGLFrameBuffer () -{ - if (Priv::window) - { - if (GLContext) - { - SDL_GL_DeleteContext(GLContext); - } - - Priv::DestroyWindow(); - } -} - -int SystemGLFrameBuffer::GetClientWidth() -{ - int width = 0; - SDL_GL_GetDrawableSize(Priv::window, &width, nullptr); - return width; -} - -int SystemGLFrameBuffer::GetClientHeight() -{ - int height = 0; - SDL_GL_GetDrawableSize(Priv::window, nullptr, &height); - return height; -} - -void SystemGLFrameBuffer::SetVSync( bool vsync ) -{ -#if defined (__APPLE__) - const GLint value = vsync ? 1 : 0; - CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval, &value ); -#else - if (vsync) - { - if (SDL_GL_SetSwapInterval(-1) == -1) - SDL_GL_SetSwapInterval(1); - } - else - { - SDL_GL_SetSwapInterval(0); - } -#endif -} - -void SystemGLFrameBuffer::SwapBuffers() -{ - SDL_GL_SwapWindow(Priv::window); -} - - void ProcessSDLWindowEvent(const SDL_WindowEvent &event) { switch (event.event) diff --git a/src/common/platform/posix/unix/gtk_dialogs.cpp b/src/common/platform/posix/unix/gtk_dialogs.cpp index 28da8c11b..2c9ad412a 100644 --- a/src/common/platform/posix/unix/gtk_dialogs.cpp +++ b/src/common/platform/posix/unix/gtk_dialogs.cpp @@ -64,7 +64,6 @@ typedef enum #include "printf.h" EXTERN_CVAR (Bool, queryiwad); -EXTERN_CVAR (Int, vid_preferbackend); EXTERN_CVAR (Bool, vid_fullscreen); namespace Gtk { @@ -502,9 +501,7 @@ static int PickIWad (WadStuff *wads, int numwads, bool showwin, int defaultiwad, ZUIVBox vboxVideo; ZUILabel videoSettings("Video settings"); - ZUIRadioButton opengl("OpenGL"); - ZUIRadioButton vulkan(&opengl, "Vulkan"); - ZUIRadioButton openglES(&opengl, "OpenGL ES"); + ZUIRadioButton vulkan("Vulkan"); ZUICheckButton fullscreen("Full screen"); ZUIVBox vboxMisc; @@ -532,9 +529,7 @@ static int PickIWad (WadStuff *wads, int numwads, bool showwin, int defaultiwad, hboxOptions.PackStart(&vboxMisc, true, false, 15); hboxOptions.PackStart(&vboxExtra, false, false, 15); vboxVideo.PackStart(&videoSettings, false, false, 0); - vboxVideo.PackStart(&opengl, false, false, 0); vboxVideo.PackStart(&vulkan, false, false, 0); - vboxVideo.PackStart(&openglES, false, false, 0); vboxVideo.PackStart(&fullscreen, false, false, 15); vboxMisc.PackStart(&noautoload, false, false, 0); vboxMisc.PackStart(&dontAskAgain, false, false, 0); @@ -548,13 +543,7 @@ static int PickIWad (WadStuff *wads, int numwads, bool showwin, int defaultiwad, dontAskAgain.SetChecked(!showwin); - switch (vid_preferbackend) - { - case 0: opengl.SetChecked(true); break; - case 1: vulkan.SetChecked(true); break; - case 2: openglES.SetChecked(true); break; - default: break; - } + vulkan.SetChecked(true); if (vid_fullscreen) fullscreen.SetChecked(true); @@ -580,10 +569,6 @@ static int PickIWad (WadStuff *wads, int numwads, bool showwin, int defaultiwad, // Set state of queryiwad based on the checkbox. queryiwad = !dontAskAgain.GetChecked(); - if (opengl.GetChecked()) vid_preferbackend = 0; - if (vulkan.GetChecked()) vid_preferbackend = 1; - if (openglES.GetChecked()) vid_preferbackend = 2; - vid_fullscreen = fullscreen.GetChecked(); autoloadflags = 0; diff --git a/src/common/platform/win32/base_sysfb.cpp b/src/common/platform/win32/base_sysfb.cpp index 4d0219316..dbea719cf 100644 --- a/src/common/platform/win32/base_sysfb.cpp +++ b/src/common/platform/win32/base_sysfb.cpp @@ -37,7 +37,6 @@ #include #include "wglext.h" -#include "gl_sysfb.h" #include "hardware.h" #include "version.h" diff --git a/src/common/platform/win32/gl_sysfb.cpp b/src/common/platform/win32/gl_sysfb.cpp deleted file mode 100644 index 61073e968..000000000 --- a/src/common/platform/win32/gl_sysfb.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* -** -** -**--------------------------------------------------------------------------- -** Copyright 2003-2005 Tim Stump -** Copyright 2005-2016 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#define WIN32_LEAN_AND_MEAN -#include -#include -#include "wglext.h" - -#include "gl_sysfb.h" -#include "hardware.h" - -#include "version.h" -#include "c_console.h" -#include "v_video.h" -#include "i_input.h" -#include "i_system.h" -#include "v_text.h" -#include "m_argv.h" -#include "engineerrors.h" -#include "win32glvideo.h" -#include "i_mainwindow.h" - -extern "C" PROC zd_wglGetProcAddress(LPCSTR name); - -PFNWGLSWAPINTERVALEXTPROC myWglSwapIntervalExtProc; - -//========================================================================== -// -// Windows framebuffer -// -//========================================================================== - - -//========================================================================== -// -// -// -//========================================================================== - -SystemGLFrameBuffer::SystemGLFrameBuffer(void *hMonitor, bool fullscreen) : SystemBaseFrameBuffer(hMonitor, fullscreen) -{ - if (!static_cast(Video)->InitHardware(mainwindow.GetHandle(), 0)) - { - I_FatalError("Unable to initialize OpenGL"); - return; - } - - HDC hDC = GetDC(mainwindow.GetHandle()); - const char *wglext = nullptr; - - myWglSwapIntervalExtProc = (PFNWGLSWAPINTERVALEXTPROC)zd_wglGetProcAddress("wglSwapIntervalEXT"); - auto myWglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)zd_wglGetProcAddress("wglGetExtensionsStringARB"); - if (myWglGetExtensionsStringARB) - { - wglext = myWglGetExtensionsStringARB(hDC); - } - else - { - auto myWglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)zd_wglGetProcAddress("wglGetExtensionsStringEXT"); - if (myWglGetExtensionsStringEXT) - { - wglext = myWglGetExtensionsStringEXT(); - } - } - SwapInterval = 1; - if (wglext != nullptr) - { - if (strstr(wglext, "WGL_EXT_swap_control_tear")) - { - SwapInterval = -1; - } - } - ReleaseDC(mainwindow.GetHandle(), hDC); -} - -//========================================================================== -// -// -// -//========================================================================== -EXTERN_CVAR(Bool, vid_vsync); -CUSTOM_CVAR(Bool, gl_control_tear, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) -{ - vid_vsync->Callback(); -} - -void SystemGLFrameBuffer::SetVSync (bool vsync) -{ - if (myWglSwapIntervalExtProc != NULL) myWglSwapIntervalExtProc(vsync ? (gl_control_tear? SwapInterval : 1) : 0); -} - -void SystemGLFrameBuffer::SwapBuffers() -{ - ::SwapBuffers(static_cast(Video)->m_hDC); -} - diff --git a/src/common/platform/win32/gl_sysfb.h b/src/common/platform/win32/gl_sysfb.h deleted file mode 100644 index 52afbf040..000000000 --- a/src/common/platform/win32/gl_sysfb.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "base_sysfb.h" - -class SystemGLFrameBuffer : public SystemBaseFrameBuffer -{ - typedef SystemBaseFrameBuffer Super; - -public: - SystemGLFrameBuffer() {} - // Actually, hMonitor is a HMONITOR, but it's passed as a void * as there - // look to be some cross-platform bits in the way. - SystemGLFrameBuffer(void *hMonitor, bool fullscreen); - - void SetVSync (bool vsync); - void SwapBuffers(); - -protected: - int SwapInterval; -}; diff --git a/src/common/platform/win32/hardware.cpp b/src/common/platform/win32/hardware.cpp index 1933bb521..d1b41e51c 100644 --- a/src/common/platform/win32/hardware.cpp +++ b/src/common/platform/win32/hardware.cpp @@ -43,7 +43,6 @@ #include "m_argv.h" #include "version.h" #include "printf.h" -#include "win32glvideo.h" #ifdef HAVE_VULKAN #include "win32vulkanvideo.h" #endif @@ -53,41 +52,10 @@ IVideo *Video; -// do not include GL headers here, only declare the necessary functions. -IVideo *gl_CreateVideo(); - void I_RestartRenderer(); int currentcanvas = -1; -int currentgpuswitch = -1; bool changerenderer; -// Optimus/Hybrid switcher -CUSTOM_CVAR(Int, vid_gpuswitch, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) -{ - if (self != currentgpuswitch) - { - switch (self) - { - case 0: - Printf("Selecting default GPU...\n"); - break; - case 1: - Printf("Selecting high-performance dedicated GPU...\n"); - break; - case 2: - Printf("Selecting power-saving integrated GPU...\n"); - break; - default: - Printf("Unknown option (%d) - falling back to 'default'\n", *vid_gpuswitch); - self = 0; - break; - } - Printf("You must restart " GAMENAME " for this change to take effect.\n"); - } -} - - - void I_ShutdownGraphics () { if (screen) @@ -102,13 +70,6 @@ void I_ShutdownGraphics () void I_InitGraphics () { - // todo: implement ATI version of this. this only works for nvidia notebooks, for now. - currentgpuswitch = vid_gpuswitch; - if (currentgpuswitch == 1) - _putenv("SHIM_MCCOMPAT=0x800000001"); // discrete - else if (currentgpuswitch == 2) - _putenv("SHIM_MCCOMPAT=0x800000000"); // integrated - // If the focus window is destroyed, it doesn't go back to the active window. // (e.g. because the net pane was up, and a button on it had focus) if (GetFocus() == NULL && GetActiveWindow() == mainwindow.GetHandle()) @@ -126,24 +87,8 @@ void I_InitGraphics () } #ifdef HAVE_VULKAN - if (V_GetBackend() == 1) - { - // first try Vulkan, if that fails OpenGL - try - { - Video = new Win32VulkanVideo(); - } - catch (CVulkanError &error) - { - Printf(TEXTCOLOR_RED "Initialization of Vulkan failed: %s\n", error.what()); - Video = new Win32GLVideo(); - } - } - else + Video = new Win32VulkanVideo(); #endif - { - Video = new Win32GLVideo(); - } // we somehow STILL don't have a display!! if (Video == NULL) diff --git a/src/common/platform/win32/i_system.cpp b/src/common/platform/win32/i_system.cpp index bd1d0dbbe..b557d4be9 100644 --- a/src/common/platform/win32/i_system.cpp +++ b/src/common/platform/win32/i_system.cpp @@ -111,7 +111,6 @@ static HCURSOR CreateBitmapCursor(int xhot, int yhot, HBITMAP and_mask, HBITMAP EXTERN_CVAR (Bool, queryiwad); // Used on welcome/IWAD screen. -EXTERN_CVAR (Int, vid_preferbackend) extern HANDLE StdOut; extern bool FancyStdOut; @@ -381,22 +380,7 @@ BOOL CALLBACK IWADBoxCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa // Check the current video settings. SendDlgItemMessage( hDlg, IDC_WELCOME_FULLSCREEN, BM_SETCHECK, vid_fullscreen ? BST_CHECKED : BST_UNCHECKED, 0 ); - switch (vid_preferbackend) - { - case 1: - SendDlgItemMessage( hDlg, IDC_WELCOME_VULKAN2, BM_SETCHECK, BST_CHECKED, 0 ); - break; -#ifdef HAVE_GLES2 - case 2: - case 3: - SendDlgItemMessage( hDlg, IDC_WELCOME_VULKAN4, BM_SETCHECK, BST_CHECKED, 0 ); - break; -#endif - default: - SendDlgItemMessage( hDlg, IDC_WELCOME_VULKAN1, BM_SETCHECK, BST_CHECKED, 0 ); - break; - } - + SendDlgItemMessage( hDlg, IDC_WELCOME_VULKAN2, BM_SETCHECK, BST_CHECKED, 0 ); // [SP] This is our's SendDlgItemMessage( hDlg, IDC_WELCOME_NOAUTOLOAD, BM_SETCHECK, (flags & 1) ? BST_CHECKED : BST_UNCHECKED, 0); @@ -446,15 +430,6 @@ BOOL CALLBACK IWADBoxCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa SetQueryIWad(hDlg); // [SP] Upstreamed from Zandronum vid_fullscreen = SendDlgItemMessage( hDlg, IDC_WELCOME_FULLSCREEN, BM_GETCHECK, 0, 0 ) == BST_CHECKED; -#ifdef HAVE_GLES2 - if (SendDlgItemMessage(hDlg, IDC_WELCOME_VULKAN4, BM_GETCHECK, 0, 0) == BST_CHECKED) - vid_preferbackend = 2; - else -#endif - if (SendDlgItemMessage(hDlg, IDC_WELCOME_VULKAN2, BM_GETCHECK, 0, 0) == BST_CHECKED) - vid_preferbackend = 1; - else if (SendDlgItemMessage(hDlg, IDC_WELCOME_VULKAN1, BM_GETCHECK, 0, 0) == BST_CHECKED) - vid_preferbackend = 0; // [SP] This is our's. flags = 0; diff --git a/src/common/rendering/gl/gl_buffers.cpp b/src/common/rendering/gl/gl_buffers.cpp deleted file mode 100644 index a576b6431..000000000 --- a/src/common/rendering/gl/gl_buffers.cpp +++ /dev/null @@ -1,277 +0,0 @@ -/* -** gl_buffers.cpp -** Low level vertex buffer class -** -**--------------------------------------------------------------------------- -** Copyright 2018-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -**/ - -#include -#include "gl_load.h" -#include "gl_buffers.h" -#include "gl_renderstate.h" -#include "v_video.h" -#include "flatvertices.h" - -namespace OpenGLRenderer -{ - -//========================================================================== -// -// basic buffer implementation -// -//========================================================================== - -static inline void InvalidateBufferState() -{ - gl_RenderState.ResetVertexBuffer(); // force rebinding of buffers on next Apply call. -} - -GLBuffer::GLBuffer(int usetype) - : mUseType(usetype) -{ - glGenBuffers(1, &mBufferId); -} - -GLBuffer::~GLBuffer() -{ - if (mBufferId != 0) - { - glBindBuffer(mUseType, mBufferId); - glUnmapBuffer(mUseType); - glBindBuffer(mUseType, 0); - glDeleteBuffers(1, &mBufferId); - } -} - -void GLBuffer::Bind() -{ - glBindBuffer(mUseType, mBufferId); -} - - -void GLBuffer::SetData(size_t size, const void *data, BufferUsageType usage) -{ - Bind(); - if (usage == BufferUsageType::Static) - { - glBufferData(mUseType, size, data, GL_STATIC_DRAW); - } - else if (usage == BufferUsageType::Stream) - { - glBufferData(mUseType, size, data, GL_STREAM_DRAW); - } - else if (usage == BufferUsageType::Persistent) - { - mPersistent = screen->BuffersArePersistent(); - if (mPersistent) - { - glBufferStorage(mUseType, size, nullptr, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT); - map = glMapBufferRange(mUseType, 0, size, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT); - } - else - { - glBufferData(mUseType, size, nullptr, GL_STREAM_DRAW); - map = nullptr; - } - nomap = false; - } - else if (usage == BufferUsageType::Mappable) - { - glBufferData(mUseType, size, nullptr, GL_STATIC_DRAW); - map = nullptr; - } - buffersize = size; - InvalidateBufferState(); -} - -void GLBuffer::SetSubData(size_t offset, size_t size, const void *data) -{ - Bind(); - glBufferSubData(mUseType, offset, size, data); -} - -void GLBuffer::Map() -{ - assert(nomap == false); // do not allow mapping of static buffers. Vulkan cannot do that so it should be blocked in OpenGL, too. - if (!mPersistent && !nomap) - { - Bind(); - map = (FFlatVertex*)glMapBufferRange(mUseType, 0, buffersize, GL_MAP_WRITE_BIT|GL_MAP_UNSYNCHRONIZED_BIT); - InvalidateBufferState(); - } -} - -void GLBuffer::Unmap() -{ - assert(nomap == false); - if (!mPersistent && map != nullptr) - { - Bind(); - glUnmapBuffer(mUseType); - InvalidateBufferState(); - map = nullptr; - } -} - -void *GLBuffer::Lock(unsigned int size) -{ - // This initializes this buffer as a static object with no data. - SetData(size, nullptr, BufferUsageType::Mappable); - return glMapBufferRange(mUseType, 0, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_UNSYNCHRONIZED_BIT); -} - -void GLBuffer::Unlock() -{ - Bind(); - glUnmapBuffer(mUseType); - InvalidateBufferState(); -} - -void GLBuffer::Resize(size_t newsize) -{ - assert(!nomap); // only mappable buffers can be resized. - if (newsize > buffersize && !nomap) - { - // reallocate the buffer with twice the size - unsigned int oldbuffer = mBufferId; - - // first unmap the old buffer - Bind(); - glUnmapBuffer(mUseType); - - glGenBuffers(1, &mBufferId); - SetData(newsize, nullptr, BufferUsageType::Persistent); - glBindBuffer(GL_COPY_READ_BUFFER, oldbuffer); - - // copy contents and delete the old buffer. - glCopyBufferSubData(GL_COPY_READ_BUFFER, mUseType, 0, 0, buffersize); - glBindBuffer(GL_COPY_READ_BUFFER, 0); - glDeleteBuffers(1, &oldbuffer); - buffersize = newsize; - InvalidateBufferState(); - } -} - -void GLBuffer::GPUDropSync() -{ - if (mGLSync != NULL) - { - glDeleteSync(mGLSync); - } - - mGLSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); -} - -void GLBuffer::GPUWaitSync() -{ - GLenum status = glClientWaitSync(mGLSync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000 * 1000 * 50); // Wait for a max of 50ms... - - if (status != GL_ALREADY_SIGNALED && status != GL_CONDITION_SATISFIED) - { - //Printf("Error on glClientWaitSync: %d\n", status); - } - - glDeleteSync(mGLSync); - - mGLSync = NULL; -} - -//=========================================================================== -// -// Vertex buffer implementation -// -//=========================================================================== - -void GLVertexBuffer::SetFormat(int numBindingPoints, int numAttributes, size_t stride, const FVertexBufferAttribute *attrs) -{ - static int VFmtToGLFmt[] = { GL_FLOAT, GL_FLOAT, GL_FLOAT, GL_FLOAT, GL_UNSIGNED_BYTE, GL_INT_2_10_10_10_REV, GL_UNSIGNED_BYTE }; - static uint8_t VFmtToSize[] = { 4, 3, 2, 1, 4, 4, 4 }; - static bool VFmtToNormalize[] = { false, false, false, false, true, true, false }; - static bool VFmtToIntegerType[] = { false, false, false, false, false, false, true }; - - mStride = stride; - mNumBindingPoints = numBindingPoints; - - for(int i = 0; i < numAttributes; i++) - { - if (attrs[i].location >= 0 && attrs[i].location < VATTR_MAX) - { - auto & attrinf = mAttributeInfo[attrs[i].location]; - attrinf.format = VFmtToGLFmt[attrs[i].format]; - attrinf.size = VFmtToSize[attrs[i].format]; - attrinf.offset = attrs[i].offset; - attrinf.bindingpoint = attrs[i].binding; - attrinf.normalize = VFmtToNormalize[attrs[i].format]; - attrinf.integerType = VFmtToIntegerType[attrs[i].format]; - } - } -} - -void GLVertexBuffer::Bind(int *offsets) -{ - int i = 0; - - // This is what gets called from RenderState.Apply. It shouldn't be called anywhere else if the render state is in use - GLBuffer::Bind(); - for(auto &attrinf : mAttributeInfo) - { - if (attrinf.size == 0) - { - glDisableVertexAttribArray(i); - } - else - { - glEnableVertexAttribArray(i); - size_t ofs = offsets == nullptr ? attrinf.offset : attrinf.offset + mStride * offsets[attrinf.bindingpoint]; - if (!attrinf.integerType) - glVertexAttribPointer(i, attrinf.size, attrinf.format, attrinf.normalize, (GLsizei)mStride, (void*)(intptr_t)ofs); - else - glVertexAttribIPointer(i, attrinf.size, attrinf.format, (GLsizei)mStride, (void*)(intptr_t)ofs); - } - i++; - } -} - -void GLDataBuffer::BindRange(FRenderState *state, size_t start, size_t length) -{ - glBindBufferRange(mUseType, mBindingPoint, mBufferId, start, length); -} - -void GLDataBuffer::BindBase() -{ - glBindBufferBase(mUseType, mBindingPoint, mBufferId); -} - - -GLVertexBuffer::GLVertexBuffer() : GLBuffer(GL_ARRAY_BUFFER) {} -GLIndexBuffer::GLIndexBuffer() : GLBuffer(GL_ELEMENT_ARRAY_BUFFER) {} -GLDataBuffer::GLDataBuffer(int bindingpoint, bool is_ssbo) : GLBuffer(is_ssbo ? GL_SHADER_STORAGE_BUFFER : GL_UNIFORM_BUFFER), mBindingPoint(bindingpoint) {} - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_buffers.h b/src/common/rendering/gl/gl_buffers.h deleted file mode 100644 index 9bca819a1..000000000 --- a/src/common/rendering/gl/gl_buffers.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "buffers.h" -#include "gl_load.h" - -#ifdef _MSC_VER -// silence bogus warning C4250: 'GLVertexBuffer': inherits 'GLBuffer::GLBuffer::SetData' via dominance -// According to internet infos, the warning is erroneously emitted in this case. -#pragma warning(disable:4250) -#endif - -namespace OpenGLRenderer -{ - -class GLBuffer : virtual public IBuffer -{ -protected: - const int mUseType; - unsigned int mBufferId; - int mAllocationSize = 0; - bool mPersistent = false; - bool nomap = true; - GLsync mGLSync = 0; - - GLBuffer(int usetype); - ~GLBuffer(); - void SetData(size_t size, const void *data, BufferUsageType usage) override; - void SetSubData(size_t offset, size_t size, const void *data) override; - void Map() override; - void Unmap() override; - void Resize(size_t newsize) override; - void *Lock(unsigned int size) override; - void Unlock() override; - - void GPUDropSync(); - void GPUWaitSync(); -public: - void Bind(); -}; - - -class GLVertexBuffer : public IVertexBuffer, public GLBuffer -{ - // If this could use the modern (since GL 4.3) binding system, things would be simpler... :( - struct GLVertexBufferAttribute - { - int bindingpoint; - int format; - bool normalize; - bool integerType; - int size; - int offset; - }; - - int mNumBindingPoints; - GLVertexBufferAttribute mAttributeInfo[VATTR_MAX] = {}; // Thanks to OpenGL's state system this needs to contain info about every attribute that may ever be in use throughout the entire renderer. - size_t mStride = 0; - -public: - GLVertexBuffer(); - void SetFormat(int numBindingPoints, int numAttributes, size_t stride, const FVertexBufferAttribute *attrs) override; - void Bind(int *offsets); -}; - -class GLIndexBuffer : public IIndexBuffer, public GLBuffer -{ -public: - GLIndexBuffer(); -}; - -class GLDataBuffer : public IDataBuffer, public GLBuffer -{ - int mBindingPoint; -public: - GLDataBuffer(int bindingpoint, bool is_ssbo); - void BindRange(FRenderState* state, size_t start, size_t length); - void BindBase(); -}; - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_debug.cpp b/src/common/rendering/gl/gl_debug.cpp deleted file mode 100644 index 38625e73d..000000000 --- a/src/common/rendering/gl/gl_debug.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/* -** OpenGL debugging support functions -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "gl_system.h" -#include "gl_debug.h" -#include "stats.h" -#include "printf.h" -#include -#include -#include - -CUSTOM_CVAR(Int, gl_debug_level, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) -{ - if (!OpenGLRenderer::FGLDebug::HasDebugApi()) - { - Printf("No OpenGL debug support detected.\n"); - } -} - -CVAR(Bool, gl_debug_breakpoint, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); - -extern bool gpuStatActive; -extern bool keepGpuStatActive; -extern FString gpuStatOutput; - -namespace OpenGLRenderer -{ - -namespace -{ - std::vector> timeElapsedQueries; -} - -//----------------------------------------------------------------------------- -// -// Updates OpenGL debugging state -// -//----------------------------------------------------------------------------- - -void FGLDebug::Update() -{ - gpuStatOutput = ""; - for (auto &query : timeElapsedQueries) - { - GLuint timeElapsed = 0; - glGetQueryObjectuiv(query.second, GL_QUERY_RESULT, &timeElapsed); - glDeleteQueries(1, &query.second); - - FString out; - out.Format("%s=%04.2f ms\n", query.first.GetChars(), timeElapsed / 1000000.0f); - gpuStatOutput += out; - } - timeElapsedQueries.clear(); - - gpuStatActive = keepGpuStatActive; - keepGpuStatActive = false; - - if (!HasDebugApi()) - return; - - SetupBreakpointMode(); - UpdateLoggingLevel(); - OutputMessageLog(); -} - -//----------------------------------------------------------------------------- -// -// Label objects so they are referenced by name in debug messages and in -// OpenGL debuggers (renderdoc) -// -//----------------------------------------------------------------------------- - -void FGLDebug::LabelObject(GLenum type, GLuint handle, const char *name) -{ - if (HasDebugApi() && gl_debug_level != 0) - { - glObjectLabel(type, handle, -1, name); - } -} - -void FGLDebug::LabelObjectPtr(void *ptr, const char *name) -{ - if (HasDebugApi() && gl_debug_level != 0) - { - glObjectPtrLabel(ptr, -1, name); - } -} - -//----------------------------------------------------------------------------- -// -// Marks which render pass/group is executing commands so that debuggers can -// display this information -// -//----------------------------------------------------------------------------- - -void FGLDebug::PushGroup(const FString &name) -{ - if (HasDebugApi() && gl_debug_level != 0) - { - glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, (GLsizei)name.Len(), name.GetChars()); - } - - if (gpuStatActive) - { - GLuint queryHandle = 0; - glGenQueries(1, &queryHandle); - glBeginQuery(GL_TIME_ELAPSED, queryHandle); - timeElapsedQueries.push_back({ name, queryHandle }); - } -} - -void FGLDebug::PopGroup() -{ - if (HasDebugApi() && gl_debug_level != 0) - { - glPopDebugGroup(); - } - - if (gpuStatActive) - { - glEndQuery(GL_TIME_ELAPSED); - } -} - -//----------------------------------------------------------------------------- -// -// Turns on synchronous debugging on and off based on gl_debug_breakpoint -// -// Allows getting the debugger to break exactly at the OpenGL function emitting -// a message. -// -//----------------------------------------------------------------------------- - -void FGLDebug::SetupBreakpointMode() -{ - if (mBreakpointMode != gl_debug_breakpoint) - { - if (gl_debug_breakpoint) - { - glDebugMessageCallback(&FGLDebug::DebugCallback, this); - glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); - } - else - { - glDebugMessageCallback(nullptr, nullptr); - glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS); - } - mBreakpointMode = gl_debug_breakpoint; - } -} - -//----------------------------------------------------------------------------- -// -// Tells OpenGL which debug messages we are interested in -// -//----------------------------------------------------------------------------- - -void FGLDebug::UpdateLoggingLevel() -{ - const GLenum level = gl_debug_level; - if (level != mCurrentLevel) - { - glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_HIGH, 0, nullptr, level > 0); - glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_MEDIUM, 0, nullptr, level > 1); - glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW, 0, nullptr, level > 2); - glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_NOTIFICATION, 0, nullptr, level > 3); - mCurrentLevel = level; - } -} - -//----------------------------------------------------------------------------- -// -// The log may already contain entries for a debug level we are no longer -// interested in.. -// -//----------------------------------------------------------------------------- - -bool FGLDebug::IsFilteredByDebugLevel(GLenum severity) -{ - int severityLevel = 0; - switch (severity) - { - case GL_DEBUG_SEVERITY_HIGH: severityLevel = 1; break; - case GL_DEBUG_SEVERITY_MEDIUM: severityLevel = 2; break; - case GL_DEBUG_SEVERITY_LOW: severityLevel = 3; break; - case GL_DEBUG_SEVERITY_NOTIFICATION: severityLevel = 4; break; - } - return severityLevel > (int)gl_debug_level; -} - -//----------------------------------------------------------------------------- -// -// Prints all logged messages to the console -// -//----------------------------------------------------------------------------- - -void FGLDebug::OutputMessageLog() -{ - if (mCurrentLevel <= 0) - return; - - GLint maxDebugMessageLength = 0; - glGetIntegerv(GL_MAX_DEBUG_MESSAGE_LENGTH, &maxDebugMessageLength); - - const int maxMessages = 50; - const int messageLogSize = maxMessages * maxDebugMessageLength; - - TArray sources, types, severities; - TArray ids; - TArray lengths; - TArray messageLog; - - sources.Resize(maxMessages); - types.Resize(maxMessages); - severities.Resize(maxMessages); - ids.Resize(maxMessages); - lengths.Resize(maxMessages); - messageLog.Resize(messageLogSize); - - while (true) - { - GLuint numMessages = glGetDebugMessageLog(maxMessages, messageLogSize, &sources[0], &types[0], &ids[0], &severities[0], &lengths[0], &messageLog[0]); - if (numMessages <= 0) break; - - GLsizei offset = 0; - for (GLuint i = 0; i < numMessages; i++) - { - if (!IsFilteredByDebugLevel(severities[i])) - PrintMessage(sources[i], types[i], ids[i], severities[i], lengths[i], &messageLog[offset]); - offset += lengths[i]; - } - } -} - -//----------------------------------------------------------------------------- -// -// Print a single message to the console -// -//----------------------------------------------------------------------------- - -void FGLDebug::PrintMessage(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message) -{ - if (type == GL_DEBUG_TYPE_PUSH_GROUP || type == GL_DEBUG_TYPE_POP_GROUP) - return; - - const int maxMessages = 50; - - static int messagesPrinted = 0; - if (messagesPrinted > maxMessages) - return; - - FString msg(message, length); - - static std::set seenMessages; - bool alreadySeen = !seenMessages.insert(msg.GetChars()).second; - if (alreadySeen) - return; - - messagesPrinted++; - if (messagesPrinted == maxMessages) - { - Printf("Max OpenGL debug messages reached. Suppressing further output.\n"); - } - else if (messagesPrinted < maxMessages) - { - FString sourceStr = SourceToString(source); - FString typeStr = TypeToString(type); - FString severityStr = SeverityToString(severity); - if (type != GL_DEBUG_TYPE_OTHER) - Printf("[%s] %s, %s: %s\n", sourceStr.GetChars(), severityStr.GetChars(), typeStr.GetChars(), msg.GetChars()); - else - Printf("[%s] %s: %s\n", sourceStr.GetChars(), severityStr.GetChars(), msg.GetChars()); - } -} - -//----------------------------------------------------------------------------- -// -// OpenGL callback function used when synchronous debugging is enabled -// -//----------------------------------------------------------------------------- - -void FGLDebug::DebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) -{ - if (IsFilteredByDebugLevel(severity)) - return; - - PrintMessage(source, type, id, severity, length, message); - assert(severity == GL_DEBUG_SEVERITY_NOTIFICATION); -} - -//----------------------------------------------------------------------------- -// -// Enum to string helpers -// -//----------------------------------------------------------------------------- - -FString FGLDebug::SourceToString(GLenum source) -{ - FString s; - switch (source) - { - case GL_DEBUG_SOURCE_API: s = "api"; break; - case GL_DEBUG_SOURCE_WINDOW_SYSTEM: s = "window system"; break; - case GL_DEBUG_SOURCE_SHADER_COMPILER: s = "shader compiler"; break; - case GL_DEBUG_SOURCE_THIRD_PARTY: s = "third party"; break; - case GL_DEBUG_SOURCE_APPLICATION: s = "application"; break; - case GL_DEBUG_SOURCE_OTHER: s = "other"; break; - default: s.Format("%d", (int)source); - } - return s; -} - -FString FGLDebug::TypeToString(GLenum type) -{ - FString s; - switch (type) - { - case GL_DEBUG_TYPE_ERROR: s = "error"; break; - case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: s = "deprecated"; break; - case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: s = "undefined"; break; - case GL_DEBUG_TYPE_PORTABILITY: s = "portability"; break; - case GL_DEBUG_TYPE_PERFORMANCE: s = "performance"; break; - case GL_DEBUG_TYPE_MARKER: s = "marker"; break; - case GL_DEBUG_TYPE_PUSH_GROUP: s = "push group"; break; - case GL_DEBUG_TYPE_POP_GROUP: s = "pop group"; break; - case GL_DEBUG_TYPE_OTHER: s = "other"; break; - default: s.Format("%d", (int)type); - } - return s; -} - -FString FGLDebug::SeverityToString(GLenum severity) -{ - FString s; - switch (severity) - { - case GL_DEBUG_SEVERITY_LOW: s = "low severity"; break; - case GL_DEBUG_SEVERITY_MEDIUM: s = "medium severity"; break; - case GL_DEBUG_SEVERITY_HIGH: s = "high severity"; break; - case GL_DEBUG_SEVERITY_NOTIFICATION: s = "notification"; break; - default: s.Format("%d", (int)severity); - } - return s; -} - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_debug.h b/src/common/rendering/gl/gl_debug.h deleted file mode 100644 index e9d64a110..000000000 --- a/src/common/rendering/gl/gl_debug.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef __GL_DEBUG_H -#define __GL_DEBUG_H - -#include -#include "gl_interface.h" -#include "c_cvars.h" -#include "v_video.h" - -namespace OpenGLRenderer -{ - -class FGLDebug -{ -public: - void Update(); - - static void LabelObject(GLenum type, GLuint handle, const char *name); - static void LabelObjectPtr(void *ptr, const char *name); - - static void PushGroup(const FString &name); - static void PopGroup(); - - static bool HasDebugApi() { return (gl.flags & RFL_DEBUG) != 0; } - -private: - void SetupBreakpointMode(); - void UpdateLoggingLevel(); - void OutputMessageLog(); - - static bool IsFilteredByDebugLevel(GLenum severity); - static void PrintMessage(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message); - - static void APIENTRY DebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam); - - static FString SourceToString(GLenum source); - static FString TypeToString(GLenum type); - static FString SeverityToString(GLenum severity); - - GLenum mCurrentLevel = 0; - bool mBreakpointMode = false; -}; - -} -#endif diff --git a/src/common/rendering/gl/gl_framebuffer.cpp b/src/common/rendering/gl/gl_framebuffer.cpp deleted file mode 100644 index 6ea31e5bd..000000000 --- a/src/common/rendering/gl/gl_framebuffer.cpp +++ /dev/null @@ -1,619 +0,0 @@ -/* -** gl_framebuffer.cpp -** Implementation of the non-hardware specific parts of the -** OpenGL frame buffer -** -**--------------------------------------------------------------------------- -** Copyright 2010-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#include "gl_system.h" -#include "v_video.h" -#include "m_png.h" - -#include "i_time.h" - -#include "gl_interface.h" -#include "gl_framebuffer.h" -#include "gl_renderer.h" -#include "gl_renderbuffers.h" -#include "gl_samplers.h" -#include "hw_clock.h" -#include "hw_vrmodes.h" -#include "hw_skydome.h" -#include "hw_viewpointbuffer.h" -#include "hw_lightbuffer.h" -#include "hw_bonebuffer.h" -#include "gl_shaderprogram.h" -#include "gl_debug.h" -#include "r_videoscale.h" -#include "gl_buffers.h" -#include "gl_postprocessstate.h" -#include "v_draw.h" -#include "printf.h" -#include "gl_hwtexture.h" - -#include "flatvertices.h" -#include "hw_cvars.h" - -EXTERN_CVAR (Bool, vid_vsync) -EXTERN_CVAR(Bool, r_drawvoxels) -EXTERN_CVAR(Int, gl_tonemap) -EXTERN_CVAR(Bool, cl_capfps) -EXTERN_CVAR(Int, gl_pipeline_depth); - -void gl_LoadExtensions(); -void gl_PrintStartupLog(); - -extern bool vid_hdr_active; - -namespace OpenGLRenderer -{ - FGLRenderer *GLRenderer; - -//========================================================================== -// -// -// -//========================================================================== - -OpenGLFrameBuffer::OpenGLFrameBuffer(void *hMonitor, bool fullscreen) : - Super(hMonitor, fullscreen) -{ - // SetVSync needs to be at the very top to workaround a bug in Nvidia's OpenGL driver. - // If wglSwapIntervalEXT is called after glBindFramebuffer in a frame the setting is not changed! - Super::SetVSync(vid_vsync); - FHardwareTexture::InitGlobalState(); - - // Make sure all global variables tracking OpenGL context state are reset.. - gl_RenderState.Reset(); - - GLRenderer = nullptr; -} - -OpenGLFrameBuffer::~OpenGLFrameBuffer() -{ - PPResource::ResetAll(); - - if (mVertexData != nullptr) delete mVertexData; - if (mSkyData != nullptr) delete mSkyData; - if (mViewpoints != nullptr) delete mViewpoints; - if (mLights != nullptr) delete mLights; - if (mBones != nullptr) delete mBones; - mShadowMap.Reset(); - - if (GLRenderer) - { - delete GLRenderer; - GLRenderer = nullptr; - } -} - -//========================================================================== -// -// Initializes the GL renderer -// -//========================================================================== - -void OpenGLFrameBuffer::InitializeState() -{ - static bool first=true; - - if (first) - { - if (ogl_LoadFunctions() == ogl_LOAD_FAILED) - { - I_FatalError("Failed to load OpenGL functions."); - } - } - - gl_LoadExtensions(); - - mPipelineNbr = clamp(*gl_pipeline_depth, 1, HW_MAX_PIPELINE_BUFFERS); - mPipelineType = gl_pipeline_depth > 0; - - // Move some state to the framebuffer object for easier access. - hwcaps = gl.flags; - glslversion = gl.glslversion; - uniformblockalignment = gl.uniformblockalignment; - maxuniformblock = gl.maxuniformblock; - vendorstring = gl.vendorstring; - - if (first) - { - first=false; - gl_PrintStartupLog(); - } - - glDepthFunc(GL_LESS); - - glEnable(GL_DITHER); - glDisable(GL_CULL_FACE); - glDisable(GL_POLYGON_OFFSET_FILL); - glEnable(GL_POLYGON_OFFSET_LINE); - glEnable(GL_BLEND); - glEnable(GL_DEPTH_CLAMP); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClearDepth(1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - SetViewportRects(nullptr); - - mVertexData = new FFlatVertexBuffer(GetWidth(), GetHeight(), screen->mPipelineNbr); - mSkyData = new FSkyVertexBuffer; - mViewpoints = new HWViewpointBuffer(screen->mPipelineNbr); - mLights = new FLightBuffer(screen->mPipelineNbr); - mBones = new BoneBuffer(screen->mPipelineNbr); - GLRenderer = new FGLRenderer(this); - GLRenderer->Initialize(GetWidth(), GetHeight()); - static_cast(mLights->GetBuffer())->BindBase(); - static_cast(mBones->GetBuffer())->BindBase(); - - mDebug = std::make_unique(); - mDebug->Update(); -} - -//========================================================================== -// -// Updates the screen -// -//========================================================================== - -void OpenGLFrameBuffer::Update() -{ - twoD.Reset(); - Flush3D.Reset(); - - Flush3D.Clock(); - GLRenderer->Flush(); - Flush3D.Unclock(); - - Swap(); - Super::Update(); -} - -void OpenGLFrameBuffer::CopyScreenToBuffer(int width, int height, uint8_t* scr) -{ - IntRect bounds; - bounds.left = 0; - bounds.top = 0; - bounds.width = width; - bounds.height = height; - GLRenderer->CopyToBackbuffer(&bounds, false); - - // strictly speaking not needed as the glReadPixels should block until the scene is rendered, but this is to safeguard against shitty drivers - glFinish(); - glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, scr); -} - -//=========================================================================== -// -// Camera texture rendering -// -//=========================================================================== - -void OpenGLFrameBuffer::RenderTextureView(FCanvasTexture* tex, std::function renderFunc) -{ - GLRenderer->StartOffscreen(); - GLRenderer->BindToFrameBuffer(tex); - - IntRect bounds; - bounds.left = bounds.top = 0; - bounds.width = FHardwareTexture::GetTexDimension(tex->GetWidth()); - bounds.height = FHardwareTexture::GetTexDimension(tex->GetHeight()); - - renderFunc(bounds); - GLRenderer->EndOffscreen(); - - tex->SetUpdated(true); - static_cast(screen)->camtexcount++; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -const char* OpenGLFrameBuffer::DeviceName() const -{ - return gl.modelstring; -} - -//========================================================================== -// -// Swap the buffers -// -//========================================================================== - -CVAR(Bool, gl_finishbeforeswap, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); - -void OpenGLFrameBuffer::Swap() -{ - bool swapbefore = gl_finishbeforeswap && camtexcount == 0; - Finish.Reset(); - Finish.Clock(); - if (gl_pipeline_depth < 1) - { - if (swapbefore) glFinish(); - FPSLimit(); - SwapBuffers(); - if (!swapbefore) glFinish(); - } - else - { - mVertexData->DropSync(); - - FPSLimit(); - SwapBuffers(); - - mVertexData->NextPipelineBuffer(); - mVertexData->WaitSync(); - - RenderState()->SetVertexBuffer(screen->mVertexData); // Needed for Raze because it does not reset it - } - Finish.Unclock(); - camtexcount = 0; - FHardwareTexture::UnbindAll(); - gl_RenderState.ClearLastMaterial(); - mDebug->Update(); -} - -//========================================================================== -// -// Enable/disable vertical sync -// -//========================================================================== - -void OpenGLFrameBuffer::SetVSync(bool vsync) -{ - // Switch to the default frame buffer because some drivers associate the vsync state with the bound FB object. - GLint oldDrawFramebufferBinding = 0, oldReadFramebufferBinding = 0; - glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &oldDrawFramebufferBinding); - glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &oldReadFramebufferBinding); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - - Super::SetVSync(vsync); - - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, oldDrawFramebufferBinding); - glBindFramebuffer(GL_READ_FRAMEBUFFER, oldReadFramebufferBinding); -} - -//=========================================================================== -// -// -//=========================================================================== - -void OpenGLFrameBuffer::SetTextureFilterMode() -{ - if (GLRenderer != nullptr && GLRenderer->mSamplerManager != nullptr) GLRenderer->mSamplerManager->SetTextureFilterMode(); -} - -IHardwareTexture *OpenGLFrameBuffer::CreateHardwareTexture(int numchannels) -{ - return new FHardwareTexture(numchannels); -} - -void OpenGLFrameBuffer::PrecacheMaterial(FMaterial *mat, int translation) -{ - if (mat->Source()->GetUseType() == ETextureType::SWCanvas) return; - - int numLayers = mat->NumLayers(); - MaterialLayerInfo* layer; - auto base = static_cast(mat->GetLayer(0, translation, &layer)); - - if (base->BindOrCreate(layer->layerTexture, 0, CLAMP_NONE, translation, layer->scaleFlags)) - { - for (int i = 1; i < numLayers; i++) - { - auto systex = static_cast(mat->GetLayer(i, 0, &layer)); - systex->BindOrCreate(layer->layerTexture, i, CLAMP_NONE, 0, layer->scaleFlags); - } - } - // unbind everything. - FHardwareTexture::UnbindAll(); - gl_RenderState.ClearLastMaterial(); -} - -IVertexBuffer *OpenGLFrameBuffer::CreateVertexBuffer() -{ - return new GLVertexBuffer; -} - -IIndexBuffer *OpenGLFrameBuffer::CreateIndexBuffer() -{ - return new GLIndexBuffer; -} - -IDataBuffer *OpenGLFrameBuffer::CreateDataBuffer(int bindingpoint, bool ssbo, bool needsresize) -{ - return new GLDataBuffer(bindingpoint, ssbo); -} - -void OpenGLFrameBuffer::BlurScene(float amount) -{ - GLRenderer->BlurScene(amount); -} - -void OpenGLFrameBuffer::InitLightmap(int LMTextureSize, int LMTextureCount, TArray& LMTextureData) -{ - if (LMTextureData.Size() > 0) - { - GLint activeTex = 0; - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0 + 17); - - if (GLRenderer->mLightMapID == 0) - glGenTextures(1, (GLuint*)&GLRenderer->mLightMapID); - - glBindTexture(GL_TEXTURE_2D_ARRAY, GLRenderer->mLightMapID); - glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGB16F, LMTextureSize, LMTextureSize, LMTextureCount, 0, GL_RGB, GL_HALF_FLOAT, &LMTextureData[0]); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glGenerateMipmap(GL_TEXTURE_2D_ARRAY); - - glActiveTexture(activeTex); - - LMTextureData.Reset(); // We no longer need this, release the memory - } -} - -void OpenGLFrameBuffer::SetViewportRects(IntRect *bounds) -{ - Super::SetViewportRects(bounds); - if (!bounds) - { - auto vrmode = VRMode::GetVRMode(true); - vrmode->AdjustViewport(this); - } -} - -void OpenGLFrameBuffer::UpdatePalette() -{ - if (GLRenderer) - GLRenderer->ClearTonemapPalette(); -} - -FRenderState* OpenGLFrameBuffer::RenderState() -{ - return &gl_RenderState; -} - -void OpenGLFrameBuffer::AmbientOccludeScene(float m5) -{ - gl_RenderState.EnableDrawBuffers(1); - GLRenderer->AmbientOccludeScene(m5); - glViewport(screen->mSceneViewport.left, mSceneViewport.top, mSceneViewport.width, mSceneViewport.height); - GLRenderer->mBuffers->BindSceneFB(true); - gl_RenderState.EnableDrawBuffers(gl_RenderState.GetPassDrawBufferCount()); - gl_RenderState.Apply(); -} - -void OpenGLFrameBuffer::FirstEye() -{ - GLRenderer->mBuffers->CurrentEye() = 0; // always begin at zero, in case eye count changed -} - -void OpenGLFrameBuffer::NextEye(int eyecount) -{ - GLRenderer->mBuffers->NextEye(eyecount); -} - -void OpenGLFrameBuffer::SetSceneRenderTarget(bool useSSAO) -{ - GLRenderer->mBuffers->BindSceneFB(useSSAO); -} - -void OpenGLFrameBuffer::UpdateShadowMap() -{ - if (mShadowMap.PerformUpdate()) - { - FGLDebug::PushGroup("ShadowMap"); - - FGLPostProcessState savedState; - - static_cast(screen->mShadowMap.mLightList)->BindBase(); - static_cast(screen->mShadowMap.mNodesBuffer)->BindBase(); - static_cast(screen->mShadowMap.mLinesBuffer)->BindBase(); - - GLRenderer->mBuffers->BindShadowMapFB(); - - GLRenderer->mShadowMapShader->Bind(); - GLRenderer->mShadowMapShader->Uniforms->ShadowmapQuality = gl_shadowmap_quality; - GLRenderer->mShadowMapShader->Uniforms->NodesCount = screen->mShadowMap.NodesCount(); - GLRenderer->mShadowMapShader->Uniforms.SetData(); - static_cast(GLRenderer->mShadowMapShader->Uniforms.GetBuffer())->BindBase(); - - glViewport(0, 0, gl_shadowmap_quality, 1024); - GLRenderer->RenderScreenQuad(); - - const auto& viewport = screen->mScreenViewport; - glViewport(viewport.left, viewport.top, viewport.width, viewport.height); - - GLRenderer->mBuffers->BindShadowMapTexture(16); - FGLDebug::PopGroup(); - screen->mShadowMap.FinishUpdate(); - } -} - -void OpenGLFrameBuffer::WaitForCommands(bool finish) -{ - glFinish(); -} - -void OpenGLFrameBuffer::SetSaveBuffers(bool yes) -{ - if (!GLRenderer) return; - if (yes) GLRenderer->mBuffers = GLRenderer->mSaveBuffers; - else GLRenderer->mBuffers = GLRenderer->mScreenBuffers; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void OpenGLFrameBuffer::BeginFrame() -{ - SetViewportRects(nullptr); - mViewpoints->Clear(); - if (GLRenderer != nullptr) - GLRenderer->BeginFrame(); -} - -//=========================================================================== -// -// Takes a screenshot -// -//=========================================================================== - -TArray OpenGLFrameBuffer::GetScreenshotBuffer(int &pitch, ESSType &color_type, float &gamma) -{ - const auto &viewport = mOutputLetterbox; - - // Grab what is in the back buffer. - // We cannot rely on SCREENWIDTH/HEIGHT here because the output may have been scaled. - TArray pixels; - pixels.Resize(viewport.width * viewport.height * 3); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glReadPixels(viewport.left, viewport.top, viewport.width, viewport.height, GL_RGB, GL_UNSIGNED_BYTE, &pixels[0]); - glPixelStorei(GL_PACK_ALIGNMENT, 4); - - // Copy to screenshot buffer: - int w = SCREENWIDTH; - int h = SCREENHEIGHT; - - TArray ScreenshotBuffer(w * h * 3, true); - - float rcpWidth = 1.0f / w; - float rcpHeight = 1.0f / h; - for (int y = 0; y < h; y++) - { - for (int x = 0; x < w; x++) - { - float u = (x + 0.5f) * rcpWidth; - float v = (y + 0.5f) * rcpHeight; - int sx = u * viewport.width; - int sy = v * viewport.height; - int sindex = (sx + sy * viewport.width) * 3; - int dindex = (x + (h - y - 1) * w) * 3; - ScreenshotBuffer[dindex] = pixels[sindex]; - ScreenshotBuffer[dindex + 1] = pixels[sindex + 1]; - ScreenshotBuffer[dindex + 2] = pixels[sindex + 2]; - } - } - - pitch = w * 3; - color_type = SS_RGB; - - // Screenshot should not use gamma correction if it was already applied to rendered image - gamma = 1; - if (vid_hdr_active && vid_fullscreen) - gamma *= 2.2f; - return ScreenshotBuffer; -} - -//=========================================================================== -// -// 2D drawing -// -//=========================================================================== - -void OpenGLFrameBuffer::Draw2D() -{ - if (GLRenderer != nullptr) - { - GLRenderer->mBuffers->BindCurrentFB(); - ::Draw2D(twod, gl_RenderState); - } -} - -void OpenGLFrameBuffer::PostProcessScene(bool swscene, int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) -{ - if (!swscene) GLRenderer->mBuffers->BlitSceneToTexture(); // Copy the resulting scene to the current post process texture - GLRenderer->PostProcessScene(fixedcm, flash, afterBloomDrawEndScene2D); -} - -bool OpenGLFrameBuffer::CompileNextShader() -{ - return GLRenderer->mShaderManager->CompileNextShader(); -} - -//========================================================================== -// -// OpenGLFrameBuffer :: WipeStartScreen -// -// Called before the current screen has started rendering. This needs to -// save what was drawn the previous frame so that it can be animated into -// what gets drawn this frame. -// -//========================================================================== - -FTexture *OpenGLFrameBuffer::WipeStartScreen() -{ - const auto &viewport = screen->mScreenViewport; - - auto tex = new FWrapperTexture(viewport.width, viewport.height, 1); - tex->GetSystemTexture()->CreateTexture(nullptr, viewport.width, viewport.height, 0, false, "WipeStartScreen"); - glFinish(); - static_cast(tex->GetSystemTexture())->Bind(0, false); - - GLRenderer->mBuffers->BindCurrentFB(); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, viewport.left, viewport.top, viewport.width, viewport.height); - return tex; -} - -//========================================================================== -// -// OpenGLFrameBuffer :: WipeEndScreen -// -// The screen we want to animate to has just been drawn. -// -//========================================================================== - -FTexture *OpenGLFrameBuffer::WipeEndScreen() -{ - GLRenderer->Flush(); - const auto &viewport = screen->mScreenViewport; - auto tex = new FWrapperTexture(viewport.width, viewport.height, 1); - tex->GetSystemTexture()->CreateTexture(NULL, viewport.width, viewport.height, 0, false, "WipeEndScreen"); - glFinish(); - static_cast(tex->GetSystemTexture())->Bind(0, false); - GLRenderer->mBuffers->BindCurrentFB(); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, viewport.left, viewport.top, viewport.width, viewport.height); - return tex; -} - -} diff --git a/src/common/rendering/gl/gl_framebuffer.h b/src/common/rendering/gl/gl_framebuffer.h deleted file mode 100644 index 7b659db0a..000000000 --- a/src/common/rendering/gl/gl_framebuffer.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef __GL_FRAMEBUFFER -#define __GL_FRAMEBUFFER - -#include "gl_sysfb.h" -#include "m_png.h" - -#include - -namespace OpenGLRenderer -{ - -class FHardwareTexture; -class FGLDebug; - -class OpenGLFrameBuffer : public SystemGLFrameBuffer -{ - typedef SystemGLFrameBuffer Super; - - void RenderTextureView(FCanvasTexture* tex, std::function renderFunc) override; - -public: - - OpenGLFrameBuffer(void *hMonitor, bool fullscreen) ; - ~OpenGLFrameBuffer(); - int Backend() override { return 2; } - bool CompileNextShader() override; - void InitializeState() override; - void Update() override; - - void AmbientOccludeScene(float m5) override; - void FirstEye() override; - void NextEye(int eyecount) override; - void SetSceneRenderTarget(bool useSSAO) override; - void UpdateShadowMap() override; - void WaitForCommands(bool finish) override; - void SetSaveBuffers(bool yes) override; - void CopyScreenToBuffer(int width, int height, uint8_t* buffer) override; - bool FlipSavePic() const override { return true; } - - FRenderState* RenderState() override; - void UpdatePalette() override; - const char* DeviceName() const override; - void SetTextureFilterMode() override; - IHardwareTexture *CreateHardwareTexture(int numchannels) override; - void PrecacheMaterial(FMaterial *mat, int translation) override; - void BeginFrame() override; - void SetViewportRects(IntRect *bounds) override; - void BlurScene(float amount) override; - IVertexBuffer *CreateVertexBuffer() override; - IIndexBuffer *CreateIndexBuffer() override; - IDataBuffer *CreateDataBuffer(int bindingpoint, bool ssbo, bool needsresize) override; - - void InitLightmap(int LMTextureSize, int LMTextureCount, TArray& LMTextureData) override; - - // Retrieves a buffer containing image data for a screenshot. - // Hint: Pitch can be negative for upside-down images, in which case buffer - // points to the last row in the buffer, which will be the first row output. - virtual TArray GetScreenshotBuffer(int &pitch, ESSType &color_type, float &gamma) override; - - void Swap(); - bool IsHWGammaActive() const { return HWGammaActive; } - - void SetVSync(bool vsync) override; - - void Draw2D() override; - void PostProcessScene(bool swscene, int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) override; - - bool HWGammaActive = false; // Are we using hardware or software gamma? - std::unique_ptr mDebug; // Debug API - - FTexture *WipeStartScreen() override; - FTexture *WipeEndScreen() override; - - int camtexcount = 0; -}; - -} - -#endif //__GL_FRAMEBUFFER diff --git a/src/common/rendering/gl/gl_hwtexture.cpp b/src/common/rendering/gl/gl_hwtexture.cpp deleted file mode 100644 index 37b066155..000000000 --- a/src/common/rendering/gl/gl_hwtexture.cpp +++ /dev/null @@ -1,343 +0,0 @@ -/* -** gl_hwtexture.cpp -** GL texture abstraction -** -**--------------------------------------------------------------------------- -** Copyright 2019 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -** -*/ - -#include "gl_system.h" - -#include "c_cvars.h" -#include "hw_material.h" - -#include "gl_interface.h" -#include "hw_cvars.h" -#include "gl_debug.h" -#include "gl_renderer.h" -#include "gl_renderstate.h" -#include "gl_samplers.h" -#include "gl_hwtexture.h" - -namespace OpenGLRenderer -{ - - -TexFilter_s TexFilter[] = { - {GL_NEAREST, GL_NEAREST, false}, - {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, true}, - {GL_LINEAR, GL_LINEAR, false}, - {GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR, true}, - {GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, true}, - {GL_NEAREST_MIPMAP_LINEAR, GL_NEAREST, true}, - {GL_LINEAR_MIPMAP_LINEAR, GL_NEAREST, true}, -}; - -//=========================================================================== -// -// Static texture data -// -//=========================================================================== -unsigned int FHardwareTexture::lastbound[FHardwareTexture::MAX_TEXTURES]; - -//=========================================================================== -// -// Loads the texture image into the hardware -// -// NOTE: For some strange reason I was unable to find the source buffer -// should be one line higher than the actual texture. I got extremely -// strange crashes deep inside the GL driver when I didn't do it! -// -//=========================================================================== - -unsigned int FHardwareTexture::CreateTexture(unsigned char * buffer, int w, int h, int texunit, bool mipmap, const char *name) -{ - int rh,rw; - int texformat = GL_RGBA8;// TexFormat[gl_texture_format]; - bool deletebuffer=false; - - /* - if (forcenocompression) - { - texformat = GL_RGBA8; - } - */ - bool firstCall = glTexID == 0; - if (firstCall) - { - glGenTextures(1, &glTexID); - } - - int textureBinding = UINT_MAX; - if (texunit == -1) glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - if (texunit > 0) glActiveTexture(GL_TEXTURE0+texunit); - if (texunit >= 0) lastbound[texunit] = glTexID; - glBindTexture(GL_TEXTURE_2D, glTexID); - - FGLDebug::LabelObject(GL_TEXTURE, glTexID, name); - - rw = GetTexDimension(w); - rh = GetTexDimension(h); - if (glBufferID > 0) - { - glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER); - buffer = nullptr; - } - else if (!buffer) - { - // The texture must at least be initialized if no data is present. - mipmapped = false; - buffer=(unsigned char *)calloc(4,rw * (rh+1)); - deletebuffer=true; - //texheight=-h; - } - else - { - if (rw < w || rh < h) - { - // The texture is larger than what the hardware can handle so scale it down. - unsigned char * scaledbuffer=(unsigned char *)calloc(4,rw * (rh+1)); - if (scaledbuffer) - { - Resize(w, h, rw, rh, buffer, scaledbuffer); - deletebuffer=true; - buffer=scaledbuffer; - } - } - } - // store the physical size. - - int sourcetype; - if (glTextureBytes > 0) - { - if (glTextureBytes < 4) glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - static const int ITypes[] = { GL_R8, GL_RG8, GL_RGB8, GL_RGBA8 }; - static const int STypes[] = { GL_RED, GL_RG, GL_BGR, GL_BGRA }; - - texformat = ITypes[glTextureBytes - 1]; - sourcetype = STypes[glTextureBytes - 1]; - } - else - { - sourcetype = GL_BGRA; - } - - if (!firstCall && glBufferID > 0) - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rw, rh, sourcetype, GL_UNSIGNED_BYTE, buffer); - else - glTexImage2D(GL_TEXTURE_2D, 0, texformat, rw, rh, 0, sourcetype, GL_UNSIGNED_BYTE, buffer); - - if (deletebuffer && buffer) free(buffer); - else if (glBufferID) - { - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - } - - if (mipmap && TexFilter[gl_texture_filter].mipmapping) - { - glGenerateMipmap(GL_TEXTURE_2D); - mipmapped = true; - } - - if (texunit > 0) glActiveTexture(GL_TEXTURE0); - else if (texunit == -1) glBindTexture(GL_TEXTURE_2D, textureBinding); - return glTexID; -} - - -//=========================================================================== -// -// -// -//=========================================================================== -void FHardwareTexture::AllocateBuffer(int w, int h, int texelsize) -{ - int rw = GetTexDimension(w); - int rh = GetTexDimension(h); - if (texelsize < 1 || texelsize > 4) texelsize = 4; - glTextureBytes = texelsize; - bufferpitch = w; - if (rw == w || rh == h) - { - glGenBuffers(1, &glBufferID); - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, glBufferID); - glBufferData(GL_PIXEL_UNPACK_BUFFER, w*h*texelsize, nullptr, GL_STREAM_DRAW); - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - } -} - - -uint8_t *FHardwareTexture::MapBuffer() -{ - glBindBuffer(GL_PIXEL_UNPACK_BUFFER, glBufferID); - return (uint8_t*)glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY); -} - -//=========================================================================== -// -// Destroys the texture -// -//=========================================================================== -FHardwareTexture::~FHardwareTexture() -{ - if (glTexID != 0) glDeleteTextures(1, &glTexID); - if (glBufferID != 0) glDeleteBuffers(1, &glBufferID); -} - - -//=========================================================================== -// -// Binds this patch -// -//=========================================================================== -unsigned int FHardwareTexture::Bind(int texunit, bool needmipmap) -{ - if (glTexID != 0) - { - if (lastbound[texunit] == glTexID) return glTexID; - lastbound[texunit] = glTexID; - if (texunit != 0) glActiveTexture(GL_TEXTURE0 + texunit); - glBindTexture(GL_TEXTURE_2D, glTexID); - // Check if we need mipmaps on a texture that was creted without them. - if (needmipmap && !mipmapped && TexFilter[gl_texture_filter].mipmapping) - { - glGenerateMipmap(GL_TEXTURE_2D); - mipmapped = true; - } - if (texunit != 0) glActiveTexture(GL_TEXTURE0); - return glTexID; - } - return 0; -} - -void FHardwareTexture::Unbind(int texunit) -{ - if (lastbound[texunit] != 0) - { - if (texunit != 0) glActiveTexture(GL_TEXTURE0+texunit); - glBindTexture(GL_TEXTURE_2D, 0); - if (texunit != 0) glActiveTexture(GL_TEXTURE0); - lastbound[texunit] = 0; - } -} - -void FHardwareTexture::UnbindAll() -{ - for(int texunit = 0; texunit < 16; texunit++) - { - Unbind(texunit); - } -} - -//=========================================================================== -// -// Creates a depth buffer for this texture -// -//=========================================================================== - -int FHardwareTexture::GetDepthBuffer(int width, int height) -{ - if (glDepthID == 0) - { - glGenRenderbuffers(1, &glDepthID); - glBindRenderbuffer(GL_RENDERBUFFER, glDepthID); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, - GetTexDimension(width), GetTexDimension(height)); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - } - return glDepthID; -} - - -//=========================================================================== -// -// Binds this texture's surfaces to the current framrbuffer -// -//=========================================================================== - -void FHardwareTexture::BindToFrameBuffer(int width, int height) -{ - width = GetTexDimension(width); - height = GetTexDimension(height); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, glTexID, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, GetDepthBuffer(width, height)); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, GetDepthBuffer(width, height)); -} - - -//=========================================================================== -// -// Binds a texture to the renderer -// -//=========================================================================== - -bool FHardwareTexture::BindOrCreate(FTexture *tex, int texunit, int clampmode, int translation, int flags) -{ - bool needmipmap = (clampmode <= CLAMP_XY) && !forcenofilter; - - // Bind it to the system. - if (!Bind(texunit, needmipmap)) - { - if (flags & CTF_Indexed) - { - glTextureBytes = 1; - forcenofilter = true; - needmipmap = false; - } - int w = 0, h = 0; - - // Create this texture - - FTextureBuffer texbuffer; - - if (!tex->isHardwareCanvas()) - { - texbuffer = tex->CreateTexBuffer(translation, flags | CTF_ProcessData); - w = texbuffer.mWidth; - h = texbuffer.mHeight; - } - else - { - w = tex->GetWidth(); - h = tex->GetHeight(); - } - if (!CreateTexture(texbuffer.mBuffer, w, h, texunit, needmipmap, "FHardwareTexture.BindOrCreate")) - { - // could not create texture - return false; - } - } - if (forcenofilter && clampmode <= CLAMP_XY) clampmode += CLAMP_NOFILTER - CLAMP_NONE; - GLRenderer->mSamplerManager->Bind(texunit, clampmode, 255); - return true; -} - -} diff --git a/src/common/rendering/gl/gl_hwtexture.h b/src/common/rendering/gl/gl_hwtexture.h deleted file mode 100644 index 1b3cdff2c..000000000 --- a/src/common/rendering/gl/gl_hwtexture.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once -class FBitmap; -class FTexture; - -#include "tarray.h" -#include "hw_ihwtexture.h" - - -#ifdef LoadImage -#undef LoadImage -#endif - -#define SHADED_TEXTURE -1 -#define DIRECT_PALETTE -2 - -#include "tarray.h" -#include "gl_interface.h" -#include "hw_ihwtexture.h" - -class FCanvasTexture; - -namespace OpenGLRenderer -{ - -class FHardwareTexture : public IHardwareTexture -{ -public: - - static unsigned int lastbound[MAX_TEXTURES]; - - static int GetTexDimension(int value) - { - if (value > gl.max_texturesize) return gl.max_texturesize; - return value; - } - - static void InitGlobalState() { for (int i = 0; i < MAX_TEXTURES; i++) lastbound[i] = 0; } - -private: - - bool forcenofilter; - - unsigned int glTexID = 0; - unsigned int glDepthID = 0; // only used by camera textures - unsigned int glBufferID = 0; - int glTextureBytes; - bool mipmapped = false; - - int GetDepthBuffer(int w, int h); - -public: - FHardwareTexture(int numchannels = 4, bool disablefilter = false) - { - forcenofilter = disablefilter; - glTextureBytes = numchannels; - } - - ~FHardwareTexture(); - - static void Unbind(int texunit); - static void UnbindAll(); - - void BindToFrameBuffer(int w, int h); - - unsigned int Bind(int texunit, bool needmipmap); - bool BindOrCreate(FTexture* tex, int texunit, int clampmode, int translation, int flags); - - void AllocateBuffer(int w, int h, int texelsize); - uint8_t* MapBuffer(); - - unsigned int CreateTexture(unsigned char* buffer, int w, int h, int texunit, bool mipmap, const char* name); - unsigned int GetTextureHandle() - { - return glTexID; - } - - int numChannels() { return glTextureBytes; } -}; - -} diff --git a/src/common/rendering/gl/gl_postprocess.cpp b/src/common/rendering/gl/gl_postprocess.cpp deleted file mode 100644 index f5ec0bfae..000000000 --- a/src/common/rendering/gl/gl_postprocess.cpp +++ /dev/null @@ -1,267 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gl_system.h" -#include "m_png.h" -#include "gl_buffers.h" -#include "gl_framebuffer.h" -#include "gl_debug.h" -#include "gl_renderbuffers.h" -#include "gl_renderer.h" -#include "gl_postprocessstate.h" -#include "gl_shaderprogram.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" -#include "hwrenderer/postprocessing/hw_postprocess_cvars.h" -#include "flatvertices.h" -#include "r_videoscale.h" -#include "v_video.h" - -#include "hw_vrmodes.h" -#include "v_draw.h" - -extern bool vid_hdr_active; - -CVAR(Int, gl_dither_bpc, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) - -namespace OpenGLRenderer -{ - - -void FGLRenderer::RenderScreenQuad() -{ - auto buffer = static_cast(screen->mVertexData->GetBufferObjects().first); - buffer->Bind(nullptr); - glDrawArrays(GL_TRIANGLE_STRIP, FFlatVertexBuffer::PRESENT_INDEX, 3); -} - -void FGLRenderer::PostProcessScene(int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) -{ - int sceneWidth = mBuffers->GetSceneWidth(); - int sceneHeight = mBuffers->GetSceneHeight(); - - GLPPRenderState renderstate(mBuffers); - - hw_postprocess.Pass1(&renderstate, fixedcm, sceneWidth, sceneHeight); - mBuffers->BindCurrentFB(); - if (afterBloomDrawEndScene2D) afterBloomDrawEndScene2D(); - hw_postprocess.Pass2(&renderstate, fixedcm, flash, sceneWidth, sceneHeight); -} - -//----------------------------------------------------------------------------- -// -// Adds ambient occlusion to the scene -// -//----------------------------------------------------------------------------- - -void FGLRenderer::AmbientOccludeScene(float m5) -{ - int sceneWidth = mBuffers->GetSceneWidth(); - int sceneHeight = mBuffers->GetSceneHeight(); - - GLPPRenderState renderstate(mBuffers); - hw_postprocess.ssao.Render(&renderstate, m5, sceneWidth, sceneHeight); -} - -void FGLRenderer::BlurScene(float gameinfobluramount) -{ - int sceneWidth = mBuffers->GetSceneWidth(); - int sceneHeight = mBuffers->GetSceneHeight(); - - GLPPRenderState renderstate(mBuffers); - - auto vrmode = VRMode::GetVRMode(true); - int eyeCount = vrmode->mEyeCount; - for (int i = 0; i < eyeCount; ++i) - { - hw_postprocess.bloom.RenderBlur(&renderstate, sceneWidth, sceneHeight, gameinfobluramount); - if (eyeCount - i > 1) mBuffers->NextEye(eyeCount); - } -} - -void FGLRenderer::ClearTonemapPalette() -{ - hw_postprocess.tonemap.ClearTonemapPalette(); -} - -//----------------------------------------------------------------------------- -// -// Copies the rendered screen to its final destination -// -//----------------------------------------------------------------------------- - -void FGLRenderer::Flush() -{ - auto vrmode = VRMode::GetVRMode(true); - if (vrmode->mEyeCount == 1) - { - CopyToBackbuffer(nullptr, true); - } - else - { - // Render 2D to eye textures - int eyeCount = vrmode->mEyeCount; - for (int eye_ix = 0; eye_ix < eyeCount; ++eye_ix) - { - screen->Draw2D(); - if (eyeCount - eye_ix > 1) - mBuffers->NextEye(eyeCount); - } - twod->Clear(); - - FGLPostProcessState savedState; - FGLDebug::PushGroup("PresentEyes"); - // Note: This here is the ONLY place in the entire engine where the OpenGL dependent parts of the Stereo3D code need to be dealt with. - // There's absolutely no need to create a overly complex class hierarchy for just this. - PresentStereo(); - FGLDebug::PopGroup(); - } -} - -//----------------------------------------------------------------------------- -// -// Gamma correct while copying to frame buffer -// -//----------------------------------------------------------------------------- - -void FGLRenderer::CopyToBackbuffer(const IntRect *bounds, bool applyGamma) -{ - screen->Draw2D(); // draw all pending 2D stuff before copying the buffer - twod->Clear(); - - GLPPRenderState renderstate(mBuffers); - hw_postprocess.customShaders.Run(&renderstate, "screen"); - - FGLDebug::PushGroup("CopyToBackbuffer"); - FGLPostProcessState savedState; - savedState.SaveTextureBindings(2); - mBuffers->BindOutputFB(); - - IntRect box; - if (bounds) - { - box = *bounds; - } - else - { - ClearBorders(); - box = screen->mOutputLetterbox; - } - - mBuffers->BindCurrentTexture(0); - DrawPresentTexture(box, applyGamma); - FGLDebug::PopGroup(); -} - -void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma) -{ - glViewport(box.left, box.top, box.width, box.height); - - mBuffers->BindDitherTexture(1); - - glActiveTexture(GL_TEXTURE0); - if (ViewportLinearScale()) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - mPresentShader->Bind(); - if (!applyGamma || framebuffer->IsHWGammaActive()) - { - mPresentShader->Uniforms->InvGamma = 1.0f; - mPresentShader->Uniforms->Contrast = 1.0f; - mPresentShader->Uniforms->Brightness = 0.0f; - mPresentShader->Uniforms->Saturation = 1.0f; - } - else - { - mPresentShader->Uniforms->InvGamma = 1.0f / clamp(vid_gamma, 0.1f, 4.f); - mPresentShader->Uniforms->Contrast = clamp(vid_contrast, 0.1f, 3.f); - mPresentShader->Uniforms->Brightness = clamp(vid_brightness, -0.8f, 0.8f); - mPresentShader->Uniforms->Saturation = clamp(vid_saturation, -15.0f, 15.f); - mPresentShader->Uniforms->GrayFormula = static_cast(gl_satformula); - } - if (vid_hdr_active && framebuffer->IsFullscreen()) - { - // Full screen exclusive mode treats a rgba16f frame buffer as linear. - // It probably will eventually in desktop mode too, but the DWM doesn't seem to support that. - mPresentShader->Uniforms->HdrMode = 1; - mPresentShader->Uniforms->ColorScale = (gl_dither_bpc == -1) ? 1023.0f : (float)((1 << gl_dither_bpc) - 1); - } - else - { - mPresentShader->Uniforms->HdrMode = 0; - mPresentShader->Uniforms->ColorScale = (gl_dither_bpc == -1) ? 255.0f : (float)((1 << gl_dither_bpc) - 1); - } - mPresentShader->Uniforms->Scale = { screen->mScreenViewport.width / (float)mBuffers->GetWidth(), screen->mScreenViewport.height / (float)mBuffers->GetHeight() }; - mPresentShader->Uniforms->Offset = { 0.0f, 0.0f }; - mPresentShader->Uniforms.SetData(); - static_cast(mPresentShader->Uniforms.GetBuffer())->BindBase(); - RenderScreenQuad(); -} - -//----------------------------------------------------------------------------- -// -// Fills the black bars around the screen letterbox -// -//----------------------------------------------------------------------------- - -void FGLRenderer::ClearBorders() -{ - const auto &box = screen->mOutputLetterbox; - - int clientWidth = framebuffer->GetClientWidth(); - int clientHeight = framebuffer->GetClientHeight(); - if (clientWidth == 0 || clientHeight == 0) - return; - - glViewport(0, 0, clientWidth, clientHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glEnable(GL_SCISSOR_TEST); - if (box.top > 0) - { - glScissor(0, 0, clientWidth, box.top); - glClear(GL_COLOR_BUFFER_BIT); - } - if (clientHeight - box.top - box.height > 0) - { - glScissor(0, box.top + box.height, clientWidth, clientHeight - box.top - box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - if (box.left > 0) - { - glScissor(0, box.top, box.left, box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - if (clientWidth - box.left - box.width > 0) - { - glScissor(box.left + box.width, box.top, clientWidth - box.left - box.width, box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - glDisable(GL_SCISSOR_TEST); -} - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_postprocessstate.cpp b/src/common/rendering/gl/gl_postprocessstate.cpp deleted file mode 100644 index e490e8708..000000000 --- a/src/common/rendering/gl/gl_postprocessstate.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "gl_system.h" -#include "gl_interface.h" -#include "gl_postprocessstate.h" - -namespace OpenGLRenderer -{ - -//----------------------------------------------------------------------------- -// -// Saves state modified by post processing shaders -// -//----------------------------------------------------------------------------- - -FGLPostProcessState::FGLPostProcessState() -{ - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - SaveTextureBindings(1); - - glGetBooleanv(GL_BLEND, &blendEnabled); - glGetBooleanv(GL_SCISSOR_TEST, &scissorEnabled); - glGetBooleanv(GL_DEPTH_TEST, &depthEnabled); - glGetBooleanv(GL_MULTISAMPLE, &multisampleEnabled); - glGetIntegerv(GL_CURRENT_PROGRAM, ¤tProgram); - glGetIntegerv(GL_BLEND_EQUATION_RGB, &blendEquationRgb); - glGetIntegerv(GL_BLEND_EQUATION_ALPHA, &blendEquationAlpha); - glGetIntegerv(GL_BLEND_SRC_RGB, &blendSrcRgb); - glGetIntegerv(GL_BLEND_SRC_ALPHA, &blendSrcAlpha); - glGetIntegerv(GL_BLEND_DST_RGB, &blendDestRgb); - glGetIntegerv(GL_BLEND_DST_ALPHA, &blendDestAlpha); - - glDisable(GL_MULTISAMPLE); - glDisable(GL_DEPTH_TEST); - glDisable(GL_SCISSOR_TEST); - glDisable(GL_BLEND); -} - -void FGLPostProcessState::SaveTextureBindings(unsigned int numUnits) -{ - while (textureBinding.Size() < numUnits) - { - unsigned int i = textureBinding.Size(); - - GLint texture; - glActiveTexture(GL_TEXTURE0 + i); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &texture); - glBindTexture(GL_TEXTURE_2D, 0); - textureBinding.Push(texture); - - GLint sampler; - glGetIntegerv(GL_SAMPLER_BINDING, &sampler); - glBindSampler(i, 0); - samplerBinding.Push(sampler); - } - glActiveTexture(GL_TEXTURE0); -} - -//----------------------------------------------------------------------------- -// -// Restores state at the end of post processing -// -//----------------------------------------------------------------------------- - -FGLPostProcessState::~FGLPostProcessState() -{ - if (blendEnabled) - glEnable(GL_BLEND); - else - glDisable(GL_BLEND); - - if (scissorEnabled) - glEnable(GL_SCISSOR_TEST); - else - glDisable(GL_SCISSOR_TEST); - - if (depthEnabled) - glEnable(GL_DEPTH_TEST); - else - glDisable(GL_DEPTH_TEST); - - if (multisampleEnabled) - glEnable(GL_MULTISAMPLE); - else - glDisable(GL_MULTISAMPLE); - - glBlendEquationSeparate(blendEquationRgb, blendEquationAlpha); - glBlendFuncSeparate(blendSrcRgb, blendDestRgb, blendSrcAlpha, blendDestAlpha); - - glUseProgram(currentProgram); - - // Fully unbind to avoid incomplete texture warnings from Nvidia's driver when gl_debug_level 4 is active - for (unsigned int i = 0; i < textureBinding.Size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, 0); - } - - for (unsigned int i = 0; i < samplerBinding.Size(); i++) - { - glBindSampler(i, samplerBinding[i]); - } - - for (unsigned int i = 0; i < textureBinding.Size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, textureBinding[i]); - } - - glActiveTexture(activeTex); -} - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_postprocessstate.h b/src/common/rendering/gl/gl_postprocessstate.h deleted file mode 100644 index b21e73840..000000000 --- a/src/common/rendering/gl/gl_postprocessstate.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __GL_POSTPROCESSSTATE_H -#define __GL_POSTPROCESSSTATE_H - -#include -#include "gl_interface.h" -#include "matrix.h" -#include "c_cvars.h" - -namespace OpenGLRenderer -{ - -class FGLPostProcessState -{ -public: - FGLPostProcessState(); - ~FGLPostProcessState(); - - void SaveTextureBindings(unsigned int numUnits); - -private: - FGLPostProcessState(const FGLPostProcessState &) = delete; - FGLPostProcessState &operator=(const FGLPostProcessState &) = delete; - - GLint activeTex; - TArray textureBinding; - TArray samplerBinding; - GLboolean blendEnabled; - GLboolean scissorEnabled; - GLboolean depthEnabled; - GLboolean multisampleEnabled; - GLint currentProgram; - GLint blendEquationRgb; - GLint blendEquationAlpha; - GLint blendSrcRgb; - GLint blendSrcAlpha; - GLint blendDestRgb; - GLint blendDestAlpha; -}; - -} -#endif diff --git a/src/common/rendering/gl/gl_renderbuffers.cpp b/src/common/rendering/gl/gl_renderbuffers.cpp deleted file mode 100644 index 4f49cdce3..000000000 --- a/src/common/rendering/gl/gl_renderbuffers.cpp +++ /dev/null @@ -1,995 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gl_system.h" -#include "v_video.h" -#include "gl_interface.h" -#include "printf.h" -#include "hw_cvars.h" -#include "gl_debug.h" -#include "gl_renderer.h" -#include "gl_renderbuffers.h" -#include "gl_postprocessstate.h" -#include "gl_shaderprogram.h" -#include "gl_buffers.h" - -#include - -EXTERN_CVAR(Int, gl_debug_level) -CVAR(Int, gl_multisample, 1, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); - -namespace OpenGLRenderer -{ - -//========================================================================== -// -// Initialize render buffers and textures used in rendering passes -// -//========================================================================== - -FGLRenderBuffers::FGLRenderBuffers() -{ - glGetIntegerv(GL_MAX_SAMPLES, &mMaxSamples); -} - -//========================================================================== -// -// Free render buffer resources -// -//========================================================================== - -FGLRenderBuffers::~FGLRenderBuffers() -{ - ClearScene(); - ClearPipeline(); - ClearEyeBuffers(); - ClearShadowMap(); - DeleteTexture(mDitherTexture); -} - -void FGLRenderBuffers::ClearScene() -{ - DeleteFrameBuffer(mSceneFB); - DeleteFrameBuffer(mSceneDataFB); - if (mSceneUsesTextures) - { - DeleteTexture(mSceneMultisampleTex); - DeleteTexture(mSceneFogTex); - DeleteTexture(mSceneNormalTex); - DeleteTexture(mSceneDepthStencilTex); - } - else - { - DeleteRenderBuffer(mSceneMultisampleBuf); - DeleteRenderBuffer(mSceneFogBuf); - DeleteRenderBuffer(mSceneNormalBuf); - DeleteRenderBuffer(mSceneDepthStencilBuf); - } -} - -void FGLRenderBuffers::ClearPipeline() -{ - DeleteRenderBuffer(mPipelineDepthStencilBuf); - for (int i = 0; i < NumPipelineTextures; i++) - { - DeleteFrameBuffer(mPipelineFB[i]); - DeleteTexture(mPipelineTexture[i]); - } -} - -void FGLRenderBuffers::ClearEyeBuffers() -{ - for (auto handle : mEyeFBs) - DeleteFrameBuffer(handle); - - for (auto handle : mEyeTextures) - DeleteTexture(handle); - - mEyeTextures.Clear(); - mEyeFBs.Clear(); -} - -void FGLRenderBuffers::DeleteTexture(PPGLTexture &tex) -{ - if (tex.handle != 0) - glDeleteTextures(1, &tex.handle); - tex.handle = 0; -} - -void FGLRenderBuffers::DeleteRenderBuffer(PPGLRenderBuffer &buf) -{ - if (buf.handle != 0) - glDeleteRenderbuffers(1, &buf.handle); - buf.handle = 0; -} - -void FGLRenderBuffers::DeleteFrameBuffer(PPGLFrameBuffer &fb) -{ - if (fb.handle != 0) - glDeleteFramebuffers(1, &fb.handle); - fb.handle = 0; -} - -//========================================================================== -// -// Makes sure all render buffers have sizes suitable for rending at the -// specified resolution -// -//========================================================================== - -void FGLRenderBuffers::Setup(int width, int height, int sceneWidth, int sceneHeight) -{ - if (width <= 0 || height <= 0) - I_FatalError("Requested invalid render buffer sizes: screen = %dx%d", width, height); - - int samples = clamp((int)gl_multisample, 0, mMaxSamples); - bool needsSceneTextures = (gl_ssao != 0); - - GLint activeTex; - GLint textureBinding; - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - - if (width != mWidth || height != mHeight) - CreatePipeline(width, height); - - if (width != mWidth || height != mHeight || mSamples != samples || mSceneUsesTextures != needsSceneTextures) - CreateScene(width, height, samples, needsSceneTextures); - - mWidth = width; - mHeight = height; - mSamples = samples; - mSceneUsesTextures = needsSceneTextures; - mSceneWidth = sceneWidth; - mSceneHeight = sceneHeight; - - glBindTexture(GL_TEXTURE_2D, textureBinding); - glActiveTexture(activeTex); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - - if (FailedCreate) - { - ClearScene(); - ClearPipeline(); - ClearEyeBuffers(); - mWidth = 0; - mHeight = 0; - mSamples = 0; - mSceneWidth = 0; - mSceneHeight = 0; - I_FatalError("Unable to create render buffers."); - } -} - -//========================================================================== -// -// Creates the scene buffers -// -//========================================================================== - -void FGLRenderBuffers::CreateScene(int width, int height, int samples, bool needsSceneTextures) -{ - ClearScene(); - - if (samples > 1) - { - if (needsSceneTextures) - { - mSceneMultisampleTex = Create2DMultisampleTexture("SceneMultisample", GL_RGBA16F, width, height, samples, false); - mSceneDepthStencilTex = Create2DMultisampleTexture("SceneDepthStencil", GL_DEPTH24_STENCIL8, width, height, samples, false); - mSceneFogTex = Create2DMultisampleTexture("SceneFog", GL_RGBA8, width, height, samples, false); - mSceneNormalTex = Create2DMultisampleTexture("SceneNormal", GL_RGB10_A2, width, height, samples, false); - mSceneFB = CreateFrameBuffer("SceneFB", mSceneMultisampleTex, {}, {}, mSceneDepthStencilTex, true); - mSceneDataFB = CreateFrameBuffer("SceneGBufferFB", mSceneMultisampleTex, mSceneFogTex, mSceneNormalTex, mSceneDepthStencilTex, true); - } - else - { - mSceneMultisampleBuf = CreateRenderBuffer("SceneMultisample", GL_RGBA16F, width, height, samples); - mSceneDepthStencilBuf = CreateRenderBuffer("SceneDepthStencil", GL_DEPTH24_STENCIL8, width, height, samples); - mSceneFB = CreateFrameBuffer("SceneFB", mSceneMultisampleBuf, mSceneDepthStencilBuf); - mSceneDataFB = CreateFrameBuffer("SceneGBufferFB", mSceneMultisampleBuf, mSceneDepthStencilBuf); - } - } - else - { - if (needsSceneTextures) - { - mSceneDepthStencilTex = Create2DTexture("SceneDepthStencil", GL_DEPTH24_STENCIL8, width, height); - mSceneFogTex = Create2DTexture("SceneFog", GL_RGBA8, width, height); - mSceneNormalTex = Create2DTexture("SceneNormal", GL_RGB10_A2, width, height); - mSceneFB = CreateFrameBuffer("SceneFB", mPipelineTexture[0], {}, {}, mSceneDepthStencilTex, false); - mSceneDataFB = CreateFrameBuffer("SceneGBufferFB", mPipelineTexture[0], mSceneFogTex, mSceneNormalTex, mSceneDepthStencilTex, false); - } - else - { - mSceneDepthStencilBuf = CreateRenderBuffer("SceneDepthStencil", GL_DEPTH24_STENCIL8, width, height); - mSceneFB = CreateFrameBuffer("SceneFB", mPipelineTexture[0], mSceneDepthStencilBuf); - mSceneDataFB = CreateFrameBuffer("SceneGBufferFB", mPipelineTexture[0], mSceneDepthStencilBuf); - } - } -} - -//========================================================================== -// -// Creates the buffers needed for post processing steps -// -//========================================================================== - -void FGLRenderBuffers::CreatePipeline(int width, int height) -{ - ClearPipeline(); - ClearEyeBuffers(); - - mPipelineDepthStencilBuf = CreateRenderBuffer("PipelineDepthStencil", GL_DEPTH24_STENCIL8, width, height); - for (int i = 0; i < NumPipelineTextures; i++) - { - mPipelineTexture[i] = Create2DTexture("PipelineTexture", GL_RGBA16F, width, height); - mPipelineFB[i] = CreateFrameBuffer("PipelineFB", mPipelineTexture[i], mPipelineDepthStencilBuf); - } -} - -//========================================================================== -// -// Creates eye buffers if needed -// -//========================================================================== - -void FGLRenderBuffers::CreateEyeBuffers(int eye) -{ - if (mEyeFBs.Size() > unsigned(eye)) - return; - - GLint activeTex, textureBinding, frameBufferBinding; - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - glGetIntegerv(GL_FRAMEBUFFER_BINDING, &frameBufferBinding); - - while (mEyeFBs.Size() <= unsigned(eye)) - { - PPGLTexture texture = Create2DTexture("EyeTexture", GL_RGBA16F, mWidth, mHeight); - mEyeTextures.Push(texture); - mEyeFBs.Push(CreateFrameBuffer("EyeFB", texture)); - } - - glBindTexture(GL_TEXTURE_2D, textureBinding); - glActiveTexture(activeTex); - glBindFramebuffer(GL_FRAMEBUFFER, frameBufferBinding); -} - -//========================================================================== -// -// Creates a 2D texture defaulting to linear filtering and clamp to edge -// -//========================================================================== - -PPGLTexture FGLRenderBuffers::Create2DTexture(const char *name, GLuint format, int width, int height, const void *data) -{ - PPGLTexture tex; - tex.Width = width; - tex.Height = height; - glGenTextures(1, &tex.handle); - glBindTexture(GL_TEXTURE_2D, tex.handle); - FGLDebug::LabelObject(GL_TEXTURE, tex.handle, name); - - GLenum dataformat = 0, datatype = 0; - switch (format) - { - case GL_RGBA8: dataformat = GL_RGBA; datatype = GL_UNSIGNED_BYTE; break; - case GL_RGBA16: dataformat = GL_RGBA; datatype = GL_UNSIGNED_SHORT; break; - case GL_RGBA16F: dataformat = GL_RGBA; datatype = GL_FLOAT; break; - case GL_RGBA32F: dataformat = GL_RGBA; datatype = GL_FLOAT; break; - case GL_RGBA16_SNORM: dataformat = GL_RGBA; datatype = GL_SHORT; break; - case GL_R32F: dataformat = GL_RED; datatype = GL_FLOAT; break; - case GL_R16F: dataformat = GL_RED; datatype = GL_FLOAT; break; - case GL_RG32F: dataformat = GL_RG; datatype = GL_FLOAT; break; - case GL_RG16F: dataformat = GL_RG; datatype = GL_FLOAT; break; - case GL_RGB10_A2: dataformat = GL_RGBA; datatype = GL_UNSIGNED_INT_10_10_10_2; break; - case GL_DEPTH_COMPONENT24: dataformat = GL_DEPTH_COMPONENT; datatype = GL_FLOAT; break; - case GL_STENCIL_INDEX8: dataformat = GL_STENCIL_INDEX; datatype = GL_INT; break; - case GL_DEPTH24_STENCIL8: dataformat = GL_DEPTH_STENCIL; datatype = GL_UNSIGNED_INT_24_8; break; - default: I_FatalError("Unknown format passed to FGLRenderBuffers.Create2DTexture"); - } - - glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, dataformat, datatype, data); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - return tex; -} - -PPGLTexture FGLRenderBuffers::Create2DMultisampleTexture(const char *name, GLuint format, int width, int height, int samples, bool fixedSampleLocations) -{ - PPGLTexture tex; - tex.Width = width; - tex.Height = height; - glGenTextures(1, &tex.handle); - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex.handle); - FGLDebug::LabelObject(GL_TEXTURE, tex.handle, name); - glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, format, width, height, fixedSampleLocations); - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0); - return tex; -} - -//========================================================================== -// -// Creates a render buffer -// -//========================================================================== - -PPGLRenderBuffer FGLRenderBuffers::CreateRenderBuffer(const char *name, GLuint format, int width, int height) -{ - PPGLRenderBuffer buf; - glGenRenderbuffers(1, &buf.handle); - glBindRenderbuffer(GL_RENDERBUFFER, buf.handle); - FGLDebug::LabelObject(GL_RENDERBUFFER, buf.handle, name); - glRenderbufferStorage(GL_RENDERBUFFER, format, width, height); - return buf; -} - -PPGLRenderBuffer FGLRenderBuffers::CreateRenderBuffer(const char *name, GLuint format, int width, int height, int samples) -{ - if (samples <= 1) - return CreateRenderBuffer(name, format, width, height); - - PPGLRenderBuffer buf; - glGenRenderbuffers(1, &buf.handle); - glBindRenderbuffer(GL_RENDERBUFFER, buf.handle); - FGLDebug::LabelObject(GL_RENDERBUFFER, buf.handle, name); - glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, format, width, height); - return buf; -} - -//========================================================================== -// -// Creates a frame buffer -// -//========================================================================== - -PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char *name, PPGLTexture colorbuffer) -{ - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - FGLDebug::LabelObject(GL_FRAMEBUFFER, fb.handle, name); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer.handle, 0); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(false, false); - return fb; -} - -PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char *name, PPGLTexture colorbuffer, PPGLRenderBuffer depthstencil) -{ - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - FGLDebug::LabelObject(GL_FRAMEBUFFER, fb.handle, name); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer.handle, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthstencil.handle); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; -} - -PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char *name, PPGLRenderBuffer colorbuffer, PPGLRenderBuffer depthstencil) -{ - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - FGLDebug::LabelObject(GL_FRAMEBUFFER, fb.handle, name); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorbuffer.handle); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthstencil.handle); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; -} - -PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char *name, PPGLTexture colorbuffer0, PPGLTexture colorbuffer1, PPGLTexture colorbuffer2, PPGLTexture depthstencil, bool multisample) -{ - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - FGLDebug::LabelObject(GL_FRAMEBUFFER, fb.handle, name); - if (multisample) - { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, colorbuffer0.handle, 0); - if (colorbuffer1.handle != 0) - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D_MULTISAMPLE, colorbuffer1.handle, 0); - if (colorbuffer2.handle != 0) - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT2, GL_TEXTURE_2D_MULTISAMPLE, colorbuffer2.handle, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D_MULTISAMPLE, depthstencil.handle, 0); - } - else - { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer0.handle, 0); - if (colorbuffer1.handle != 0) - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, colorbuffer1.handle, 0); - if (colorbuffer2.handle != 0) - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT2, GL_TEXTURE_2D, colorbuffer2.handle, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, depthstencil.handle, 0); - } - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; -} - -//========================================================================== -// -// Verifies that the frame buffer setup is valid -// -//========================================================================== - -bool FGLRenderBuffers::CheckFrameBufferCompleteness() -{ - GLenum result = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (result == GL_FRAMEBUFFER_COMPLETE) - return true; - - if (gl_debug_level > 0) - { - FString error = "glCheckFramebufferStatus failed: "; - switch (result) - { - default: error.AppendFormat("error code %d", (int)result); break; - case GL_FRAMEBUFFER_UNDEFINED: error << "GL_FRAMEBUFFER_UNDEFINED"; break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: error << "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: error << "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"; break; - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: error << "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"; break; - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: error << "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"; break; - case GL_FRAMEBUFFER_UNSUPPORTED: error << "GL_FRAMEBUFFER_UNSUPPORTED"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: error << "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"; break; - case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: error << "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"; break; - } - Printf("%s\n", error.GetChars()); - } - - return false; -} - -//========================================================================== -// -// Clear frame buffer to make sure it never contains uninitialized data -// -//========================================================================== - -void FGLRenderBuffers::ClearFrameBuffer(bool stencil, bool depth) -{ - GLboolean scissorEnabled; - GLint stencilValue; - GLdouble depthValue; - glGetBooleanv(GL_SCISSOR_TEST, &scissorEnabled); - glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &stencilValue); - glGetDoublev(GL_DEPTH_CLEAR_VALUE, &depthValue); - glDisable(GL_SCISSOR_TEST); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearDepth(0.0); - glClearStencil(0); - GLenum flags = GL_COLOR_BUFFER_BIT; - if (stencil) - flags |= GL_STENCIL_BUFFER_BIT; - if (depth) - flags |= GL_DEPTH_BUFFER_BIT; - glClear(flags); - glClearStencil(stencilValue); - glClearDepth(depthValue); - if (scissorEnabled) - glEnable(GL_SCISSOR_TEST); -} - -//========================================================================== -// -// Resolves the multisample frame buffer by copying it to the first pipeline texture -// -//========================================================================== - -void FGLRenderBuffers::BlitSceneToTexture() -{ - mCurrentPipelineTexture = 0; - - if (mSamples <= 1) - return; - - glBindFramebuffer(GL_READ_FRAMEBUFFER, mSceneFB.handle); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mPipelineFB[mCurrentPipelineTexture].handle); - glBlitFramebuffer(0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST); - - if ((gl.flags & RFL_INVALIDATE_BUFFER) != 0) - { - GLenum attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT }; - glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, 2, attachments); - } - - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); -} - -//========================================================================== -// -// Eye textures and their frame buffers -// -//========================================================================== - -void FGLRenderBuffers::BlitToEyeTexture(int eye, bool allowInvalidate) -{ - CreateEyeBuffers(eye); - - glBindFramebuffer(GL_READ_FRAMEBUFFER, mPipelineFB[mCurrentPipelineTexture].handle); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mEyeFBs[eye].handle); - glBlitFramebuffer(0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST); - - if ((gl.flags & RFL_INVALIDATE_BUFFER) != 0 && allowInvalidate) - { - GLenum attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT }; - glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, 2, attachments); - } - - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); -} - -void FGLRenderBuffers::BlitFromEyeTexture(int eye) -{ - if (mEyeFBs.Size() <= unsigned(eye)) return; - - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mPipelineFB[mCurrentPipelineTexture].handle); - glBindFramebuffer(GL_READ_FRAMEBUFFER, mEyeFBs[eye].handle); - glBlitFramebuffer(0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST); - - if ((gl.flags & RFL_INVALIDATE_BUFFER) != 0) - { - GLenum attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT }; - glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, 2, attachments); - } - - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); -} - -void FGLRenderBuffers::BindEyeTexture(int eye, int texunit) -{ - CreateEyeBuffers(eye); - glActiveTexture(GL_TEXTURE0 + texunit); - glBindTexture(GL_TEXTURE_2D, mEyeTextures[eye].handle); -} - -void FGLRenderBuffers::BindDitherTexture(int texunit) -{ - if (!mDitherTexture) - { - static const float data[64] = - { - .0078125, .2578125, .1328125, .3828125, .0234375, .2734375, .1484375, .3984375, - .7578125, .5078125, .8828125, .6328125, .7734375, .5234375, .8984375, .6484375, - .0703125, .3203125, .1953125, .4453125, .0859375, .3359375, .2109375, .4609375, - .8203125, .5703125, .9453125, .6953125, .8359375, .5859375, .9609375, .7109375, - .0390625, .2890625, .1640625, .4140625, .0546875, .3046875, .1796875, .4296875, - .7890625, .5390625, .9140625, .6640625, .8046875, .5546875, .9296875, .6796875, - .1015625, .3515625, .2265625, .4765625, .1171875, .3671875, .2421875, .4921875, - .8515625, .6015625, .9765625, .7265625, .8671875, .6171875, .9921875, .7421875, - }; - - glActiveTexture(GL_TEXTURE0 + texunit); - mDitherTexture = Create2DTexture("DitherTexture", GL_R32F, 8, 8, data); - } - mDitherTexture.Bind(1, GL_NEAREST, GL_REPEAT); -} - -//========================================================================== -// -// Shadow map texture and frame buffers -// -//========================================================================== - -void FGLRenderBuffers::BindShadowMapFB() -{ - CreateShadowMap(); - glBindFramebuffer(GL_FRAMEBUFFER, mShadowMapFB.handle); -} - -void FGLRenderBuffers::BindShadowMapTexture(int texunit) -{ - CreateShadowMap(); - glActiveTexture(GL_TEXTURE0 + texunit); - glBindTexture(GL_TEXTURE_2D, mShadowMapTexture.handle); -} - -void FGLRenderBuffers::ClearShadowMap() -{ - DeleteFrameBuffer(mShadowMapFB); - DeleteTexture(mShadowMapTexture); - mCurrentShadowMapSize = 0; -} - -void FGLRenderBuffers::CreateShadowMap() -{ - if (mShadowMapTexture.handle != 0 && gl_shadowmap_quality == mCurrentShadowMapSize) - return; - - ClearShadowMap(); - - GLint activeTex, textureBinding, frameBufferBinding; - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - glGetIntegerv(GL_FRAMEBUFFER_BINDING, &frameBufferBinding); - - mShadowMapTexture = Create2DTexture("ShadowMap", GL_R32F, gl_shadowmap_quality, 1024); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - mShadowMapFB = CreateFrameBuffer("ShadowMapFB", mShadowMapTexture); - - glBindTexture(GL_TEXTURE_2D, textureBinding); - glActiveTexture(activeTex); - glBindFramebuffer(GL_FRAMEBUFFER, frameBufferBinding); - - mCurrentShadowMapSize = gl_shadowmap_quality; -} - -//========================================================================== -// -// Makes the scene frame buffer active (multisample, depth, stecil, etc.) -// -//========================================================================== - -void FGLRenderBuffers::BindSceneFB(bool sceneData) -{ - glBindFramebuffer(GL_FRAMEBUFFER, sceneData ? mSceneDataFB.handle : mSceneFB.handle); -} - -//========================================================================== -// -// Binds the scene color texture to the specified texture unit -// -//========================================================================== - -void FGLRenderBuffers::BindSceneColorTexture(int index) -{ - glActiveTexture(GL_TEXTURE0 + index); - if (mSamples > 1) - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mSceneMultisampleTex.handle); - else - glBindTexture(GL_TEXTURE_2D, mPipelineTexture[0].handle); -} - -//========================================================================== -// -// Binds the scene fog data texture to the specified texture unit -// -//========================================================================== - -void FGLRenderBuffers::BindSceneFogTexture(int index) -{ - glActiveTexture(GL_TEXTURE0 + index); - if (mSamples > 1) - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mSceneFogTex.handle); - else - glBindTexture(GL_TEXTURE_2D, mSceneFogTex.handle); -} - -//========================================================================== -// -// Binds the scene normal data texture to the specified texture unit -// -//========================================================================== - -void FGLRenderBuffers::BindSceneNormalTexture(int index) -{ - glActiveTexture(GL_TEXTURE0 + index); - if (mSamples > 1) - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mSceneNormalTex.handle); - else - glBindTexture(GL_TEXTURE_2D, mSceneNormalTex.handle); -} - -//========================================================================== -// -// Binds the depth texture to the specified texture unit -// -//========================================================================== - -void FGLRenderBuffers::BindSceneDepthTexture(int index) -{ - glActiveTexture(GL_TEXTURE0 + index); - if (mSamples > 1) - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mSceneDepthStencilTex.handle); - else - glBindTexture(GL_TEXTURE_2D, mSceneDepthStencilTex.handle); -} - -//========================================================================== -// -// Binds the current scene/effect/hud texture to the specified texture unit -// -//========================================================================== - -void FGLRenderBuffers::BindCurrentTexture(int index, int filter, int wrap) -{ - mPipelineTexture[mCurrentPipelineTexture].Bind(index, filter, wrap); -} - -//========================================================================== -// -// Makes the frame buffer for the current texture active -// -//========================================================================== - -void FGLRenderBuffers::BindCurrentFB() -{ - mPipelineFB[mCurrentPipelineTexture].Bind(); -} - -//========================================================================== -// -// Makes the frame buffer for the next texture active -// -//========================================================================== - -void FGLRenderBuffers::BindNextFB() -{ - int out = (mCurrentPipelineTexture + 1) % NumPipelineTextures; - mPipelineFB[out].Bind(); -} - -//========================================================================== -// -// Next pipeline texture now contains the output -// -//========================================================================== - -void FGLRenderBuffers::NextTexture() -{ - mCurrentPipelineTexture = (mCurrentPipelineTexture + 1) % NumPipelineTextures; -} - -//========================================================================== -// -// Makes the screen frame buffer active -// -//========================================================================== - -void FGLRenderBuffers::BindOutputFB() -{ - glBindFramebuffer(GL_FRAMEBUFFER, 0); -} - -//========================================================================== -// -// Returns true if render buffers are supported and should be used -// -//========================================================================== - -bool FGLRenderBuffers::FailedCreate = false; - -//========================================================================== -// -// Creates or updates textures used by postprocess effects -// -//========================================================================== - -PPGLTextureBackend *GLPPRenderState::GetGLTexture(PPTexture *texture) -{ - if (!texture->Backend) - { - FGLPostProcessState savedState; - - auto backend = std::make_unique(); - - int glformat; - switch (texture->Format) - { - default: - case PixelFormat::Rgba8: glformat = GL_RGBA8; break; - case PixelFormat::Rgba16f: glformat = GL_RGBA16F; break; - case PixelFormat::R32f: glformat = GL_R32F; break; - case PixelFormat::Rg16f: glformat = GL_RG16F; break; - case PixelFormat::Rgba16_snorm: glformat = GL_RGBA16_SNORM; break; - } - - if (texture->Data) - backend->Tex = buffers->Create2DTexture("PPTexture", glformat, texture->Width, texture->Height, texture->Data.get()); - else - backend->Tex = buffers->Create2DTexture("PPTexture", glformat, texture->Width, texture->Height); - - texture->Backend = std::move(backend); - } - return static_cast(texture->Backend.get()); -} - -//========================================================================== -// -// Compile the shaders declared by post process effects -// -//========================================================================== - -FShaderProgram *GLPPRenderState::GetGLShader(PPShader *shader) -{ - if (!shader->Backend) - { - auto glshader = std::make_unique(); - - FString prolog; - if (!shader->Uniforms.empty()) - prolog = UniformBlockDecl::Create("Uniforms", shader->Uniforms, POSTPROCESS_BINDINGPOINT); - prolog += shader->Defines; - - glshader->Compile(FShaderProgram::Vertex, shader->VertexShader, "", shader->Version); - glshader->Compile(FShaderProgram::Fragment, shader->FragmentShader, prolog, shader->Version); - glshader->Link(shader->FragmentShader.GetChars()); - if (!shader->Uniforms.empty()) - glshader->SetUniformBufferLocation(POSTPROCESS_BINDINGPOINT, "Uniforms"); - - shader->Backend = std::move(glshader); - } - return static_cast(shader->Backend.get()); -} - -//========================================================================== -// -// Renders one post process effect -// -//========================================================================== - -void GLPPRenderState::Draw() -{ - FGLPostProcessState savedState; - - // Bind input textures - for (unsigned int index = 0; index < Textures.Size(); index++) - { - savedState.SaveTextureBindings(index + 1); - - const PPTextureInput &input = Textures[index]; - int filter = (input.Filter == PPFilterMode::Nearest) ? GL_NEAREST : GL_LINEAR; - int wrap = (input.Wrap == PPWrapMode::Clamp) ? GL_CLAMP_TO_EDGE : GL_REPEAT; - - switch (input.Type) - { - default: - case PPTextureType::CurrentPipelineTexture: - buffers->BindCurrentTexture(index, filter, wrap); - break; - - case PPTextureType::NextPipelineTexture: - I_FatalError("PPTextureType::NextPipelineTexture not allowed as input\n"); - break; - - case PPTextureType::PPTexture: - GetGLTexture(input.Texture)->Tex.Bind(index, filter, wrap); - break; - - case PPTextureType::SceneColor: - buffers->BindSceneColorTexture(index); - break; - - case PPTextureType::SceneFog: - buffers->BindSceneFogTexture(index); - break; - - case PPTextureType::SceneNormal: - buffers->BindSceneNormalTexture(index); - break; - - case PPTextureType::SceneDepth: - buffers->BindSceneDepthTexture(index); - break; - } - } - - // Set render target - switch (Output.Type) - { - default: - I_FatalError("Unsupported postprocess output type\n"); - break; - - case PPTextureType::CurrentPipelineTexture: - buffers->BindCurrentFB(); - break; - - case PPTextureType::NextPipelineTexture: - buffers->BindNextFB(); - break; - - case PPTextureType::PPTexture: - if (GetGLTexture(Output.Texture)->FB) - GetGLTexture(Output.Texture)->FB.Bind(); - else - GetGLTexture(Output.Texture)->FB = buffers->CreateFrameBuffer("PPTextureFB"/*Output.Texture.GetChars()*/, GetGLTexture(Output.Texture)->Tex); - break; - - case PPTextureType::SceneColor: - buffers->BindSceneFB(false); - break; - } - - // Set blend mode - if (BlendMode.BlendOp == STYLEOP_Add && BlendMode.SrcAlpha == STYLEALPHA_One && BlendMode.DestAlpha == STYLEALPHA_Zero && BlendMode.Flags == 0) - { - glDisable(GL_BLEND); - } - else - { - // To do: support all the modes - glEnable(GL_BLEND); - glBlendEquation(GL_FUNC_ADD); - if (BlendMode.SrcAlpha == STYLEALPHA_One && BlendMode.DestAlpha == STYLEALPHA_One) - glBlendFunc(GL_ONE, GL_ONE); - else - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - - // Setup viewport - glViewport(Viewport.left, Viewport.top, Viewport.width, Viewport.height); - - auto shader = GetGLShader(Shader); - - // Set uniforms - if (Uniforms.Data.Size() > 0) - { - if (!shader->Uniforms) - shader->Uniforms.reset(screen->CreateDataBuffer(POSTPROCESS_BINDINGPOINT, false, false)); - shader->Uniforms->SetData(Uniforms.Data.Size(), Uniforms.Data.Data(), BufferUsageType::Static); - static_cast(shader->Uniforms.get())->BindBase(); - } - - // Set shader - shader->Bind(); - - // Draw the screen quad - GLRenderer->RenderScreenQuad(); - - // Advance to next PP texture if our output was sent there - if (Output.Type == PPTextureType::NextPipelineTexture) - buffers->NextTexture(); - - glViewport(screen->mScreenViewport.left, screen->mScreenViewport.top, screen->mScreenViewport.width, screen->mScreenViewport.height); -} - -void GLPPRenderState::PushGroup(const FString &name) -{ - FGLDebug::PushGroup(name.GetChars()); -} - -void GLPPRenderState::PopGroup() -{ - FGLDebug::PopGroup(); -} - - -// Store the current stereo 3D eye buffer, and Load the next one - -int FGLRenderBuffers::NextEye(int eyeCount) -{ - int nextEye = (mCurrentEye + 1) % eyeCount; - if (nextEye == mCurrentEye) return mCurrentEye; - BlitToEyeTexture(mCurrentEye); - mCurrentEye = nextEye; - BlitFromEyeTexture(mCurrentEye); - return mCurrentEye; -} - -} // namespace OpenGLRenderer diff --git a/src/common/rendering/gl/gl_renderbuffers.h b/src/common/rendering/gl/gl_renderbuffers.h deleted file mode 100644 index bb652e495..000000000 --- a/src/common/rendering/gl/gl_renderbuffers.h +++ /dev/null @@ -1,212 +0,0 @@ - -#pragma once - -#include "hwrenderer/postprocessing/hw_postprocess.h" - -namespace OpenGLRenderer -{ - -class FGLRenderBuffers; - -class PPGLTexture -{ -public: - void Bind(int index, int filter = GL_NEAREST, int wrap = GL_CLAMP_TO_EDGE) - { - glActiveTexture(GL_TEXTURE0 + index); - glBindTexture(GL_TEXTURE_2D, handle); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); - } - - int Width = -1; - int Height = -1; - - explicit operator bool() const { return handle != 0; } - -private: - GLuint handle = 0; - - friend class FGLRenderBuffers; - friend class PPGLTextureBackend; -}; - -class PPGLFrameBuffer -{ -public: - void Bind() - { - glBindFramebuffer(GL_FRAMEBUFFER, handle); - } - - explicit operator bool() const { return handle != 0; } - -private: - GLuint handle = 0; - - friend class FGLRenderBuffers; - friend class PPGLTextureBackend; -}; - -class PPGLRenderBuffer -{ -private: - GLuint handle = 0; - - explicit operator bool() const { return handle != 0; } - - friend class FGLRenderBuffers; -}; - -class PPGLTextureBackend : public PPTextureBackend -{ -public: - ~PPGLTextureBackend() - { - if (Tex.handle != 0) - { - glDeleteTextures(1, &Tex.handle); - Tex.handle = 0; - } - if (FB.handle != 0) - { - glDeleteFramebuffers(1, &FB.handle); - FB.handle = 0; - } - } - - PPGLTexture Tex; - PPGLFrameBuffer FB; -}; - -class FShaderProgram; - -class GLPPRenderState : public PPRenderState -{ -public: - GLPPRenderState(FGLRenderBuffers *buffers) : buffers(buffers) { } - - void PushGroup(const FString &name) override; - void PopGroup() override; - void Draw() override; - -private: - PPGLTextureBackend *GetGLTexture(PPTexture *texture); - FShaderProgram *GetGLShader(PPShader *shader); - - FGLRenderBuffers *buffers; -}; - -class FGLRenderBuffers -{ -public: - FGLRenderBuffers(); - ~FGLRenderBuffers(); - - void Setup(int width, int height, int sceneWidth, int sceneHeight); - - void BindSceneFB(bool sceneData); - void BindSceneColorTexture(int index); - void BindSceneFogTexture(int index); - void BindSceneNormalTexture(int index); - void BindSceneDepthTexture(int index); - void BlitSceneToTexture(); - - void BindCurrentTexture(int index, int filter = GL_NEAREST, int wrap = GL_CLAMP_TO_EDGE); - void BindCurrentFB(); - void BindNextFB(); - void NextTexture(); - - PPGLFrameBuffer GetCurrentFB() const { return mPipelineFB[mCurrentPipelineTexture]; } - - void BindOutputFB(); - - void BlitToEyeTexture(int eye, bool allowInvalidate=true); - void BlitFromEyeTexture(int eye); - void BindEyeTexture(int eye, int texunit); - int NextEye(int eyeCount); - int & CurrentEye() { return mCurrentEye; } - - void BindDitherTexture(int texunit); - - void BindShadowMapFB(); - void BindShadowMapTexture(int index); - - int GetWidth() const { return mWidth; } - int GetHeight() const { return mHeight; } - - int GetSceneWidth() const { return mSceneWidth; } - int GetSceneHeight() const { return mSceneHeight; } - -private: - void ClearScene(); - void ClearPipeline(); - void ClearEyeBuffers(); - void ClearShadowMap(); - void CreateScene(int width, int height, int samples, bool needsSceneTextures); - void CreatePipeline(int width, int height); - void CreateEyeBuffers(int eye); - void CreateShadowMap(); - - PPGLTexture Create2DTexture(const char *name, GLuint format, int width, int height, const void *data = nullptr); - PPGLTexture Create2DMultisampleTexture(const char *name, GLuint format, int width, int height, int samples, bool fixedSampleLocations); - PPGLRenderBuffer CreateRenderBuffer(const char *name, GLuint format, int width, int height); - PPGLRenderBuffer CreateRenderBuffer(const char *name, GLuint format, int width, int height, int samples); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer, PPGLRenderBuffer depthstencil); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLRenderBuffer colorbuffer, PPGLRenderBuffer depthstencil); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer0, PPGLTexture colorbuffer1, PPGLTexture colorbuffer2, PPGLTexture depthstencil, bool multisample); - bool CheckFrameBufferCompleteness(); - void ClearFrameBuffer(bool stencil, bool depth); - void DeleteTexture(PPGLTexture &handle); - void DeleteRenderBuffer(PPGLRenderBuffer &handle); - void DeleteFrameBuffer(PPGLFrameBuffer &handle); - - int mWidth = 0; - int mHeight = 0; - int mSamples = 0; - int mMaxSamples = 0; - int mSceneWidth = 0; - int mSceneHeight = 0; - - static const int NumPipelineTextures = 2; - int mCurrentPipelineTexture = 0; - PPGLRenderBuffer mPipelineDepthStencilBuf; - - // Buffers for the scene - PPGLTexture mSceneMultisampleTex; - PPGLTexture mSceneDepthStencilTex; - PPGLTexture mSceneFogTex; - PPGLTexture mSceneNormalTex; - PPGLRenderBuffer mSceneMultisampleBuf; - PPGLRenderBuffer mSceneDepthStencilBuf; - PPGLRenderBuffer mSceneFogBuf; - PPGLRenderBuffer mSceneNormalBuf; - PPGLFrameBuffer mSceneFB; - PPGLFrameBuffer mSceneDataFB; - bool mSceneUsesTextures = false; - - // Effect/HUD buffers - PPGLTexture mPipelineTexture[NumPipelineTextures]; - PPGLFrameBuffer mPipelineFB[NumPipelineTextures]; - - // Eye buffers - TArray mEyeTextures; - TArray mEyeFBs; - int mCurrentEye = 0; - - // Shadow map texture - PPGLTexture mShadowMapTexture; - PPGLFrameBuffer mShadowMapFB; - int mCurrentShadowMapSize = 0; - - PPGLTexture mDitherTexture; - - static bool FailedCreate; - - friend class GLPPRenderState; -}; - -} diff --git a/src/common/rendering/gl/gl_renderer.cpp b/src/common/rendering/gl/gl_renderer.cpp deleted file mode 100644 index 305ee0a97..000000000 --- a/src/common/rendering/gl/gl_renderer.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/* -** gl_renderer.cpp -** Renderer interface -** -**--------------------------------------------------------------------------- -** Copyright 2005-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#include "gl_system.h" -#include "files.h" -#include "v_video.h" -#include "m_png.h" -#include "filesystem.h" -#include "i_time.h" -#include "cmdlib.h" -#include "version.h" -#include "gl_interface.h" -#include "gl_framebuffer.h" -#include "hw_cvars.h" -#include "gl_debug.h" -#include "gl_renderer.h" -#include "gl_renderstate.h" -#include "gl_renderbuffers.h" -#include "gl_shaderprogram.h" -#include "flatvertices.h" -#include "gl_samplers.h" -#include "hw_lightbuffer.h" -#include "r_videoscale.h" -#include "model.h" -#include "gl_postprocessstate.h" -#include "gl_buffers.h" -#include "texturemanager.h" - -EXTERN_CVAR(Int, screenblocks) - -namespace OpenGLRenderer -{ - -//=========================================================================== -// -// Renderer interface -// -//=========================================================================== - -//----------------------------------------------------------------------------- -// -// Initialize -// -//----------------------------------------------------------------------------- - -FGLRenderer::FGLRenderer(OpenGLFrameBuffer *fb) -{ - framebuffer = fb; -} - -void FGLRenderer::Initialize(int width, int height) -{ - mScreenBuffers = new FGLRenderBuffers(); - mSaveBuffers = new FGLRenderBuffers(); - mBuffers = mScreenBuffers; - mPresentShader = new FPresentShader(); - mPresent3dCheckerShader = new FPresent3DCheckerShader(); - mPresent3dColumnShader = new FPresent3DColumnShader(); - mPresent3dRowShader = new FPresent3DRowShader(); - mShadowMapShader = new FShadowMapShader(); - - // needed for the core profile, because someone decided it was a good idea to remove the default VAO. - glGenVertexArrays(1, &mVAOID); - glBindVertexArray(mVAOID); - FGLDebug::LabelObject(GL_VERTEX_ARRAY, mVAOID, "FGLRenderer.mVAOID"); - - mFBID = 0; - mOldFBID = 0; - - mShaderManager = new FShaderManager; - mSamplerManager = new FSamplerManager; -} - -FGLRenderer::~FGLRenderer() -{ - FlushModels(); - TexMan.FlushAll(); - if (mShaderManager != nullptr) delete mShaderManager; - if (mSamplerManager != nullptr) delete mSamplerManager; - if (mFBID != 0) glDeleteFramebuffers(1, &mFBID); - if (mVAOID != 0) - { - glBindVertexArray(0); - glDeleteVertexArrays(1, &mVAOID); - } - if (mBuffers) delete mBuffers; - if (mSaveBuffers) delete mSaveBuffers; - if (mPresentShader) delete mPresentShader; - if (mPresent3dCheckerShader) delete mPresent3dCheckerShader; - if (mPresent3dColumnShader) delete mPresent3dColumnShader; - if (mPresent3dRowShader) delete mPresent3dRowShader; - if (mShadowMapShader) delete mShadowMapShader; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -bool FGLRenderer::StartOffscreen() -{ - bool firstBind = (mFBID == 0); - if (mFBID == 0) - glGenFramebuffers(1, &mFBID); - glGetIntegerv(GL_FRAMEBUFFER_BINDING, &mOldFBID); - glBindFramebuffer(GL_FRAMEBUFFER, mFBID); - if (firstBind) - FGLDebug::LabelObject(GL_FRAMEBUFFER, mFBID, "OffscreenFB"); - return true; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::EndOffscreen() -{ - glBindFramebuffer(GL_FRAMEBUFFER, mOldFBID); -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::BindToFrameBuffer(FTexture *tex) -{ - auto BaseLayer = static_cast(tex->GetHardwareTexture(0, 0)); - // must create the hardware texture first - BaseLayer->BindOrCreate(tex, 0, 0, 0, 0); - FHardwareTexture::Unbind(0); - gl_RenderState.ClearLastMaterial(); - BaseLayer->BindToFrameBuffer(tex->GetWidth(), tex->GetHeight()); -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::BeginFrame() -{ - mScreenBuffers->Setup(screen->mScreenViewport.width, screen->mScreenViewport.height, screen->mSceneViewport.width, screen->mSceneViewport.height); - mSaveBuffers->Setup(SAVEPICWIDTH, SAVEPICHEIGHT, SAVEPICWIDTH, SAVEPICHEIGHT); -} - -} diff --git a/src/common/rendering/gl/gl_renderer.h b/src/common/rendering/gl/gl_renderer.h deleted file mode 100644 index cb276d8bc..000000000 --- a/src/common/rendering/gl/gl_renderer.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef __GL_RENDERER_H -#define __GL_RENDERER_H - -#include "v_video.h" -#include "vectors.h" -#include "matrix.h" -#include "gl_renderbuffers.h" -#include - -#ifdef _MSC_VER -#pragma warning(disable:4244) -#endif - -struct particle_t; -class FCanvasTexture; -class FFlatVertexBuffer; -class FSkyVertexBuffer; -class HWPortal; -class FLightBuffer; -class DPSprite; -class FGLRenderBuffers; -class FGL2DDrawer; -class SWSceneDrawer; -class HWViewpointBuffer; -struct FRenderViewpoint; - -namespace OpenGLRenderer -{ - class FHardwareTexture; - class FShaderManager; - class FSamplerManager; - class OpenGLFrameBuffer; - class FPresentShaderBase; - class FPresentShader; - class FPresent3DCheckerShader; - class FPresent3DColumnShader; - class FPresent3DRowShader; - class FShadowMapShader; - -class FGLRenderer -{ -public: - - OpenGLFrameBuffer *framebuffer; - int mMirrorCount = 0; - int mPlaneMirrorCount = 0; - FShaderManager *mShaderManager = nullptr; - FSamplerManager *mSamplerManager = nullptr; - unsigned int mFBID; - unsigned int mVAOID; - unsigned int mStencilValue = 0; - - int mOldFBID; - - FGLRenderBuffers *mBuffers = nullptr; - FGLRenderBuffers *mScreenBuffers = nullptr; - FGLRenderBuffers *mSaveBuffers = nullptr; - FPresentShader *mPresentShader = nullptr; - FPresent3DCheckerShader *mPresent3dCheckerShader = nullptr; - FPresent3DColumnShader *mPresent3dColumnShader = nullptr; - FPresent3DRowShader *mPresent3dRowShader = nullptr; - FShadowMapShader *mShadowMapShader = nullptr; - - int mLightMapID = 0; - - //FRotator mAngles; - - FGLRenderer(OpenGLFrameBuffer *fb); - ~FGLRenderer() ; - - void Initialize(int width, int height); - - void ClearBorders(); - - void PresentStereo(); - void RenderScreenQuad(); - void PostProcessScene(int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D); - void AmbientOccludeScene(float m5); - void ClearTonemapPalette(); - void BlurScene(float gameinfobluramount); - void CopyToBackbuffer(const IntRect *bounds, bool applyGamma); - void DrawPresentTexture(const IntRect &box, bool applyGamma); - void Flush(); - void BeginFrame(); - - bool StartOffscreen(); - void EndOffscreen(); - - void BindToFrameBuffer(FTexture* tex); - -private: - - bool QuadStereoCheckInitialRenderContextState(); - void PresentAnaglyph(bool r, bool g, bool b); - void PresentSideBySide(int); - void PresentTopBottom(); - void prepareInterleavedPresent(FPresentShaderBase& shader); - void PresentColumnInterleaved(); - void PresentRowInterleaved(); - void PresentCheckerInterleaved(); - void PresentQuadStereo(); - -}; - -struct TexFilter_s -{ - int minfilter; - int magfilter; - bool mipmapping; -} ; - - -extern FGLRenderer *GLRenderer; - -} -#endif diff --git a/src/common/rendering/gl/gl_renderstate.cpp b/src/common/rendering/gl/gl_renderstate.cpp deleted file mode 100644 index 10baa3e66..000000000 --- a/src/common/rendering/gl/gl_renderstate.cpp +++ /dev/null @@ -1,612 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2009-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_renderstate.cpp -** Render state maintenance -** -*/ - - -#include "gl_system.h" -#include "gl_interface.h" -#include "hw_cvars.h" -#include "flatvertices.h" -#include "gl_shader.h" -#include "gl_renderer.h" -#include "hw_lightbuffer.h" -#include "hw_bonebuffer.h" -#include "gl_renderbuffers.h" -#include "gl_hwtexture.h" -#include "gl_buffers.h" -#include "hw_clock.h" -#include "hwrenderer/data/hw_viewpointbuffer.h" - -namespace OpenGLRenderer -{ - -FGLRenderState gl_RenderState; - -static VSMatrix identityMatrix(1); - -static void matrixToGL(const VSMatrix &mat, int loc) -{ - glUniformMatrix4fv(loc, 1, false, (float*)&mat); -} - -//========================================================================== -// -// This only gets called once upon setup. -// With OpenGL the state is persistent and cannot be cleared, once set up. -// -//========================================================================== - -void FGLRenderState::Reset() -{ - FRenderState::Reset(); - mVertexBuffer = mCurrentVertexBuffer = nullptr; - mGlossiness = 0.0f; - mSpecularLevel = 0.0f; - mShaderTimer = 0.0f; - - stRenderStyle = DefaultRenderStyle(); - stSrcBlend = stDstBlend = -1; - stBlendEquation = -1; - stAlphaTest = 0; - mLastDepthClamp = true; - - mEffectState = 0; - activeShader = nullptr; - - mCurrentVertexBuffer = nullptr; - mCurrentVertexOffsets[0] = mVertexOffsets[0] = 0; - mCurrentIndexBuffer = nullptr; - -} - -//========================================================================== -// -// Apply shader settings -// -//========================================================================== - -bool FGLRenderState::ApplyShader() -{ - static const float nulvec[] = { 0.f, 0.f, 0.f, 0.f }; - if (mSpecialEffect > EFF_NONE) - { - activeShader = GLRenderer->mShaderManager->BindEffect(mSpecialEffect, mPassType); - } - else - { - activeShader = GLRenderer->mShaderManager->Get(mTextureEnabled ? mEffectState : SHADER_NoTexture, mAlphaThreshold >= 0.f, mPassType); - activeShader->Bind(); - } - - int fogset = 0; - - if (mFogEnabled) - { - if (mFogEnabled == 2) - { - fogset = -3; // 2D rendering with 'foggy' overlay. - } - else if ((GetFogColor() & 0xffffff) == 0) - { - fogset = gl_fogmode; - } - else - { - fogset = -gl_fogmode; - } - } - - glVertexAttrib4fv(VATTR_COLOR, &mStreamData.uVertexColor.X); - glVertexAttrib4fv(VATTR_NORMAL, &mStreamData.uVertexNormal.X); - - activeShader->muDesaturation.Set(mStreamData.uDesaturationFactor); - activeShader->muFogEnabled.Set(fogset); - - activeShader->muTextureMode.Set(GetTextureModeAndFlags(mTempTM)); - activeShader->muLightParms.Set(mLightParms); - activeShader->muFogColor.Set(mStreamData.uFogColor); - activeShader->muObjectColor.Set(mStreamData.uObjectColor); - activeShader->muDynLightColor.Set(&mStreamData.uDynLightColor.X); - activeShader->muInterpolationFactor.Set(mStreamData.uInterpolationFactor); - activeShader->muTimer.Set((double)(screen->FrameTime - firstFrame) * (double)mShaderTimer / 1000.); - activeShader->muAlphaThreshold.Set(mAlphaThreshold); - activeShader->muLightIndex.Set(-1); - activeShader->muBoneIndexBase.Set(-1); - activeShader->muClipSplit.Set(mClipSplit); - activeShader->muSpecularMaterial.Set(mGlossiness, mSpecularLevel); - activeShader->muAddColor.Set(mStreamData.uAddColor); - activeShader->muTextureAddColor.Set(mStreamData.uTextureAddColor); - activeShader->muTextureModulateColor.Set(mStreamData.uTextureModulateColor); - activeShader->muTextureBlendColor.Set(mStreamData.uTextureBlendColor); - activeShader->muDetailParms.Set(&mStreamData.uDetailParms.X); -#ifdef NPOT_EMULATION - activeShader->muNpotEmulation.Set(&mStreamData.uNpotEmulation.X); -#endif - - if (mGlowEnabled || activeShader->currentglowstate) - { - activeShader->muGlowTopColor.Set(&mStreamData.uGlowTopColor.X); - activeShader->muGlowBottomColor.Set(&mStreamData.uGlowBottomColor.X); - activeShader->muGlowTopPlane.Set(&mStreamData.uGlowTopPlane.X); - activeShader->muGlowBottomPlane.Set(&mStreamData.uGlowBottomPlane.X); - activeShader->currentglowstate = mGlowEnabled; - } - - if (mGradientEnabled || activeShader->currentgradientstate) - { - activeShader->muObjectColor2.Set(mStreamData.uObjectColor2); - activeShader->muGradientTopPlane.Set(&mStreamData.uGradientTopPlane.X); - activeShader->muGradientBottomPlane.Set(&mStreamData.uGradientBottomPlane.X); - activeShader->currentgradientstate = mGradientEnabled; - } - - if (mSplitEnabled || activeShader->currentsplitstate) - { - activeShader->muSplitTopPlane.Set(&mStreamData.uSplitTopPlane.X); - activeShader->muSplitBottomPlane.Set(&mStreamData.uSplitBottomPlane.X); - activeShader->currentsplitstate = mSplitEnabled; - } - - - if (mTextureMatrixEnabled) - { - matrixToGL(mTextureMatrix, activeShader->texturematrix_index); - activeShader->currentTextureMatrixState = true; - } - else if (activeShader->currentTextureMatrixState) - { - activeShader->currentTextureMatrixState = false; - matrixToGL(identityMatrix, activeShader->texturematrix_index); - } - - if (mModelMatrixEnabled) - { - matrixToGL(mModelMatrix, activeShader->modelmatrix_index); - VSMatrix norm; - norm.computeNormalMatrix(mModelMatrix); - matrixToGL(norm, activeShader->normalmodelmatrix_index); - activeShader->currentModelMatrixState = true; - } - else if (activeShader->currentModelMatrixState) - { - activeShader->currentModelMatrixState = false; - matrixToGL(identityMatrix, activeShader->modelmatrix_index); - matrixToGL(identityMatrix, activeShader->normalmodelmatrix_index); - } - - int index = mLightIndex; - // Mess alert for crappy AncientGL! - if (!screen->mLights->GetBufferType() && index >= 0) - { - size_t start, size; - index = screen->mLights->GetBinding(index, &start, &size); - - if (start != mLastMappedLightIndex || screen->mPipelineNbr > 1) // If multiple buffers always bind - { - mLastMappedLightIndex = start; - static_cast(screen->mLights->GetBuffer())->BindRange(nullptr, start, size); - } - } - - activeShader->muLightIndex.Set(index); - - index = mBoneIndexBase; - if (!screen->mBones->GetBufferType() && index >= 0) // Uniform buffer fallback support - { - size_t start, size; - index = screen->mBones->GetBinding(index, &start, &size); - - if (start != mLastMappedBoneIndexBase || screen->mPipelineNbr > 1) // If multiple buffers always bind - { - mLastMappedBoneIndexBase = start; - static_cast(screen->mBones->GetBuffer())->BindRange(nullptr, start, size); - } - } - activeShader->muBoneIndexBase.Set(index); - - return true; -} - - -//========================================================================== -// -// Apply State -// -//========================================================================== - -void FGLRenderState::ApplyState() -{ - if (mRenderStyle != stRenderStyle) - { - ApplyBlendMode(); - stRenderStyle = mRenderStyle; - } - - if (mSplitEnabled != stSplitEnabled) - { - if (mSplitEnabled) - { - glEnable(GL_CLIP_DISTANCE3); - glEnable(GL_CLIP_DISTANCE4); - } - else - { - glDisable(GL_CLIP_DISTANCE3); - glDisable(GL_CLIP_DISTANCE4); - } - stSplitEnabled = mSplitEnabled; - } - - if (mMaterial.mChanged) - { - ApplyMaterial(mMaterial.mMaterial, mMaterial.mClampMode, mMaterial.mTranslation, mMaterial.mOverrideShader); - mMaterial.mChanged = false; - } - - if (mBias.mChanged) - { - if (mBias.mFactor == 0 && mBias.mUnits == 0) - { - glDisable(GL_POLYGON_OFFSET_FILL); - } - else - { - glEnable(GL_POLYGON_OFFSET_FILL); - } - glPolygonOffset(mBias.mFactor, mBias.mUnits); - mBias.mChanged = false; - } -} - -void FGLRenderState::ApplyBuffers() -{ - if (mVertexBuffer != mCurrentVertexBuffer || mVertexOffsets[0] != mCurrentVertexOffsets[0] || mVertexOffsets[1] != mCurrentVertexOffsets[1]) - { - assert(mVertexBuffer != nullptr); - static_cast(mVertexBuffer)->Bind(mVertexOffsets); - mCurrentVertexBuffer = mVertexBuffer; - mCurrentVertexOffsets[0] = mVertexOffsets[0]; - mCurrentVertexOffsets[1] = mVertexOffsets[1]; - } - if (mIndexBuffer != mCurrentIndexBuffer) - { - if (mIndexBuffer) static_cast(mIndexBuffer)->Bind(); - mCurrentIndexBuffer = mIndexBuffer; - } -} - -void FGLRenderState::Apply() -{ - ApplyState(); - ApplyBuffers(); - ApplyShader(); -} - -//=========================================================================== -// -// Binds a texture to the renderer -// -//=========================================================================== - -void FGLRenderState::ApplyMaterial(FMaterial *mat, int clampmode, int translation, int overrideshader) -{ - if (mat->Source()->isHardwareCanvas()) - { - mTempTM = TM_OPAQUE; - } - else - { - mTempTM = TM_NORMAL; - } - auto tex = mat->Source(); - mEffectState = overrideshader >= 0 ? overrideshader : mat->GetShaderIndex(); - mShaderTimer = tex->GetShaderSpeed(); - SetSpecular(tex->GetGlossiness(), tex->GetSpecularLevel()); - if (tex->isHardwareCanvas()) static_cast(tex->GetTexture())->NeedUpdate(); - - clampmode = tex->GetClampMode(clampmode); - - // avoid rebinding the same texture multiple times. - if (mat == lastMaterial && lastClamp == clampmode && translation == lastTranslation) return; - lastMaterial = mat; - lastClamp = clampmode; - lastTranslation = translation; - - int maxbound = 0; - - int numLayers = mat->NumLayers(); - MaterialLayerInfo* layer; - auto base = static_cast(mat->GetLayer(0, translation, &layer)); - - if (base->BindOrCreate(tex->GetTexture(), 0, clampmode, translation, layer->scaleFlags)) - { - if (!(layer->scaleFlags & CTF_Indexed)) - { - for (int i = 1; i < numLayers; i++) - { - auto systex = static_cast(mat->GetLayer(i, 0, &layer)); - // fixme: Upscale flags must be disabled for certain layers. - systex->BindOrCreate(layer->layerTexture, i, clampmode, 0, layer->scaleFlags); - maxbound = i; - } - } - else - { - for (int i = 1; i < 3; i++) - { - auto systex = static_cast(mat->GetLayer(i, translation, &layer)); - systex->Bind(i, false); - maxbound = i; - } - } - } - // unbind everything from the last texture that's still active - for (int i = maxbound + 1; i <= maxBoundMaterial; i++) - { - FHardwareTexture::Unbind(i); - maxBoundMaterial = maxbound; - } -} - -//========================================================================== -// -// Apply blend mode from RenderStyle -// -//========================================================================== - -void FGLRenderState::ApplyBlendMode() -{ - static int blendstyles[] = { GL_ZERO, GL_ONE, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA }; - static int renderops[] = { 0, GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 }; - - int srcblend = blendstyles[mRenderStyle.SrcAlpha%STYLEALPHA_MAX]; - int dstblend = blendstyles[mRenderStyle.DestAlpha%STYLEALPHA_MAX]; - int blendequation = renderops[mRenderStyle.BlendOp & 15]; - - if (blendequation == -1) // This was a fuzz style. - { - srcblend = GL_DST_COLOR; - dstblend = GL_ONE_MINUS_SRC_ALPHA; - blendequation = GL_FUNC_ADD; - } - - // Checks must be disabled until all draw code has been converted. - //if (srcblend != stSrcBlend || dstblend != stDstBlend) - { - stSrcBlend = srcblend; - stDstBlend = dstblend; - glBlendFunc(srcblend, dstblend); - } - //if (blendequation != stBlendEquation) - { - stBlendEquation = blendequation; - glBlendEquation(blendequation); - } - -} - -//========================================================================== -// -// API dependent draw calls -// -//========================================================================== - -static int dt2gl[] = { GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP }; - -void FGLRenderState::Draw(int dt, int index, int count, bool apply) -{ - if (apply) - { - Apply(); - } - drawcalls.Clock(); - glDrawArrays(dt2gl[dt], index, count); - drawcalls.Unclock(); -} - -void FGLRenderState::DrawIndexed(int dt, int index, int count, bool apply) -{ - if (apply) - { - Apply(); - } - drawcalls.Clock(); - glDrawElements(dt2gl[dt], count, GL_UNSIGNED_INT, (void*)(intptr_t)(index * sizeof(uint32_t))); - drawcalls.Unclock(); -} - -void FGLRenderState::SetDepthMask(bool on) -{ - glDepthMask(on); -} - -void FGLRenderState::SetDepthFunc(int func) -{ - static int df2gl[] = { GL_LESS, GL_LEQUAL, GL_ALWAYS }; - glDepthFunc(df2gl[func]); -} - -void FGLRenderState::SetDepthRange(float min, float max) -{ - glDepthRange(min, max); -} - -void FGLRenderState::SetColorMask(bool r, bool g, bool b, bool a) -{ - glColorMask(r, g, b, a); -} - -void FGLRenderState::SetStencil(int offs, int op, int flags = -1) -{ - static int op2gl[] = { GL_KEEP, GL_INCR, GL_DECR }; - - glStencilFunc(GL_EQUAL, screen->stencilValue + offs, ~0); // draw sky into stencil - glStencilOp(GL_KEEP, GL_KEEP, op2gl[op]); // this stage doesn't modify the stencil - - if (flags != -1) - { - bool cmon = !(flags & SF_ColorMaskOff); - glColorMask(cmon, cmon, cmon, cmon); // don't write to the graphics buffer - glDepthMask(!(flags & SF_DepthMaskOff)); - } -} - -void FGLRenderState::ToggleState(int state, bool on) -{ - if (on) - { - glEnable(state); - } - else - { - glDisable(state); - } -} - -void FGLRenderState::SetCulling(int mode) -{ - if (mode != Cull_None) - { - glEnable(GL_CULL_FACE); - glFrontFace(mode == Cull_CCW ? GL_CCW : GL_CW); - } - else - { - glDisable(GL_CULL_FACE); - } -} - -void FGLRenderState::EnableClipDistance(int num, bool state) -{ - // Update the viewpoint-related clip plane setting. - if (!(gl.flags & RFL_NO_CLIP_PLANES)) - { - ToggleState(GL_CLIP_DISTANCE0 + num, state); - } -} - -void FGLRenderState::Clear(int targets) -{ - // This always clears to default values. - int gltarget = 0; - if (targets & CT_Depth) - { - gltarget |= GL_DEPTH_BUFFER_BIT; - glClearDepth(1); - } - if (targets & CT_Stencil) - { - gltarget |= GL_STENCIL_BUFFER_BIT; - glClearStencil(0); - } - if (targets & CT_Color) - { - gltarget |= GL_COLOR_BUFFER_BIT; - glClearColor(screen->mSceneClearColor[0], screen->mSceneClearColor[1], screen->mSceneClearColor[2], screen->mSceneClearColor[3]); - } - glClear(gltarget); -} - -void FGLRenderState::EnableStencil(bool on) -{ - ToggleState(GL_STENCIL_TEST, on); -} - -void FGLRenderState::SetScissor(int x, int y, int w, int h) -{ - if (w > -1) - { - glEnable(GL_SCISSOR_TEST); - glScissor(x, y, w, h); - } - else - { - glDisable(GL_SCISSOR_TEST); - } -} - -void FGLRenderState::SetViewport(int x, int y, int w, int h) -{ - glViewport(x, y, w, h); -} - -void FGLRenderState::EnableDepthTest(bool on) -{ - ToggleState(GL_DEPTH_TEST, on); -} - -void FGLRenderState::EnableMultisampling(bool on) -{ - ToggleState(GL_MULTISAMPLE, on); -} - -void FGLRenderState::EnableLineSmooth(bool on) -{ - ToggleState(GL_LINE_SMOOTH, on); -} - -//========================================================================== -// -// -// -//========================================================================== -void FGLRenderState::ClearScreen() -{ - bool multi = !!glIsEnabled(GL_MULTISAMPLE); - - screen->mViewpoints->Set2D(*this, SCREENWIDTH, SCREENHEIGHT); - SetColor(0, 0, 0); - Apply(); - - glDisable(GL_MULTISAMPLE); - glDisable(GL_DEPTH_TEST); - - glDrawArrays(GL_TRIANGLE_STRIP, FFlatVertexBuffer::FULLSCREEN_INDEX, 4); - - glEnable(GL_DEPTH_TEST); - if (multi) glEnable(GL_MULTISAMPLE); -} - - - -//========================================================================== -// -// Below are less frequently altrered state settings which do not get -// buffered by the state object, but set directly instead. -// -//========================================================================== - -bool FGLRenderState::SetDepthClamp(bool on) -{ - bool res = mLastDepthClamp; - if (!on) glDisable(GL_DEPTH_CLAMP); - else glEnable(GL_DEPTH_CLAMP); - mLastDepthClamp = on; - return res; -} - -} diff --git a/src/common/rendering/gl/gl_renderstate.h b/src/common/rendering/gl/gl_renderstate.h deleted file mode 100644 index b89a02ad8..000000000 --- a/src/common/rendering/gl/gl_renderstate.h +++ /dev/null @@ -1,150 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2009-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// - -#ifndef __GL_RENDERSTATE_H -#define __GL_RENDERSTATE_H - -#include -#include -#include "gl_interface.h" -#include "matrix.h" -#include "hw_renderstate.h" -#include "hw_material.h" -#include "c_cvars.h" - -namespace OpenGLRenderer -{ - -class FShader; -struct HWSectorPlane; - -class FGLRenderState final : public FRenderState -{ - uint8_t mLastDepthClamp : 1; - - float mGlossiness, mSpecularLevel; - float mShaderTimer; - - int mEffectState; - int mTempTM = TM_NORMAL; - - FRenderStyle stRenderStyle; - int stSrcBlend, stDstBlend; - bool stAlphaTest; - bool stSplitEnabled; - int stBlendEquation; - - FShader *activeShader; - - int mNumDrawBuffers = 1; - - bool ApplyShader(); - void ApplyState(); - - // Texture binding state - FMaterial *lastMaterial = nullptr; - int lastClamp = 0; - int lastTranslation = 0; - int maxBoundMaterial = -1; - size_t mLastMappedLightIndex = SIZE_MAX; - size_t mLastMappedBoneIndexBase = SIZE_MAX; - - IVertexBuffer *mCurrentVertexBuffer; - int mCurrentVertexOffsets[2]; // one per binding point - IIndexBuffer *mCurrentIndexBuffer; - - -public: - - FGLRenderState() - { - Reset(); - } - - void Reset(); - - void ClearLastMaterial() - { - lastMaterial = nullptr; - } - - void ApplyMaterial(FMaterial *mat, int clampmode, int translation, int overrideshader); - - void Apply(); - void ApplyBuffers(); - void ApplyBlendMode(); - - void ResetVertexBuffer() - { - // forces rebinding with the next 'apply' call. - mCurrentVertexBuffer = nullptr; - mCurrentIndexBuffer = nullptr; - } - - void SetSpecular(float glossiness, float specularLevel) - { - mGlossiness = glossiness; - mSpecularLevel = specularLevel; - } - - void EnableDrawBuffers(int count, bool apply = false) override - { - count = min(count, 3); - if (mNumDrawBuffers != count) - { - static GLenum buffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2 }; - glDrawBuffers(count, buffers); - mNumDrawBuffers = count; - } - if (apply) Apply(); - } - - void ToggleState(int state, bool on); - - void ClearScreen() override; - void Draw(int dt, int index, int count, bool apply = true) override; - void DrawIndexed(int dt, int index, int count, bool apply = true) override; - - bool SetDepthClamp(bool on) override; - void SetDepthMask(bool on) override; - void SetDepthFunc(int func) override; - void SetDepthRange(float min, float max) override; - void SetColorMask(bool r, bool g, bool b, bool a) override; - void SetStencil(int offs, int op, int flags) override; - void SetCulling(int mode) override; - void EnableClipDistance(int num, bool state) override; - void Clear(int targets) override; - void EnableStencil(bool on) override; - void SetScissor(int x, int y, int w, int h) override; - void SetViewport(int x, int y, int w, int h) override; - void EnableDepthTest(bool on) override; - void EnableMultisampling(bool on) override; - void EnableLineSmooth(bool on) override; - - -}; - -extern FGLRenderState gl_RenderState; - -} - -#endif diff --git a/src/common/rendering/gl/gl_samplers.cpp b/src/common/rendering/gl/gl_samplers.cpp deleted file mode 100644 index 5ed7cbc19..000000000 --- a/src/common/rendering/gl/gl_samplers.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/* -** gl_samplers.cpp -** -** Texture sampler handling -** -**--------------------------------------------------------------------------- -** Copyright 2015-2019 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ -#include "gl_system.h" -#include "c_cvars.h" - -#include "gl_interface.h" -#include "hw_cvars.h" -#include "gl_debug.h" -#include "gl_renderer.h" -#include "gl_samplers.h" -#include "hw_material.h" -#include "i_interface.h" - -namespace OpenGLRenderer -{ - -extern TexFilter_s TexFilter[]; - - -FSamplerManager::FSamplerManager() -{ - glGenSamplers(NUMSAMPLERS, mSamplers); - - glSamplerParameteri(mSamplers[CLAMP_X], GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_Y], GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_XY], GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_XY], GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_NOFILTER_X], GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_NOFILTER_Y], GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_NOFILTER_XY], GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_NOFILTER_XY], GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - for (int i = CLAMP_NOFILTER; i <= CLAMP_NOFILTER_XY; i++) - { - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glSamplerParameterf(mSamplers[i], GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.f); - - } - - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glSamplerParameterf(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.f); - glSamplerParameterf(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.f); - - SetTextureFilterMode(); - - - for (int i = 0; i < NUMSAMPLERS; i++) - { - FString name; - name.Format("mSamplers[%d]", i); - FGLDebug::LabelObject(GL_SAMPLER, mSamplers[i], name.GetChars()); - } -} - -FSamplerManager::~FSamplerManager() -{ - UnbindAll(); - glDeleteSamplers(NUMSAMPLERS, mSamplers); -} - -void FSamplerManager::UnbindAll() -{ - for (int i = 0; i < IHardwareTexture::MAX_TEXTURES; i++) - { - glBindSampler(i, 0); - } -} - -uint8_t FSamplerManager::Bind(int texunit, int num, int lastval) -{ - unsigned int samp = mSamplers[num]; - glBindSampler(texunit, samp); - return 255; -} - - -void FSamplerManager::SetTextureFilterMode() -{ - GLint bounds[IHardwareTexture::MAX_TEXTURES]; - - // Unbind all - for(int i = IHardwareTexture::MAX_TEXTURES-1; i >= 0; i--) - { - glActiveTexture(GL_TEXTURE0 + i); - glGetIntegerv(GL_SAMPLER_BINDING, &bounds[i]); - glBindSampler(i, 0); - } - - int filter = sysCallbacks.DisableTextureFilter && sysCallbacks.DisableTextureFilter() ? 0 : gl_texture_filter; - - for (int i = 0; i < 4; i++) - { - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - glSamplerParameterf(mSamplers[i], GL_TEXTURE_MAX_ANISOTROPY_EXT, filter > 0? gl_texture_filter_anisotropic : 1.0); - } - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - for(int i = 0; i < IHardwareTexture::MAX_TEXTURES; i++) - { - glBindSampler(i, bounds[i]); - } -} - - -} diff --git a/src/common/rendering/gl/gl_samplers.h b/src/common/rendering/gl/gl_samplers.h deleted file mode 100644 index 109f910a5..000000000 --- a/src/common/rendering/gl/gl_samplers.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __GL_SAMPLERS_H -#define __GL_SAMPLERS_H - -#include "gl_hwtexture.h" -#include "textures.h" - -namespace OpenGLRenderer -{ - - -class FSamplerManager -{ - unsigned int mSamplers[NUMSAMPLERS]; - - void UnbindAll(); - -public: - - FSamplerManager(); - ~FSamplerManager(); - - uint8_t Bind(int texunit, int num, int lastval); - void SetTextureFilterMode(); - - -}; - -} -#endif - diff --git a/src/common/rendering/gl/gl_shader.cpp b/src/common/rendering/gl/gl_shader.cpp deleted file mode 100644 index d1b6aee54..000000000 --- a/src/common/rendering/gl/gl_shader.cpp +++ /dev/null @@ -1,949 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2004-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_shader.cpp -** -** GLSL shader handling -** -*/ - -#include "gl_system.h" -#include "c_cvars.h" -#include "v_video.h" -#include "filesystem.h" -#include "engineerrors.h" -#include "cmdlib.h" -#include "md5.h" -#include "gl_shader.h" -#include "hw_shaderpatcher.h" -#include "shaderuniforms.h" -#include "hw_viewpointuniforms.h" -#include "hw_lightbuffer.h" -#include "hw_bonebuffer.h" -#include "i_specialpaths.h" -#include "printf.h" -#include "version.h" - -#include "gl_interface.h" -#include "gl_debug.h" -#include "matrix.h" -#include "gl_renderer.h" -#include -#include - -EXTERN_CVAR(Bool, r_skipmats) - -namespace OpenGLRenderer -{ - -struct ProgramBinary -{ - uint32_t format; - TArray data; -}; - -static const char *ShaderMagic = "ZDSC"; - -static std::map> ShaderCache; // Not a TMap because it doesn't support unique_ptr move semantics - -bool IsShaderCacheActive() -{ - static bool active = true; - static bool firstcall = true; - - if (firstcall) - { - const char *vendor = (const char *)glGetString(GL_VENDOR); - active = !(strstr(vendor, "Intel") == nullptr); - firstcall = false; - } - return active; -} - -static FString CalcProgramBinaryChecksum(const FString &vertex, const FString &fragment) -{ - const GLubyte *vendor = glGetString(GL_VENDOR); - const GLubyte *renderer = glGetString(GL_RENDERER); - const GLubyte *version = glGetString(GL_VERSION); - - uint8_t digest[16]; - MD5Context md5; - md5.Update(vendor, (unsigned int)strlen((const char*)vendor)); - md5.Update(renderer, (unsigned int)strlen((const char*)renderer)); - md5.Update(version, (unsigned int)strlen((const char*)version)); - md5.Update((const uint8_t *)vertex.GetChars(), (unsigned int)vertex.Len()); - md5.Update((const uint8_t *)fragment.GetChars(), (unsigned int)fragment.Len()); - md5.Final(digest); - - char hexdigest[33]; - for (int i = 0; i < 16; i++) - { - int v = digest[i] >> 4; - hexdigest[i * 2] = v < 10 ? ('0' + v) : ('a' + v - 10); - v = digest[i] & 15; - hexdigest[i * 2 + 1] = v < 10 ? ('0' + v) : ('a' + v - 10); - } - hexdigest[32] = 0; - return hexdigest; -} - -static FString CreateProgramCacheName(bool create) -{ - FString path = M_GetCachePath(create); - if (create) CreatePath(path); - path << "/shadercache.zdsc"; - return path; -} - -static void LoadShaders() -{ - static bool loaded = false; - if (loaded) - return; - loaded = true; - - try - { - FString path = CreateProgramCacheName(false); - FileReader fr; - if (!fr.OpenFile(path)) - I_Error("Could not open shader file"); - - char magic[4]; - fr.Read(magic, 4); - if (memcmp(magic, ShaderMagic, 4) != 0) - I_Error("Not a shader cache file"); - - uint32_t count = fr.ReadUInt32(); - if (count > 512) - I_Error("Too many shaders cached"); - - for (uint32_t i = 0; i < count; i++) - { - char hexdigest[33]; - if (fr.Read(hexdigest, 32) != 32) - I_Error("Read error"); - hexdigest[32] = 0; - - std::unique_ptr binary(new ProgramBinary()); - binary->format = fr.ReadUInt32(); - uint32_t size = fr.ReadUInt32(); - if (size > 1024 * 1024) - I_Error("Shader too big, probably file corruption"); - - binary->data.Resize(size); - if (fr.Read(binary->data.Data(), binary->data.Size()) != binary->data.Size()) - I_Error("Read error"); - - ShaderCache[hexdigest] = std::move(binary); - } - } - catch (...) - { - ShaderCache.clear(); - } -} - -static void SaveShaders() -{ - FString path = CreateProgramCacheName(true); - std::unique_ptr fw(FileWriter::Open(path)); - if (fw) - { - uint32_t count = (uint32_t)ShaderCache.size(); - fw->Write(ShaderMagic, 4); - fw->Write(&count, sizeof(uint32_t)); - for (const auto &it : ShaderCache) - { - uint32_t size = it.second->data.Size(); - fw->Write(it.first.GetChars(), 32); - fw->Write(&it.second->format, sizeof(uint32_t)); - fw->Write(&size, sizeof(uint32_t)); - fw->Write(it.second->data.Data(), it.second->data.Size()); - } - } -} - -TArray LoadCachedProgramBinary(const FString &vertex, const FString &fragment, uint32_t &binaryFormat) -{ - LoadShaders(); - - auto it = ShaderCache.find(CalcProgramBinaryChecksum(vertex, fragment)); - if (it != ShaderCache.end()) - { - binaryFormat = it->second->format; - return it->second->data; - } - else - { - binaryFormat = 0; - return {}; - } -} - -void SaveCachedProgramBinary(const FString &vertex, const FString &fragment, const TArray &binary, uint32_t binaryFormat) -{ - auto &entry = ShaderCache[CalcProgramBinaryChecksum(vertex, fragment)]; - entry.reset(new ProgramBinary()); - entry->format = binaryFormat; - entry->data = binary; - - SaveShaders(); -} - -bool FShader::Load(const char * name, const char * vert_prog_lump, const char * frag_prog_lump, const char * proc_prog_lump, const char * light_fragprog, const char * defines) -{ - static char buffer[10000]; - FString error; - - FString i_data = R"( - // these settings are actually pointless but there seem to be some old ATI drivers that fail to compile the shader without setting the precision here. - precision highp int; - precision highp float; - - // This must match the HWViewpointUniforms struct - layout(std140) uniform ViewpointUBO { - mat4 ProjectionMatrix; - mat4 ViewMatrix; - mat4 NormalViewMatrix; - - vec4 uCameraPos; - vec4 uClipLine; - - float uGlobVis; // uGlobVis = R_GetGlobVis(r_visibility) / 32.0 - int uPalLightLevels; - int uViewHeight; // Software fuzz scaling - float uClipHeight; - float uClipHeightDirection; - int uShadowmapFilter; - - int uLightBlendMode; - }; - - uniform int uTextureMode; - uniform vec2 uClipSplit; - uniform float uAlphaThreshold; - - // colors - uniform vec4 uObjectColor; - uniform vec4 uObjectColor2; - uniform vec4 uDynLightColor; - uniform vec4 uAddColor; - uniform vec4 uTextureBlendColor; - uniform vec4 uTextureModulateColor; - uniform vec4 uTextureAddColor; - uniform vec4 uFogColor; - uniform float uDesaturationFactor; - uniform float uInterpolationFactor; - - // Glowing walls stuff - uniform vec4 uGlowTopPlane; - uniform vec4 uGlowTopColor; - uniform vec4 uGlowBottomPlane; - uniform vec4 uGlowBottomColor; - - uniform vec4 uGradientTopPlane; - uniform vec4 uGradientBottomPlane; - - uniform vec4 uSplitTopPlane; - uniform vec4 uSplitBottomPlane; - - uniform vec4 uDetailParms; - // Lighting + Fog - uniform vec4 uLightAttr; - #define uLightLevel uLightAttr.a - #define uFogDensity uLightAttr.b - #define uLightFactor uLightAttr.g - #define uLightDist uLightAttr.r - uniform int uFogEnabled; - - // dynamic lights - uniform int uLightIndex; - - // bone animation - uniform int uBoneIndexBase; - - // Blinn glossiness and specular level - uniform vec2 uSpecularMaterial; - - // matrices - uniform mat4 ModelMatrix; - uniform mat4 NormalModelMatrix; - uniform mat4 TextureMatrix; - - // light buffers - #ifdef SHADER_STORAGE_LIGHTS - layout(std430, binding = 1) buffer LightBufferSSO - { - vec4 lights[]; - }; - #elif defined NUM_UBO_LIGHTS - uniform LightBufferUBO - { - vec4 lights[NUM_UBO_LIGHTS]; - }; - #endif - - // bone matrix buffers - #ifdef SHADER_STORAGE_BONES - layout(std430, binding = 7) buffer BoneBufferSSO - { - mat4 bones[]; - }; - #elif defined NUM_UBO_BONES - uniform BoneBufferUBO - { - mat4 bones[NUM_UBO_BONES]; - }; - #endif - - // textures - uniform sampler2D tex; - uniform sampler2D ShadowMap; - uniform sampler2DArray LightMap; - uniform sampler2D texture2; - uniform sampler2D texture3; - uniform sampler2D texture4; - uniform sampler2D texture5; - uniform sampler2D texture6; - uniform sampler2D texture7; - uniform sampler2D texture8; - uniform sampler2D texture9; - uniform sampler2D texture10; - uniform sampler2D texture11; - uniform sampler2D texture12; - - // timer data - uniform float timer; - - // material types - #if defined(SPECULAR) - #define normaltexture texture2 - #define speculartexture texture3 - #define brighttexture texture4 - #define detailtexture texture5 - #define glowtexture texture6 - #elif defined(PBR) - #define normaltexture texture2 - #define metallictexture texture3 - #define roughnesstexture texture4 - #define aotexture texture5 - #define brighttexture texture6 - #define detailtexture texture7 - #define glowtexture texture8 - #else - #define brighttexture texture2 - #define detailtexture texture3 - #define glowtexture texture4 - #endif - - )"; - - -#ifdef __APPLE__ - // The noise functions are completely broken in macOS OpenGL drivers - // Garbage values are returned, and their infrequent usage causes extreme slowdown - // Also, these functions must return zeroes since GLSL 4.4 - i_data += "#define noise1(unused) 0.0\n"; - i_data += "#define noise2(unused) vec2(0)\n"; - i_data += "#define noise3(unused) vec3(0)\n"; - i_data += "#define noise4(unused) vec4(0)\n"; -#endif // __APPLE__ - -#ifdef NPOT_EMULATION - i_data += "#define NPOT_EMULATION\nuniform vec2 uNpotEmulation;\n"; -#endif - - int vp_lump = fileSystem.CheckNumForFullName(vert_prog_lump, 0); - if (vp_lump == -1) I_Error("Unable to load '%s'", vert_prog_lump); - FileData vp_data = fileSystem.ReadFile(vp_lump); - - int fp_lump = fileSystem.CheckNumForFullName(frag_prog_lump, 0); - if (fp_lump == -1) I_Error("Unable to load '%s'", frag_prog_lump); - FileData fp_data = fileSystem.ReadFile(fp_lump); - - - -// -// The following code uses GetChars on the strings to get rid of terminating 0 characters. Do not remove or the code may break! -// - FString vp_comb; - - assert(screen->mLights != NULL); - assert(screen->mBones != NULL); - - - if ((gl.flags & RFL_SHADER_STORAGE_BUFFER) && screen->allowSSBO()) - vp_comb << "#version 430 core\n#define SUPPORTS_SHADOWMAPS\n"; - else - vp_comb << "#version 330 core\n"; - - bool lightbuffertype = screen->mLights->GetBufferType(); - if (!lightbuffertype) - vp_comb.AppendFormat("#define NUM_UBO_LIGHTS %d\n#define NUM_UBO_BONES %d\n", screen->mLights->GetBlockSize(), screen->mBones->GetBlockSize()); - else - vp_comb << "#define SHADER_STORAGE_LIGHTS\n#define SHADER_STORAGE_BONES\n"; - - FString fp_comb = vp_comb; - vp_comb << defines << i_data.GetChars(); - fp_comb << "$placeholder$\n" << defines << i_data.GetChars(); - - vp_comb << "#line 1\n"; - fp_comb << "#line 1\n"; - - vp_comb << RemoveLayoutLocationDecl(vp_data.GetString(), "out").GetChars() << "\n"; - fp_comb << RemoveLayoutLocationDecl(fp_data.GetString(), "in").GetChars() << "\n"; - FString placeholder = "\n"; - - if (proc_prog_lump != NULL) - { - fp_comb << "#line 1\n"; - - if (*proc_prog_lump != '#') - { - int pp_lump = fileSystem.CheckNumForFullName(proc_prog_lump, 0); // if it's a core shader, ignore overrides by user mods. - if (pp_lump == -1) pp_lump = fileSystem.CheckNumForFullName(proc_prog_lump); - if (pp_lump == -1) I_Error("Unable to load '%s'", proc_prog_lump); - FileData pp_data = fileSystem.ReadFile(pp_lump); - - if (pp_data.GetString().IndexOf("ProcessMaterial") < 0 && pp_data.GetString().IndexOf("SetupMaterial") < 0) - { - // this looks like an old custom hardware shader. - - if (pp_data.GetString().IndexOf("GetTexCoord") >= 0) - { - int pl_lump = fileSystem.CheckNumForFullName("shaders/glsl/func_defaultmat2.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders/glsl/func_defaultmat2.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - } - else - { - int pl_lump = fileSystem.CheckNumForFullName("shaders/glsl/func_defaultmat.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders/glsl/func_defaultmat.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - - if (pp_data.GetString().IndexOf("ProcessTexel") < 0) - { - // this looks like an even older custom hardware shader. - // We need to replace the ProcessTexel call to make it work. - - fp_comb.Substitute("material.Base = ProcessTexel();", "material.Base = Process(vec4(1.0));"); - } - } - - if (pp_data.GetString().IndexOf("ProcessLight") >= 0) - { - // The ProcessLight signatured changed. Forward to the old one. - fp_comb << "\nvec4 ProcessLight(vec4 color);\n"; - fp_comb << "\nvec4 ProcessLight(Material material, vec4 color) { return ProcessLight(color); }\n"; - } - } - - fp_comb << RemoveLegacyUserUniforms(pp_data.GetString()).GetChars(); - fp_comb.Substitute("gl_TexCoord[0]", "vTexCoord"); // fix old custom shaders. - - if (pp_data.GetString().IndexOf("ProcessLight") < 0) - { - int pl_lump = fileSystem.CheckNumForFullName("shaders/glsl/func_defaultlight.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders/glsl/func_defaultlight.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - } - - // ProcessMaterial must be considered broken because it requires the user to fill in data they possibly cannot know all about. - if (pp_data.GetString().IndexOf("ProcessMaterial") >= 0 && pp_data.GetString().IndexOf("SetupMaterial") < 0) - { - // This reactivates the old logic and disables all features that cannot be supported with that method. - placeholder << "#define LEGACY_USER_SHADER\n"; - } - } - else - { - // Proc_prog_lump is not a lump name but the source itself (from generated shaders) - fp_comb << proc_prog_lump + 1; - } - } - fp_comb.Substitute("$placeholder$", placeholder); - - if (light_fragprog) - { - int pp_lump = fileSystem.CheckNumForFullName(light_fragprog, 0); - if (pp_lump == -1) I_Error("Unable to load '%s'", light_fragprog); - FileData pp_data = fileSystem.ReadFile(pp_lump); - fp_comb << pp_data.GetString().GetChars() << "\n"; - } - - if (gl.flags & RFL_NO_CLIP_PLANES) - { - // On ATI's GL3 drivers we have to disable gl_ClipDistance because it's hopelessly broken. - // This will cause some glitches and regressions but is the only way to avoid total display garbage. - vp_comb.Substitute("gl_ClipDistance", "//"); - } - - hShader = glCreateProgram(); - FGLDebug::LabelObject(GL_PROGRAM, hShader, name); - - uint32_t binaryFormat = 0; - TArray binary; - if (IsShaderCacheActive()) - binary = LoadCachedProgramBinary(vp_comb, fp_comb, binaryFormat); - - bool linked = false; - if (binary.Size() > 0 && glProgramBinary) - { - glProgramBinary(hShader, binaryFormat, binary.Data(), binary.Size()); - GLint status = 0; - glGetProgramiv(hShader, GL_LINK_STATUS, &status); - linked = (status == GL_TRUE); - } - - if (!linked) - { - hVertProg = glCreateShader(GL_VERTEX_SHADER); - hFragProg = glCreateShader(GL_FRAGMENT_SHADER); - - FGLDebug::LabelObject(GL_SHADER, hVertProg, vert_prog_lump); - FGLDebug::LabelObject(GL_SHADER, hFragProg, frag_prog_lump); - - int vp_size = (int)vp_comb.Len(); - int fp_size = (int)fp_comb.Len(); - - const char *vp_ptr = vp_comb.GetChars(); - const char *fp_ptr = fp_comb.GetChars(); - - glShaderSource(hVertProg, 1, &vp_ptr, &vp_size); - glShaderSource(hFragProg, 1, &fp_ptr, &fp_size); - - glCompileShader(hVertProg); - glCompileShader(hFragProg); - - glAttachShader(hShader, hVertProg); - glAttachShader(hShader, hFragProg); - - glLinkProgram(hShader); - - glGetShaderInfoLog(hVertProg, 10000, NULL, buffer); - if (*buffer) - { - error << "Vertex shader:\n" << buffer << "\n"; - } - glGetShaderInfoLog(hFragProg, 10000, NULL, buffer); - if (*buffer) - { - error << "Fragment shader:\n" << buffer << "\n"; - } - - glGetProgramInfoLog(hShader, 10000, NULL, buffer); - if (*buffer) - { - error << "Linking:\n" << buffer << "\n"; - } - GLint status = 0; - glGetProgramiv(hShader, GL_LINK_STATUS, &status); - linked = (status == GL_TRUE); - if (!linked) - { - // only print message if there's an error. - I_Error("Init Shader '%s':\n%s\n", name, error.GetChars()); - } - else if (glProgramBinary && IsShaderCacheActive()) - { - int binaryLength = 0; - glGetProgramiv(hShader, GL_PROGRAM_BINARY_LENGTH, &binaryLength); - binary.Resize(binaryLength); - glGetProgramBinary(hShader, binary.Size(), &binaryLength, &binaryFormat, binary.Data()); - binary.Resize(binaryLength); - SaveCachedProgramBinary(vp_comb, fp_comb, binary, binaryFormat); - } - } - else - { - hVertProg = 0; - hFragProg = 0; - } - - muDesaturation.Init(hShader, "uDesaturationFactor"); - muFogEnabled.Init(hShader, "uFogEnabled"); - muTextureMode.Init(hShader, "uTextureMode"); - muLightParms.Init(hShader, "uLightAttr"); - muClipSplit.Init(hShader, "uClipSplit"); - muLightIndex.Init(hShader, "uLightIndex"); - muBoneIndexBase.Init(hShader, "uBoneIndexBase"); - muFogColor.Init(hShader, "uFogColor"); - muDynLightColor.Init(hShader, "uDynLightColor"); - muObjectColor.Init(hShader, "uObjectColor"); - muObjectColor2.Init(hShader, "uObjectColor2"); - muGlowBottomColor.Init(hShader, "uGlowBottomColor"); - muGlowTopColor.Init(hShader, "uGlowTopColor"); - muGlowBottomPlane.Init(hShader, "uGlowBottomPlane"); - muGlowTopPlane.Init(hShader, "uGlowTopPlane"); - muGradientBottomPlane.Init(hShader, "uGradientBottomPlane"); - muGradientTopPlane.Init(hShader, "uGradientTopPlane"); - muSplitBottomPlane.Init(hShader, "uSplitBottomPlane"); - muSplitTopPlane.Init(hShader, "uSplitTopPlane"); - muDetailParms.Init(hShader, "uDetailParms"); -#ifdef NPOT_EMULATION - muNpotEmulation.Init(hShader, "uNpotEmulation"); -#endif - muInterpolationFactor.Init(hShader, "uInterpolationFactor"); - muAlphaThreshold.Init(hShader, "uAlphaThreshold"); - muSpecularMaterial.Init(hShader, "uSpecularMaterial"); - muAddColor.Init(hShader, "uAddColor"); - muTextureAddColor.Init(hShader, "uTextureAddColor"); - muTextureModulateColor.Init(hShader, "uTextureModulateColor"); - muTextureBlendColor.Init(hShader, "uTextureBlendColor"); - muTimer.Init(hShader, "timer"); - - lights_index = glGetUniformLocation(hShader, "lights"); - modelmatrix_index = glGetUniformLocation(hShader, "ModelMatrix"); - texturematrix_index = glGetUniformLocation(hShader, "TextureMatrix"); - normalmodelmatrix_index = glGetUniformLocation(hShader, "NormalModelMatrix"); - - if (!lightbuffertype) - { - int tempindex = glGetUniformBlockIndex(hShader, "LightBufferUBO"); - if (tempindex != -1) glUniformBlockBinding(hShader, tempindex, LIGHTBUF_BINDINGPOINT); - - tempindex = glGetUniformBlockIndex(hShader, "BoneBufferUBO"); - if (tempindex != -1) glUniformBlockBinding(hShader, tempindex, BONEBUF_BINDINGPOINT); - } - int tempindex = glGetUniformBlockIndex(hShader, "ViewpointUBO"); - if (tempindex != -1) glUniformBlockBinding(hShader, tempindex, VIEWPOINT_BINDINGPOINT); - - glUseProgram(hShader); - - // set up other texture units (if needed by the shader) - for (int i = 2; i<16; i++) - { - char stringbuf[20]; - mysnprintf(stringbuf, 20, "texture%d", i); - tempindex = glGetUniformLocation(hShader, stringbuf); - if (tempindex != -1) glUniform1i(tempindex, i - 1); - } - - int shadowmapindex = glGetUniformLocation(hShader, "ShadowMap"); - if (shadowmapindex != -1) glUniform1i(shadowmapindex, 16); - - int lightmapindex = glGetUniformLocation(hShader, "LightMap"); - if (lightmapindex != -1) glUniform1i(lightmapindex, 17); - - glUseProgram(0); - return linked; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShader::~FShader() -{ - glDeleteProgram(hShader); - if (hVertProg != 0) - glDeleteShader(hVertProg); - if (hFragProg != 0) - glDeleteShader(hFragProg); -} - - -//========================================================================== -// -// -// -//========================================================================== - -bool FShader::Bind() -{ - GLRenderer->mShaderManager->SetActiveShader(this); - return true; -} - -//========================================================================== -// -// Since all shaders are REQUIRED, any error here needs to be fatal -// -//========================================================================== - -FShader *FShaderCollection::Compile (const char *ShaderName, const char *ShaderPath, const char *LightModePath, const char *shaderdefines, bool usediscard, EPassType passType) -{ - FString defines; - if (shaderdefines) defines += shaderdefines; - // this can't be in the shader code due to ATI strangeness. - if (!usediscard) defines += "#define NO_ALPHATEST\n"; - if (passType == GBUFFER_PASS) defines += "#define GBUFFER_PASS\n"; - - FShader *shader = NULL; - try - { - shader = new FShader(ShaderName); - if (!shader->Load(ShaderName, "shaders/glsl/main.vp", "shaders/glsl/main.fp", ShaderPath, LightModePath, defines.GetChars())) - { - I_FatalError("Unable to load shader %s\n", ShaderName); - } - } - catch(CRecoverableError &err) - { - if (shader != NULL) delete shader; - shader = NULL; - I_FatalError("Unable to load shader %s:\n%s\n", ShaderName, err.GetMessage()); - } - return shader; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderManager::FShaderManager() -{ - for (int passType = 0; passType < MAX_PASS_TYPES; passType++) - mPassShaders.Push(new FShaderCollection((EPassType)passType)); -} - -bool FShaderManager::CompileNextShader() -{ - if (mPassShaders[mCompilePass]->CompileNextShader()) - { - mCompilePass++; - if (mCompilePass >= MAX_PASS_TYPES) - { - mCompilePass = -1; - return true; - } - } - return false; -} - -FShaderManager::~FShaderManager() -{ - glUseProgram(0); - mActiveShader = NULL; - - for (auto collection : mPassShaders) - delete collection; -} - -void FShaderManager::SetActiveShader(FShader *sh) -{ - if (mActiveShader != sh) - { - glUseProgram(sh!= NULL? sh->GetHandle() : 0); - mActiveShader = sh; - } -} - -FShader *FShaderManager::BindEffect(int effect, EPassType passType) -{ - if (passType < mPassShaders.Size() && mCompilePass == -1) - return mPassShaders[passType]->BindEffect(effect); - else - return nullptr; -} - -FShader *FShaderManager::Get(unsigned int eff, bool alphateston, EPassType passType) -{ - if (mCompilePass > -1) - { - return mPassShaders[0]->Get(0, false); - } - if ((r_skipmats && eff >= 3 && eff <= 4)) - eff = 0; - - if (passType < mPassShaders.Size()) - return mPassShaders[passType]->Get(eff, alphateston); - else - return nullptr; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderCollection::FShaderCollection(EPassType passType) -{ - mPassType = passType; - mMaterialShaders.Clear(); - mMaterialShadersNAT.Clear(); - for (int i = 0; i < MAX_EFFECTS; i++) - { - mEffectShaders[i] = NULL; - } - CompileNextShader(); -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderCollection::~FShaderCollection() -{ - Clean(); -} - -//========================================================================== -// -// -// -//========================================================================== - -bool FShaderCollection::CompileNextShader() -{ - int i = mCompileIndex; - if (mCompileState == 0) - { - FShader *shc = Compile(defaultshaders[i].ShaderName, defaultshaders[i].gettexelfunc, defaultshaders[i].lightfunc, defaultshaders[i].Defines, true, mPassType); - mMaterialShaders.Push(shc); - mCompileIndex++; - if (defaultshaders[mCompileIndex].ShaderName == nullptr) - { - mCompileIndex = 0; - mCompileState++; - - } - } - else if (mCompileState == 1) - { - FShader *shc1 = Compile(defaultshaders[i].ShaderName, defaultshaders[i].gettexelfunc, defaultshaders[i].lightfunc, defaultshaders[i].Defines, false, mPassType); - mMaterialShadersNAT.Push(shc1); - mCompileIndex++; - if (mCompileIndex >= SHADER_NoTexture) - { - mCompileIndex = 0; - mCompileState++; - if (usershaders.Size() == 0) mCompileState++; - } - } - else if (mCompileState == 2) - { - FString name = ExtractFileBase(usershaders[i].shader); - FString defines = defaultshaders[usershaders[i].shaderType].Defines + usershaders[i].defines; - FShader *shc = Compile(name, usershaders[i].shader, defaultshaders[usershaders[i].shaderType].lightfunc, defines, true, mPassType); - mMaterialShaders.Push(shc); - mCompileIndex++; - if (mCompileIndex >= (int)usershaders.Size()) - { - mCompileIndex = 0; - mCompileState++; - } - } - else if (mCompileState == 3) - { - FShader *eff = new FShader(effectshaders[i].ShaderName); - if (!eff->Load(effectshaders[i].ShaderName, effectshaders[i].vp, effectshaders[i].fp1, - effectshaders[i].fp2, effectshaders[i].fp3, effectshaders[i].defines)) - { - delete eff; - } - else mEffectShaders[i] = eff; - mCompileIndex++; - if (mCompileIndex >= MAX_EFFECTS) - { - return true; - } - } - return false; -} - -//========================================================================== -// -// -// -//========================================================================== - -void FShaderCollection::Clean() -{ - for (unsigned int i = 0; i < mMaterialShadersNAT.Size(); i++) - { - if (mMaterialShadersNAT[i] != NULL) delete mMaterialShadersNAT[i]; - } - for (unsigned int i = 0; i < mMaterialShaders.Size(); i++) - { - if (mMaterialShaders[i] != NULL) delete mMaterialShaders[i]; - } - for (int i = 0; i < MAX_EFFECTS; i++) - { - if (mEffectShaders[i] != NULL) delete mEffectShaders[i]; - mEffectShaders[i] = NULL; - } - mMaterialShaders.Clear(); - mMaterialShadersNAT.Clear(); -} - -//========================================================================== -// -// -// -//========================================================================== - -int FShaderCollection::Find(const char * shn) -{ - FName sfn = shn; - - for(unsigned int i=0;imName == sfn) - { - return i; - } - } - return -1; -} - - -//========================================================================== -// -// -// -//========================================================================== - -FShader *FShaderCollection::BindEffect(int effect) -{ - if (effect >= 0 && effect < MAX_EFFECTS && mEffectShaders[effect] != NULL) - { - mEffectShaders[effect]->Bind(); - return mEffectShaders[effect]; - } - return NULL; -} - - -//========================================================================== -// -// -// -//========================================================================== - -void gl_DestroyUserShaders() -{ - // todo -} - -} diff --git a/src/common/rendering/gl/gl_shader.h b/src/common/rendering/gl/gl_shader.h deleted file mode 100644 index b93299e08..000000000 --- a/src/common/rendering/gl/gl_shader.h +++ /dev/null @@ -1,358 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2004-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// - -#ifndef __GL_SHADERS_H__ -#define __GL_SHADERS_H__ - -#include "gl_renderstate.h" -#include "name.h" - -extern bool gl_shaderactive; - -struct HWViewpointUniforms; - -namespace OpenGLRenderer -{ - class FShaderCollection; - -//========================================================================== -// -// -//========================================================================== - -class FUniform1i -{ - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - } - - void Set(int newvalue) - { - glUniform1i(mIndex, newvalue); - } -}; - -class FBufferedUniform1i -{ - int mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(int newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform1i(mIndex, newvalue); - } - } -}; - -class FBufferedUniform4i -{ - int mBuffer[4]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const int *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform4iv(mIndex, 1, newvalue); - } - } -}; - -class FBufferedUniform1f -{ - float mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(float newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform1f(mIndex, newvalue); - } - } -}; - -class FBufferedUniform2f -{ - float mBuffer[2]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const float *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform2fv(mIndex, 1, newvalue); - } - } - - void Set(float f1, float f2) - { - if (mBuffer[0] != f1 || mBuffer[1] != f2) - { - mBuffer[0] = f1; - mBuffer[1] = f2; - glUniform2fv(mIndex, 1, mBuffer); - } - } - -}; - -class FBufferedUniform4f -{ - float mBuffer[4]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const float *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform4fv(mIndex, 1, newvalue); - } - } -}; - -class FUniform4f -{ - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - } - - void Set(const float *newvalue) - { - glUniform4fv(mIndex, 1, newvalue); - } - - void Set(float a, float b, float c, float d) - { - glUniform4f(mIndex, a, b, c, d); - } - - void Set(PalEntry newvalue) - { - glUniform4f(mIndex, newvalue.r / 255.f, newvalue.g / 255.f, newvalue.b / 255.f, newvalue.a / 255.f); - } - -}; - -class FBufferedUniformPE -{ - FVector4PalEntry mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(const FVector4PalEntry &newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform4f(mIndex, newvalue.r, newvalue.g, newvalue.b, newvalue.a); - } - } -}; - -class FShader -{ - friend class FShaderCollection; - friend class FGLRenderState; - - unsigned int hShader; - unsigned int hVertProg; - unsigned int hFragProg; - FName mName; - - FBufferedUniform1f muDesaturation; - FBufferedUniform1i muFogEnabled; - FBufferedUniform1i muTextureMode; - FBufferedUniform4f muLightParms; - FBufferedUniform2f muClipSplit; - FBufferedUniform1i muLightIndex; - FBufferedUniform1i muBoneIndexBase; - FBufferedUniformPE muFogColor; - FBufferedUniform4f muDynLightColor; - FBufferedUniformPE muObjectColor; - FBufferedUniformPE muObjectColor2; - FBufferedUniformPE muAddColor; - FBufferedUniformPE muTextureBlendColor; - FBufferedUniformPE muTextureModulateColor; - FBufferedUniformPE muTextureAddColor; - FUniform4f muGlowBottomColor; - FUniform4f muGlowTopColor; - FUniform4f muGlowBottomPlane; - FUniform4f muGlowTopPlane; - FUniform4f muGradientBottomPlane; - FUniform4f muGradientTopPlane; - FUniform4f muSplitBottomPlane; - FUniform4f muSplitTopPlane; - FUniform4f muDetailParms; - FBufferedUniform1f muInterpolationFactor; - FBufferedUniform1f muAlphaThreshold; - FBufferedUniform2f muSpecularMaterial; - FBufferedUniform1f muTimer; -#ifdef NPOT_EMULATION - FBufferedUniform2f muNpotEmulation; -#endif - - int lights_index; - int modelmatrix_index; - int normalmodelmatrix_index; - int texturematrix_index; - - int currentglowstate = 0; - int currentgradientstate = 0; - int currentsplitstate = 0; - int currentcliplinestate = 0; - int currentfixedcolormap = 0; - bool currentTextureMatrixState = true;// by setting the matrix state to 'true' it is guaranteed to be set the first time the render state gets applied. - bool currentModelMatrixState = true; - -public: - FShader(const char *name) - : mName(name) - { - hShader = hVertProg = hFragProg = 0; - } - - ~FShader(); - - bool Load(const char * name, const char * vert_prog_lump, const char * fragprog, const char * fragprog2, const char * light_fragprog, const char *defines); - - bool Bind(); - unsigned int GetHandle() const { return hShader; } -}; - -//========================================================================== -// -// The global shader manager -// -//========================================================================== -class FShaderManager -{ -public: - FShaderManager(); - ~FShaderManager(); - - FShader *BindEffect(int effect, EPassType passType); - FShader *Get(unsigned int eff, bool alphateston, EPassType passType); - - void SetActiveShader(FShader *sh); - bool CompileNextShader(); -private: - - FShader *mActiveShader = nullptr; - TArray mPassShaders; - int mCompilePass = 0; - - friend class FShader; -}; - -class FShaderCollection -{ - TArray mMaterialShaders; - TArray mMaterialShadersNAT; - FShader *mEffectShaders[MAX_EFFECTS]; - int mCompileState = 0, mCompileIndex = 0; - EPassType mPassType; - - void Clean(); - -public: - FShaderCollection(EPassType passType); - ~FShaderCollection(); - FShader *Compile(const char *ShaderName, const char *ShaderPath, const char *LightModePath, const char *shaderdefines, bool usediscard, EPassType passType); - int Find(const char *mame); - bool CompileNextShader(); - FShader *BindEffect(int effect); - - FShader *Get(unsigned int eff, bool alphateston) - { - // indices 0-2 match the warping modes, 3 no texture, the following are custom - if (!alphateston && eff < SHADER_NoTexture && mCompileState == -1) - { - return mMaterialShadersNAT[eff]; // Non-alphatest shaders are only created for default, warp1+2 and brightmap. The rest won't get used anyway - } - if (eff < mMaterialShaders.Size()) - { - return mMaterialShaders[eff]; - } - return NULL; - } -}; - -} -#endif - diff --git a/src/common/rendering/gl/gl_shaderprogram.cpp b/src/common/rendering/gl/gl_shaderprogram.cpp deleted file mode 100644 index 2b6df3254..000000000 --- a/src/common/rendering/gl/gl_shaderprogram.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gl_system.h" -#include "v_video.h" -#include "gl_interface.h" -#include "hw_cvars.h" -#include "gl_debug.h" -#include "gl_shaderprogram.h" -#include "hw_shaderpatcher.h" -#include "filesystem.h" -#include "printf.h" - -namespace OpenGLRenderer -{ - -bool IsShaderCacheActive(); -TArray LoadCachedProgramBinary(const FString &vertex, const FString &fragment, uint32_t &binaryFormat); -void SaveCachedProgramBinary(const FString &vertex, const FString &fragment, const TArray &binary, uint32_t binaryFormat); - -FShaderProgram::FShaderProgram() -{ - for (int i = 0; i < NumShaderTypes; i++) - mShaders[i] = 0; -} - -//========================================================================== -// -// Free shader program resources -// -//========================================================================== - -FShaderProgram::~FShaderProgram() -{ - if (mProgram != 0) - glDeleteProgram(mProgram); - - for (int i = 0; i < NumShaderTypes; i++) - { - if (mShaders[i] != 0) - glDeleteShader(mShaders[i]); - } -} - -//========================================================================== -// -// Creates an OpenGL shader object for the specified type of shader -// -//========================================================================== - -void FShaderProgram::CreateShader(ShaderType type) -{ - GLenum gltype = 0; - switch (type) - { - default: - case Vertex: gltype = GL_VERTEX_SHADER; break; - case Fragment: gltype = GL_FRAGMENT_SHADER; break; - } - mShaders[type] = glCreateShader(gltype); -} - -//========================================================================== -// -// Compiles a shader and attaches it the program object -// -//========================================================================== - -void FShaderProgram::Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion) -{ - int lump = fileSystem.CheckNumForFullName(lumpName); - if (lump == -1) I_FatalError("Unable to load '%s'", lumpName); - FString code = fileSystem.ReadFile(lump).GetString().GetChars(); - Compile(type, lumpName, code, defines, maxGlslVersion); -} - -void FShaderProgram::Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion) -{ - mShaderNames[type] = name; - mShaderSources[type] = PatchShader(type, code, defines, maxGlslVersion); -} - -void FShaderProgram::CompileShader(ShaderType type) -{ - CreateShader(type); - - const auto &handle = mShaders[type]; - - FGLDebug::LabelObject(GL_SHADER, handle, mShaderNames[type]); - - const FString &patchedCode = mShaderSources[type]; - int lengths[1] = { (int)patchedCode.Len() }; - const char *sources[1] = { patchedCode.GetChars() }; - glShaderSource(handle, 1, sources, lengths); - - glCompileShader(handle); - - GLint status = 0; - glGetShaderiv(handle, GL_COMPILE_STATUS, &status); - if (status == GL_FALSE) - { - I_FatalError("Compile Shader '%s':\n%s\n", mShaderNames[type].GetChars(), GetShaderInfoLog(handle).GetChars()); - } - else - { - if (mProgram == 0) - mProgram = glCreateProgram(); - glAttachShader(mProgram, handle); - } -} - -//========================================================================== -// -// Links a program with the compiled shaders -// -//========================================================================== - -void FShaderProgram::Link(const char *name) -{ - FGLDebug::LabelObject(GL_PROGRAM, mProgram, name); - - uint32_t binaryFormat = 0; - TArray binary; - if (IsShaderCacheActive()) - binary = LoadCachedProgramBinary(mShaderSources[Vertex], mShaderSources[Fragment], binaryFormat); - - bool loadedFromBinary = false; - if (binary.Size() > 0 && glProgramBinary) - { - if (mProgram == 0) - mProgram = glCreateProgram(); - glProgramBinary(mProgram, binaryFormat, binary.Data(), binary.Size()); - GLint status = 0; - glGetProgramiv(mProgram, GL_LINK_STATUS, &status); - loadedFromBinary = (status == GL_TRUE); - } - - if (!loadedFromBinary) - { - CompileShader(Vertex); - CompileShader(Fragment); - - glLinkProgram(mProgram); - - GLint status = 0; - glGetProgramiv(mProgram, GL_LINK_STATUS, &status); - if (status == GL_FALSE) - { - I_FatalError("Link Shader '%s':\n%s\n", name, GetProgramInfoLog(mProgram).GetChars()); - } - else if (glProgramBinary && IsShaderCacheActive()) - { - int binaryLength = 0; - glGetProgramiv(mProgram, GL_PROGRAM_BINARY_LENGTH, &binaryLength); - binary.Resize(binaryLength); - glGetProgramBinary(mProgram, binary.Size(), &binaryLength, &binaryFormat, binary.Data()); - binary.Resize(binaryLength); - SaveCachedProgramBinary(mShaderSources[Vertex], mShaderSources[Fragment], binary, binaryFormat); - } - } - - // This is only for old OpenGL which didn't allow to set the binding from within the shader. - if (screen->glslversion < 4.20) - { - glUseProgram(mProgram); - for (auto &uni : samplerstobind) - { - auto index = glGetUniformLocation(mProgram, uni.first); - if (index >= 0) - { - glUniform1i(index, uni.second); - } - } - } - samplerstobind.Clear(); - samplerstobind.ShrinkToFit(); -} - -//========================================================================== -// -// Set uniform buffer location (only useful for GL 3.3) -// -//========================================================================== - -void FShaderProgram::SetUniformBufferLocation(int index, const char *name) -{ - if (screen->glslversion < 4.20) - { - GLuint uniformBlockIndex = glGetUniformBlockIndex(mProgram, name); - if (uniformBlockIndex != GL_INVALID_INDEX) - glUniformBlockBinding(mProgram, uniformBlockIndex, index); - } -} - -//========================================================================== -// -// Makes the shader the active program -// -//========================================================================== - -void FShaderProgram::Bind() -{ - glUseProgram(mProgram); -} - -//========================================================================== -// -// Returns the shader info log (warnings and compile errors) -// -//========================================================================== - -FString FShaderProgram::GetShaderInfoLog(GLuint handle) -{ - static char buffer[10000]; - GLsizei length = 0; - buffer[0] = 0; - glGetShaderInfoLog(handle, 10000, &length, buffer); - return FString(buffer); -} - -//========================================================================== -// -// Returns the program info log (warnings and compile errors) -// -//========================================================================== - -FString FShaderProgram::GetProgramInfoLog(GLuint handle) -{ - static char buffer[10000]; - GLsizei length = 0; - buffer[0] = 0; - glGetProgramInfoLog(handle, 10000, &length, buffer); - return FString(buffer); -} - -//========================================================================== -// -// Patches a shader to be compatible with the version of OpenGL in use -// -//========================================================================== - -FString FShaderProgram::PatchShader(ShaderType type, const FString &code, const char *defines, int maxGlslVersion) -{ - FString patchedCode; - - // If we have 4.2, always use it because it adds important new syntax. - if (maxGlslVersion < 420 && gl.glslversion >= 4.2f) maxGlslVersion = 420; - int shaderVersion = min((int)round(gl.glslversion * 10) * 10, maxGlslVersion); - patchedCode.AppendFormat("#version %d\n", shaderVersion); - - // TODO: Find some way to add extension requirements to the patching - // - // #extension GL_ARB_uniform_buffer_object : require - // #extension GL_ARB_shader_storage_buffer_object : require - - if (defines) - patchedCode << defines; - - // these settings are actually pointless but there seem to be some old ATI drivers that fail to compile the shader without setting the precision here. - patchedCode << "precision highp int;\n"; - patchedCode << "precision highp float;\n"; - - patchedCode << "#line 1\n"; - patchedCode << RemoveLayoutLocationDecl(code, type == Vertex ? "out" : "in"); - - if (maxGlslVersion < 420) - { - // Here we must strip out all layout(binding) declarations for sampler uniforms and store them in 'samplerstobind' which can then be processed by the link function. - patchedCode = RemoveSamplerBindings(patchedCode, samplerstobind); - } - - return patchedCode; -} - -///////////////////////////////////////////////////////////////////////////// - -void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program_name) -{ - FString prolog = Uniforms.CreateDeclaration("Uniforms", PresentUniforms::Desc()); - - mShader.reset(new FShaderProgram()); - mShader->Compile(FShaderProgram::Vertex, "shaders/pp/screenquad.vp", prolog, 330); - mShader->Compile(FShaderProgram::Fragment, vtx_shader_name, prolog, 330); - mShader->Link(program_name); - mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); - Uniforms.Init(); -} - -void FPresentShader::Bind() -{ - if (!mShader) - { - Init("shaders/pp/present.fp", "shaders/pp/present"); - } - mShader->Bind(); -} - -///////////////////////////////////////////////////////////////////////////// - -void FPresent3DCheckerShader::Bind() -{ - if (!mShader) - { - Init("shaders/pp/present_checker3d.fp", "shaders/pp/presentChecker3d"); - } - mShader->Bind(); -} - -void FPresent3DColumnShader::Bind() -{ - if (!mShader) - { - Init("shaders/pp/present_column3d.fp", "shaders/pp/presentColumn3d"); - } - mShader->Bind(); -} - -void FPresent3DRowShader::Bind() -{ - if (!mShader) - { - Init("shaders/pp/present_row3d.fp", "shaders/pp/presentRow3d"); - } - mShader->Bind(); -} - -///////////////////////////////////////////////////////////////////////////// - -void FShadowMapShader::Bind() -{ - if (!mShader) - { - FString prolog = Uniforms.CreateDeclaration("Uniforms", ShadowMapUniforms::Desc()); - - mShader.reset(new FShaderProgram()); - mShader->Compile(FShaderProgram::Vertex, "shaders/pp/screenquad.vp", "", 430); - mShader->Compile(FShaderProgram::Fragment, "shaders/pp/shadowmap.fp", prolog, 430); - mShader->Link("shaders/glsl/shadowmap"); - mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); - Uniforms.Init(); - } - mShader->Bind(); -} - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_shaderprogram.h b/src/common/rendering/gl/gl_shaderprogram.h deleted file mode 100644 index 90e257297..000000000 --- a/src/common/rendering/gl/gl_shaderprogram.h +++ /dev/null @@ -1,103 +0,0 @@ - -#pragma once - -#include "gl_system.h" -#include "gl_shader.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" - -namespace OpenGLRenderer -{ - -class FShaderProgram : public PPShaderBackend -{ -public: - FShaderProgram(); - ~FShaderProgram(); - - enum ShaderType - { - Vertex, - Fragment, - NumShaderTypes - }; - - void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion); - void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion); - void Link(const char *name); - void SetUniformBufferLocation(int index, const char *name); - - void Bind(); - - GLuint Handle() { return mProgram; } - //explicit operator bool() const { return mProgram != 0; } - - std::unique_ptr Uniforms; - -private: - FShaderProgram(const FShaderProgram &) = delete; - FShaderProgram &operator=(const FShaderProgram &) = delete; - - void CompileShader(ShaderType type); - FString PatchShader(ShaderType type, const FString &code, const char *defines, int maxGlslVersion); - - void CreateShader(ShaderType type); - FString GetShaderInfoLog(GLuint handle); - FString GetProgramInfoLog(GLuint handle); - - GLuint mProgram = 0; - GLuint mShaders[NumShaderTypes]; - FString mShaderSources[NumShaderTypes]; - FString mShaderNames[NumShaderTypes]; - TArray> samplerstobind; -}; - -class FPresentShaderBase -{ -public: - virtual ~FPresentShaderBase() {} - virtual void Bind() = 0; - - ShaderUniforms Uniforms; - -protected: - virtual void Init(const char * vtx_shader_name, const char * program_name); - std::unique_ptr mShader; -}; - -class FPresentShader : public FPresentShaderBase -{ -public: - void Bind() override; - -}; - -class FPresent3DCheckerShader : public FPresentShaderBase -{ -public: - void Bind() override; -}; - -class FPresent3DColumnShader : public FPresentShaderBase -{ -public: - void Bind() override; -}; - -class FPresent3DRowShader : public FPresentShaderBase -{ -public: - void Bind() override; -}; - -class FShadowMapShader -{ -public: - void Bind(); - - ShaderUniforms Uniforms; - -private: - std::unique_ptr mShader; -}; - -} \ No newline at end of file diff --git a/src/common/rendering/gl/gl_stereo3d.cpp b/src/common/rendering/gl/gl_stereo3d.cpp deleted file mode 100644 index c13914e22..000000000 --- a/src/common/rendering/gl/gl_stereo3d.cpp +++ /dev/null @@ -1,459 +0,0 @@ -/* -** gl_stereo.cpp -** Stereoscopic 3D API -** -**--------------------------------------------------------------------------- -** Copyright 2015 Christopher Bruns -** Copyright 2016-2021 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -** -** -*/ - -#include "gl_system.h" -#include "gl_renderer.h" -#include "gl_renderbuffers.h" -#include "hw_vrmodes.h" -#include "gl_framebuffer.h" -#include "gl_postprocessstate.h" -#include "gl_framebuffer.h" -#include "gl_shaderprogram.h" -#include "gl_buffers.h" -#include "menu.h" - - -EXTERN_CVAR(Int, vr_mode) -EXTERN_CVAR(Float, vid_saturation) -EXTERN_CVAR(Float, vid_brightness) -EXTERN_CVAR(Float, vid_contrast) -EXTERN_CVAR(Int, gl_satformula) -EXTERN_CVAR(Int, gl_dither_bpc) - -#ifdef _WIN32 -EXTERN_CVAR(Bool, vr_enable_quadbuffered) -#endif - -void UpdateVRModes(bool considerQuadBuffered) -{ - FOptionValues** pVRModes = OptionValues.CheckKey("VRMode"); - if (pVRModes == nullptr) return; - - TArray& vals = (*pVRModes)->mValues; - TArray filteredValues; - int cnt = vals.Size(); - for (int i = 0; i < cnt; ++i) { - auto const& mode = vals[i]; - if (mode.Value == 7) { // Quad-buffered stereo -#ifdef _WIN32 - if (!vr_enable_quadbuffered) continue; -#else - continue; // Remove quad-buffered option on Mac and Linux -#endif - if (!considerQuadBuffered) continue; // Probably no compatible screen mode was found - } - filteredValues.Push(mode); - } - vals = filteredValues; -} - -namespace OpenGLRenderer -{ - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentAnaglyph(bool r, bool g, bool b) -{ - mBuffers->BindOutputFB(); - ClearBorders(); - - glColorMask(r, g, b, 1); - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(screen->mOutputLetterbox, true); - - glColorMask(!r, !g, !b, 1); - mBuffers->BindEyeTexture(1, 0); - DrawPresentTexture(screen->mOutputLetterbox, true); - - glColorMask(1, 1, 1, 1); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentSideBySide(int vrmode) -{ - if (vrmode == VR_SIDEBYSIDEFULL || vrmode == VR_SIDEBYSIDESQUISHED) - { - mBuffers->BindOutputFB(); - ClearBorders(); - - // Compute screen regions to use for left and right eye views - int leftWidth = screen->mOutputLetterbox.width / 2; - int rightWidth = screen->mOutputLetterbox.width - leftWidth; - IntRect leftHalfScreen = screen->mOutputLetterbox; - leftHalfScreen.width = leftWidth; - IntRect rightHalfScreen = screen->mOutputLetterbox; - rightHalfScreen.width = rightWidth; - rightHalfScreen.left += leftWidth; - - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(leftHalfScreen, true); - - mBuffers->BindEyeTexture(1, 0); - DrawPresentTexture(rightHalfScreen, true); - } - else if (vrmode == VR_SIDEBYSIDELETTERBOX) - { - mBuffers->BindOutputFB(); - screen->mOutputLetterbox.top = screen->mOutputLetterbox.height; - - ClearBorders(); - screen->mOutputLetterbox.top = 0; //reset so screenshots can be taken - - // Compute screen regions to use for left and right eye views - int leftWidth = screen->mOutputLetterbox.width / 2; - int rightWidth = screen->mOutputLetterbox.width - leftWidth; - //cut letterbox height in half - int height = screen->mOutputLetterbox.height / 2; - int top = height * .5; - IntRect leftHalfScreen = screen->mOutputLetterbox; - leftHalfScreen.width = leftWidth; - leftHalfScreen.height = height; - leftHalfScreen.top = top; - IntRect rightHalfScreen = screen->mOutputLetterbox; - rightHalfScreen.width = rightWidth; - rightHalfScreen.left += leftWidth; - //give it those cinematic black bars on top and bottom - rightHalfScreen.height = height; - rightHalfScreen.top = top; - - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(leftHalfScreen, true); - - mBuffers->BindEyeTexture(1, 0); - DrawPresentTexture(rightHalfScreen, true); - } -} - - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentTopBottom() -{ - mBuffers->BindOutputFB(); - ClearBorders(); - - // Compute screen regions to use for left and right eye views - int topHeight = screen->mOutputLetterbox.height / 2; - int bottomHeight = screen->mOutputLetterbox.height - topHeight; - IntRect topHalfScreen = screen->mOutputLetterbox; - topHalfScreen.height = topHeight; - topHalfScreen.top = topHeight; - IntRect bottomHalfScreen = screen->mOutputLetterbox; - bottomHalfScreen.height = bottomHeight; - bottomHalfScreen.top = 0; - - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(topHalfScreen, true); - - mBuffers->BindEyeTexture(1, 0); - DrawPresentTexture(bottomHalfScreen, true); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::prepareInterleavedPresent(FPresentShaderBase& shader) -{ - mBuffers->BindOutputFB(); - ClearBorders(); - - - // Bind each eye texture, for composition in the shader - mBuffers->BindEyeTexture(0, 0); - mBuffers->BindEyeTexture(1, 1); - - glActiveTexture(GL_TEXTURE0); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glActiveTexture(GL_TEXTURE1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - const IntRect& box = screen->mOutputLetterbox; - glViewport(box.left, box.top, box.width, box.height); - - shader.Bind(); - - if (framebuffer->IsHWGammaActive()) - { - shader.Uniforms->InvGamma = 1.0f; - shader.Uniforms->Contrast = 1.0f; - shader.Uniforms->Brightness = 0.0f; - shader.Uniforms->Saturation = 1.0f; - } - else - { - shader.Uniforms->InvGamma = 1.0f / clamp(vid_gamma, 0.1f, 4.f); - shader.Uniforms->Contrast = clamp(vid_contrast, 0.1f, 3.f); - shader.Uniforms->Brightness = clamp(vid_brightness, -0.8f, 0.8f); - shader.Uniforms->Saturation = clamp(vid_saturation, -15.0f, 15.0f); - shader.Uniforms->GrayFormula = static_cast(gl_satformula); - } - shader.Uniforms->HdrMode = 0; - shader.Uniforms->ColorScale = (gl_dither_bpc == -1) ? 255.0f : (float)((1 << gl_dither_bpc) - 1); - shader.Uniforms->Scale = { - screen->mScreenViewport.width / (float)mBuffers->GetWidth(), - screen->mScreenViewport.height / (float)mBuffers->GetHeight() - }; - shader.Uniforms->Offset = { 0.0f, 0.0f }; - shader.Uniforms.SetData(); - static_cast(shader.Uniforms.GetBuffer())->BindBase(); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentColumnInterleaved() -{ - FGLPostProcessState savedState; - savedState.SaveTextureBindings(2); - prepareInterleavedPresent(*mPresent3dColumnShader); - - // Compute absolute offset from top of screen to top of current display window - // because we need screen-relative, not window-relative, scan line parity - - // Todo: - //auto clientoffset = screen->GetClientOffset(); - //auto windowHOffset = clientoffset.X % 2; - int windowHOffset = 0; - - mPresent3dColumnShader->Uniforms->WindowPositionParity = windowHOffset; - mPresent3dColumnShader->Uniforms.SetData(); - static_cast(mPresent3dColumnShader->Uniforms.GetBuffer())->BindBase(); - - RenderScreenQuad(); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentRowInterleaved() -{ - FGLPostProcessState savedState; - savedState.SaveTextureBindings(2); - prepareInterleavedPresent(*mPresent3dRowShader); - - // Todo: - //auto clientoffset = screen->GetClientOffset(); - //auto windowVOffset = clientoffset.Y % 2; - int windowVOffset = 0; - - mPresent3dRowShader->Uniforms->WindowPositionParity = - (windowVOffset - + screen->mOutputLetterbox.height + 1 // +1 because of origin at bottom - ) % 2; - - mPresent3dRowShader->Uniforms.SetData(); - static_cast(mPresent3dRowShader->Uniforms.GetBuffer())->BindBase(); - RenderScreenQuad(); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentCheckerInterleaved() -{ - FGLPostProcessState savedState; - savedState.SaveTextureBindings(2); - prepareInterleavedPresent(*mPresent3dCheckerShader); - - // Compute absolute offset from top of screen to top of current display window - // because we need screen-relative, not window-relative, scan line parity - - //auto clientoffset = screen->GetClientOffset(); - //auto windowHOffset = clientoffset.X % 2; - //auto windowVOffset = clientoffset.Y % 2; - int windowHOffset = 0; - int windowVOffset = 0; - - mPresent3dCheckerShader->Uniforms->WindowPositionParity = - (windowVOffset - + windowHOffset - + screen->mOutputLetterbox.height + 1 // +1 because of origin at bottom - ) % 2; // because we want the top pixel offset, but gl_FragCoord.y is the bottom pixel offset - - mPresent3dCheckerShader->Uniforms.SetData(); - static_cast(mPresent3dCheckerShader->Uniforms.GetBuffer())->BindBase(); - RenderScreenQuad(); -} - -//========================================================================== -// -// Sometimes the stereo render context is not ready immediately at start up -// -//========================================================================== - -bool FGLRenderer::QuadStereoCheckInitialRenderContextState() -{ - // Keep trying until we see at least one good OpenGL context to render to - bool bQuadStereoSupported = false; - bool bDecentContextWasFound = false; - int contextCheckCount = 0; - if ((!bDecentContextWasFound) && (contextCheckCount < 200)) - { - contextCheckCount += 1; - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); // This question is about the main screen display context - GLboolean supportsStereo, supportsBuffered; - glGetBooleanv(GL_DOUBLEBUFFER, &supportsBuffered); - if (supportsBuffered) // Finally, a useful OpenGL context - { - // This block will be executed exactly ONCE during a game run - bDecentContextWasFound = true; // now we can stop checking every frame... - // Now check whether this context supports hardware stereo - glGetBooleanv(GL_STEREO, &supportsStereo); - bQuadStereoSupported = supportsStereo && supportsBuffered; - if (! bQuadStereoSupported) - UpdateVRModes(false); - } - } - return bQuadStereoSupported; -} - -//========================================================================== -// -// -// -//========================================================================== - -void FGLRenderer::PresentQuadStereo() -{ - if (QuadStereoCheckInitialRenderContextState()) - { - mBuffers->BindOutputFB(); - - glDrawBuffer(GL_BACK_LEFT); - ClearBorders(); - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(screen->mOutputLetterbox, true); - - glDrawBuffer(GL_BACK_RIGHT); - ClearBorders(); - mBuffers->BindEyeTexture(1, 0); - DrawPresentTexture(screen->mOutputLetterbox, true); - - glDrawBuffer(GL_BACK); - } - else - { - mBuffers->BindOutputFB(); - ClearBorders(); - mBuffers->BindEyeTexture(0, 0); - DrawPresentTexture(screen->mOutputLetterbox, true); - } -} - - -void FGLRenderer::PresentStereo() -{ - auto vrmode = VRMode::GetVRMode(true); - const int eyeCount = vrmode->mEyeCount; - // Don't invalidate the bound framebuffer (..., false) - if (eyeCount > 1) - mBuffers->BlitToEyeTexture(mBuffers->CurrentEye(), false); - - switch (vr_mode) - { - default: - return; - - case VR_GREENMAGENTA: - PresentAnaglyph(false, true, false); - break; - - case VR_REDCYAN: - PresentAnaglyph(true, false, false); - break; - - case VR_AMBERBLUE: - PresentAnaglyph(true, true, false); - break; - - case VR_SIDEBYSIDEFULL: - case VR_SIDEBYSIDESQUISHED: - case VR_SIDEBYSIDELETTERBOX: - PresentSideBySide(vr_mode); - break; - - case VR_TOPBOTTOM: - PresentTopBottom(); - break; - - case VR_ROWINTERLEAVED: - PresentRowInterleaved(); - break; - - case VR_COLUMNINTERLEAVED: - PresentColumnInterleaved(); - break; - - case VR_CHECKERINTERLEAVED: - PresentCheckerInterleaved(); - break; - - case VR_QUADSTEREO: - PresentQuadStereo(); - break; - } -} - -} \ No newline at end of file diff --git a/src/common/rendering/gl_load/gl_extlist.txt b/src/common/rendering/gl_load/gl_extlist.txt deleted file mode 100644 index af1116bda..000000000 --- a/src/common/rendering/gl_load/gl_extlist.txt +++ /dev/null @@ -1,15 +0,0 @@ --- List of OpenGL extensions for glLoadGen - --- Generation of gl_load.c and gl_load.h files: --- > lua LoadGen.lua -style=pointer_c -spec=gl -version=4.5 -profile=compatibility -extfile=gl_extlist.txt load - -ARB_buffer_storage -ARB_shader_storage_buffer_object -ARB_texture_compression -ARB_texture_rectangle -EXT_framebuffer_object -EXT_texture_compression_s3tc -EXT_texture_filter_anisotropic -EXT_texture_sRGB -KHR_debug -ARB_invalidate_subdata diff --git a/src/common/rendering/gl_load/gl_interface.cpp b/src/common/rendering/gl_load/gl_interface.cpp deleted file mode 100644 index 3bcbcc451..000000000 --- a/src/common/rendering/gl_load/gl_interface.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* -** gl_interface.cpp -** OpenGL system interface -** -**--------------------------------------------------------------------------- -** Copyright 2005-2019 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#include "gl_system.h" -#include "engineerrors.h" -#include "tarray.h" -#include "basics.h" -#include "m_argv.h" -#include "version.h" -#include "v_video.h" -#include "printf.h" -#include "gl_interface.h" - -static TArray m_Extensions; -RenderContext gl; -static double realglversion; -static bool bindless; - -//========================================================================== -// -// -// -//========================================================================== - -static void CollectExtensions() -{ - const char *extension; - - int max = 0; - glGetIntegerv(GL_NUM_EXTENSIONS, &max); - - // Use modern method to collect extensions - for (int i = 0; i < max; i++) - { - extension = (const char*)glGetStringi(GL_EXTENSIONS, i); - m_Extensions.Push(FString(extension)); - } -} - -//========================================================================== -// -// -// -//========================================================================== - -static bool CheckExtension(const char *ext) -{ - for (unsigned int i = 0; i < m_Extensions.Size(); ++i) - { - if (m_Extensions[i].CompareNoCase(ext) == 0) return true; - } - - return false; -} - - - -//========================================================================== -// -// -// -//========================================================================== - -static void InitContext() -{ - gl.flags=0; -} - -//========================================================================== -// -// -// -//========================================================================== - -#define FUDGE_FUNC(name, ext) if (_ptrc_##name == NULL) _ptrc_##name = _ptrc_##name##ext; - - -void gl_LoadExtensions() -{ - int v = 0; - - InitContext(); - CollectExtensions(); - - const char *glversion = (const char*)glGetString(GL_VERSION); - - const char *version = Args->CheckValue("-glversion"); - realglversion = strtod(glversion, NULL); - - - if (version == NULL) - { - version = glversion; - } - else - { - double v1 = strtod(version, NULL); - if (v1 >= 3.0 && v1 < 3.3) - { - v1 = 3.3; // promote '3' to 3.3 to avoid falling back to the legacy path. - version = "3.3"; - } - if (realglversion < v1) version = glversion; - else Printf("Emulating OpenGL v %s\n", version); - } - - float gl_version = (float)strtod(version, NULL) + 0.01f; - - // Don't even start if it's lower than 2.0 or no framebuffers are available (The framebuffer extension is needed for glGenerateMipmapsEXT!) - if (gl_version < 3.3f) - { - I_FatalError("Unsupported OpenGL version.\nAt least OpenGL 3.3 is required to run " GAMENAME ".\n"); - } - - - // add 0.01 to account for roundoff errors making the number a tad smaller than the actual version - gl.glslversion = strtod((char*)glGetString(GL_SHADING_LANGUAGE_VERSION), NULL) + 0.01f; - - gl.vendorstring = (char*)glGetString(GL_VENDOR); - gl.modelstring = (char*)glGetString(GL_RENDERER); - - // first test for optional features - if (CheckExtension("GL_ARB_texture_compression")) gl.flags |= RFL_TEXTURE_COMPRESSION; - if (CheckExtension("GL_EXT_texture_compression_s3tc")) gl.flags |= RFL_TEXTURE_COMPRESSION_S3TC; - - if (gl_version < 4.f) - { -#ifdef _WIN32 - if (strstr(gl.vendorstring, "ATI Tech")) - { - gl.flags |= RFL_NO_CLIP_PLANES; // gl_ClipDistance is horribly broken on ATI GL3 drivers for Windows. - } -#endif - gl.glslversion = 3.31f; // Force GLSL down to 3.3. - } - else if (gl_version >= 4.5f) - { - // Assume that everything works without problems on GL 4.5 drivers where these things are core features. - gl.flags |= RFL_SHADER_STORAGE_BUFFER | RFL_BUFFER_STORAGE; - - // Mesa implements shader storage only for fragment shaders. - // Just disable the feature there. The light buffer may just use a uniform buffer without any adverse effects. - glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &v); - if (v == 0) - gl.flags &= ~RFL_SHADER_STORAGE_BUFFER; - } - - - - if (gl_version >= 4.3f || CheckExtension("GL_ARB_invalidate_subdata")) gl.flags |= RFL_INVALIDATE_BUFFER; - if (gl_version >= 4.3f || CheckExtension("GL_KHR_debug")) gl.flags |= RFL_DEBUG; - - glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &v); - gl.maxuniforms = v; - glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &v); - gl.maxuniformblock = v; - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &v); - gl.uniformblockalignment = v; - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl.max_texturesize); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - bindless = CheckExtension("GL_ARB_bindless_texture"); -} - -//========================================================================== -// -// -// -//========================================================================== - -void gl_PrintStartupLog() -{ - int v = 0; - glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &v); - - Printf ("GL_VENDOR: %s\n", glGetString(GL_VENDOR)); - Printf ("GL_RENDERER: %s\n", glGetString(GL_RENDERER)); - Printf ("GL_VERSION: %s (%s profile)\n", glGetString(GL_VERSION), (v & GL_CONTEXT_CORE_PROFILE_BIT)? "Core" : "Compatibility"); - Printf ("GL_SHADING_LANGUAGE_VERSION: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); - Printf (PRINT_LOG, "GL_EXTENSIONS:"); - for (unsigned i = 0; i < m_Extensions.Size(); i++) - { - Printf(PRINT_LOG, " %s", m_Extensions[i].GetChars()); - } - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &v); - Printf("\nMax. texture size: %d\n", v); - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &v); - Printf ("Max. texture units: %d\n", v); - glGetIntegerv(GL_MAX_VARYING_FLOATS, &v); - Printf ("Max. varying: %d\n", v); - - if (gl.flags & RFL_SHADER_STORAGE_BUFFER) - { - glGetIntegerv(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, &v); - Printf("Max. combined shader storage blocks: %d\n", v); - glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &v); - Printf("Max. vertex shader storage blocks: %d\n", v); - } - else - { - glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &v); - Printf("Max. uniform block size: %d\n", v); - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &v); - Printf("Uniform block alignment: %d\n", v); - } -} - -void setGlVersion(double glv) -{ - realglversion = glv; -} - -std::pair gl_getInfo() -{ - // gl_ARB_bindless_texture is the closest we can get to determine Vulkan support from OpenGL. - // This isn't foolproof because Intel doesn't support it but for NVidia and AMD support of this extension means Vulkan support. - return std::make_pair(realglversion, bindless); -} diff --git a/src/common/rendering/gl_load/gl_interface.h b/src/common/rendering/gl_load/gl_interface.h deleted file mode 100644 index a2e97db8d..000000000 --- a/src/common/rendering/gl_load/gl_interface.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef R_RENDER -#define R_RENDER - -struct RenderContext -{ - unsigned int flags; - unsigned int maxuniforms; - unsigned int maxuniformblock; - unsigned int uniformblockalignment; - float glslversion; - int max_texturesize; - char * vendorstring; - char * modelstring; -}; - -extern RenderContext gl; - -#endif - diff --git a/src/common/rendering/gl_load/gl_load.c b/src/common/rendering/gl_load/gl_load.c deleted file mode 100644 index e29207f4a..000000000 --- a/src/common/rendering/gl_load/gl_load.c +++ /dev/null @@ -1,3524 +0,0 @@ -#include -#include -#include -#include "gl_load.h" - -#if defined(__APPLE__) -#include - -static void* AppleGLGetProcAddress (const char *name) -{ - static void* image = NULL; - - if (NULL == image) - image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); - - return (image ? dlsym(image, name) : NULL); -} -#endif /* __APPLE__ */ - -/* BEGINNING OF MANUAL CHANGES, DO NOT REMOVE! */ -#if defined(__sgi) || defined (__sun) || defined(__unix__) -#include -#include - -static void* PosixGetProcAddress (const GLubyte* name) -{ - static void* h = NULL; - static void* gpa; - - if (h == NULL) - { - if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL; - gpa = dlsym(h, "glXGetProcAddress"); - } - - if (gpa != NULL) - return ((void*(*)(const GLubyte*))gpa)(name); - else - return dlsym(h, (const char*)name); -} -#endif /* __sgi || __sun || __unix__ */ - -#if defined(_WIN32) - -#ifdef APIENTRY -#undef APIENTRY -#endif -#include - - -#ifdef _MSC_VER -// disable inlining here because it creates an incredible amount of bloat in this file. -#pragma inline_depth(0) -#pragma warning(disable: 4055) -#pragma warning(disable: 4054) -#pragma warning(disable: 4996) -#endif - -static int TestPointer(const PROC pTest) -{ - ptrdiff_t iTest; - if(!pTest) return 0; - iTest = (ptrdiff_t)pTest; - - if(iTest == 1 || iTest == 2 || iTest == 3 || iTest == -1) return 0; - - return 1; -} - -static HMODULE opengl32dll; -static HGLRC(WINAPI* createcontext)(HDC); -static BOOL(WINAPI* deletecontext)(HGLRC); -static BOOL(WINAPI* makecurrent)(HDC, HGLRC); -static PROC(WINAPI* getprocaddress)(LPCSTR name); -static void CheckOpenGL(void) -{ - if (opengl32dll == 0) - { - opengl32dll = LoadLibrary(L"OpenGL32.DLL"); - createcontext = (HGLRC(WINAPI*)(HDC)) GetProcAddress(opengl32dll, "wglCreateContext"); - deletecontext = (BOOL(WINAPI*)(HGLRC)) GetProcAddress(opengl32dll, "wglDeleteContext"); - makecurrent = (BOOL(WINAPI*)(HDC, HGLRC)) GetProcAddress(opengl32dll, "wglMakeCurrent"); - getprocaddress = (PROC(WINAPI*)(LPCSTR)) GetProcAddress(opengl32dll, "wglGetProcAddress"); - } -} - -HGLRC zd_wglCreateContext(HDC dc) -{ - CheckOpenGL(); - return createcontext(dc); -} - -BOOL zd_wglDeleteContext(HGLRC context) -{ - CheckOpenGL(); - return deletecontext(context); -} - -BOOL zd_wglMakeCurrent(HDC dc, HGLRC context) -{ - CheckOpenGL(); - return makecurrent(dc, context); -} - -PROC zd_wglGetProcAddress(LPCSTR name) -{ - CheckOpenGL(); - return getprocaddress(name); -} - -static PROC WinGetProcAddress(const char *name) -{ - HMODULE glMod = NULL; - PROC pFunc = zd_wglGetProcAddress((LPCSTR)name); - if(TestPointer(pFunc)) - { - return pFunc; - } - glMod = GetModuleHandleA("OpenGL32.dll"); - return (PROC)GetProcAddress(glMod, (LPCSTR)name); -} - -#define IntGetProcAddress(name) WinGetProcAddress(name) -#else - #if defined(__APPLE__) - #define IntGetProcAddress(name) AppleGLGetProcAddress(name) - #else - #if defined(__sgi) || defined(__sun) || defined(__unix__) - void* SDL_GL_GetProcAddress(const char* proc); - #define IntGetProcAddress(name) SDL_GL_GetProcAddress((const char*)name) - //#define IntGetProcAddress(name) PosixGetProcAddress((const GLubyte*)name) -/* END OF MANUAL CHANGES, DO NOT REMOVE! */ - #else /* GLX */ - #include - - #define IntGetProcAddress(name) (*glXGetProcAddressARB)((const GLubyte*)name) - #endif - #endif -#endif - -int ogl_ext_ARB_buffer_storage = ogl_LOAD_FAILED; -int ogl_ext_ARB_shader_storage_buffer_object = ogl_LOAD_FAILED; -int ogl_ext_ARB_texture_compression = ogl_LOAD_FAILED; -int ogl_ext_ARB_texture_rectangle = ogl_LOAD_FAILED; -int ogl_ext_EXT_framebuffer_object = ogl_LOAD_FAILED; -int ogl_ext_EXT_texture_compression_s3tc = ogl_LOAD_FAILED; -int ogl_ext_EXT_texture_filter_anisotropic = ogl_LOAD_FAILED; -int ogl_ext_EXT_texture_sRGB = ogl_LOAD_FAILED; -int ogl_ext_KHR_debug = ogl_LOAD_FAILED; -int ogl_ext_ARB_invalidate_subdata = ogl_LOAD_FAILED; - -void (CODEGEN_FUNCPTR *_ptrc_glBufferStorage)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags) = NULL; - -static int Load_ARB_buffer_storage(void) -{ - int numFailed = 0; - _ptrc_glBufferStorage = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizeiptr, const void *, GLbitfield))IntGetProcAddress("glBufferStorage"); - if(!_ptrc_glBufferStorage) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) = NULL; - -static int Load_ARB_shader_storage_buffer_object(void) -{ - int numFailed = 0; - _ptrc_glShaderStorageBlockBinding = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glShaderStorageBlockBinding"); - if(!_ptrc_glShaderStorageBlockBinding) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTexImageARB)(GLenum target, GLint level, void * img) = NULL; - -static int Load_ARB_texture_compression(void) -{ - int numFailed = 0; - _ptrc_glCompressedTexImage1DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage1DARB"); - if(!_ptrc_glCompressedTexImage1DARB) numFailed++; - _ptrc_glCompressedTexImage2DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage2DARB"); - if(!_ptrc_glCompressedTexImage2DARB) numFailed++; - _ptrc_glCompressedTexImage3DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage3DARB"); - if(!_ptrc_glCompressedTexImage3DARB) numFailed++; - _ptrc_glCompressedTexSubImage1DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage1DARB"); - if(!_ptrc_glCompressedTexSubImage1DARB) numFailed++; - _ptrc_glCompressedTexSubImage2DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage2DARB"); - if(!_ptrc_glCompressedTexSubImage2DARB) numFailed++; - _ptrc_glCompressedTexSubImage3DARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage3DARB"); - if(!_ptrc_glCompressedTexSubImage3DARB) numFailed++; - _ptrc_glGetCompressedTexImageARB = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, void *))IntGetProcAddress("glGetCompressedTexImageARB"); - if(!_ptrc_glGetCompressedTexImageARB) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glBindFramebufferEXT)(GLenum target, GLuint framebuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindRenderbufferEXT)(GLenum target, GLuint renderbuffer) = NULL; -GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckFramebufferStatusEXT)(GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenFramebuffersEXT)(GLsizei n, GLuint * framebuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenerateMipmapEXT)(GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsFramebufferEXT)(GLuint framebuffer) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsRenderbufferEXT)(GLuint renderbuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = NULL; - -static int Load_EXT_framebuffer_object(void) -{ - int numFailed = 0; - _ptrc_glBindFramebufferEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindFramebufferEXT"); - if(!_ptrc_glBindFramebufferEXT) numFailed++; - _ptrc_glBindRenderbufferEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindRenderbufferEXT"); - if(!_ptrc_glBindRenderbufferEXT) numFailed++; - _ptrc_glCheckFramebufferStatusEXT = (GLenum (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glCheckFramebufferStatusEXT"); - if(!_ptrc_glCheckFramebufferStatusEXT) numFailed++; - _ptrc_glDeleteFramebuffersEXT = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteFramebuffersEXT"); - if(!_ptrc_glDeleteFramebuffersEXT) numFailed++; - _ptrc_glDeleteRenderbuffersEXT = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteRenderbuffersEXT"); - if(!_ptrc_glDeleteRenderbuffersEXT) numFailed++; - _ptrc_glFramebufferRenderbufferEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint))IntGetProcAddress("glFramebufferRenderbufferEXT"); - if(!_ptrc_glFramebufferRenderbufferEXT) numFailed++; - _ptrc_glFramebufferTexture1DEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint))IntGetProcAddress("glFramebufferTexture1DEXT"); - if(!_ptrc_glFramebufferTexture1DEXT) numFailed++; - _ptrc_glFramebufferTexture2DEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint))IntGetProcAddress("glFramebufferTexture2DEXT"); - if(!_ptrc_glFramebufferTexture2DEXT) numFailed++; - _ptrc_glFramebufferTexture3DEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint, GLint))IntGetProcAddress("glFramebufferTexture3DEXT"); - if(!_ptrc_glFramebufferTexture3DEXT) numFailed++; - _ptrc_glGenFramebuffersEXT = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenFramebuffersEXT"); - if(!_ptrc_glGenFramebuffersEXT) numFailed++; - _ptrc_glGenRenderbuffersEXT = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenRenderbuffersEXT"); - if(!_ptrc_glGenRenderbuffersEXT) numFailed++; - _ptrc_glGenerateMipmapEXT = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glGenerateMipmapEXT"); - if(!_ptrc_glGenerateMipmapEXT) numFailed++; - _ptrc_glGetFramebufferAttachmentParameterivEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLint *))IntGetProcAddress("glGetFramebufferAttachmentParameterivEXT"); - if(!_ptrc_glGetFramebufferAttachmentParameterivEXT) numFailed++; - _ptrc_glGetRenderbufferParameterivEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetRenderbufferParameterivEXT"); - if(!_ptrc_glGetRenderbufferParameterivEXT) numFailed++; - _ptrc_glIsFramebufferEXT = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsFramebufferEXT"); - if(!_ptrc_glIsFramebufferEXT) numFailed++; - _ptrc_glIsRenderbufferEXT = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsRenderbufferEXT"); - if(!_ptrc_glIsRenderbufferEXT) numFailed++; - _ptrc_glRenderbufferStorageEXT = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLsizei, GLsizei))IntGetProcAddress("glRenderbufferStorageEXT"); - if(!_ptrc_glRenderbufferStorageEXT) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageCallback)(GLDEBUGPROC callback, const void * userParam) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glGetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetObjectPtrLabel)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetPointerv)(GLenum pname, void ** params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glObjectPtrLabel)(const void * ptr, GLsizei length, const GLchar * label) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPopDebugGroup)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message) = NULL; - -static int Load_KHR_debug(void) -{ - int numFailed = 0; - _ptrc_glDebugMessageCallback = (void (CODEGEN_FUNCPTR *)(GLDEBUGPROC, const void *))IntGetProcAddress("glDebugMessageCallback"); - if(!_ptrc_glDebugMessageCallback) numFailed++; - _ptrc_glDebugMessageControl = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean))IntGetProcAddress("glDebugMessageControl"); - if(!_ptrc_glDebugMessageControl) numFailed++; - _ptrc_glDebugMessageInsert = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *))IntGetProcAddress("glDebugMessageInsert"); - if(!_ptrc_glDebugMessageInsert) numFailed++; - _ptrc_glGetDebugMessageLog = (GLuint (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *))IntGetProcAddress("glGetDebugMessageLog"); - if(!_ptrc_glGetDebugMessageLog) numFailed++; - _ptrc_glGetObjectLabel = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetObjectLabel"); - if(!_ptrc_glGetObjectLabel) numFailed++; - _ptrc_glGetObjectPtrLabel = (void (CODEGEN_FUNCPTR *)(const void *, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetObjectPtrLabel"); - if(!_ptrc_glGetObjectPtrLabel) numFailed++; - _ptrc_glGetPointerv = (void (CODEGEN_FUNCPTR *)(GLenum, void **))IntGetProcAddress("glGetPointerv"); - if(!_ptrc_glGetPointerv) numFailed++; - _ptrc_glObjectLabel = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLchar *))IntGetProcAddress("glObjectLabel"); - if(!_ptrc_glObjectLabel) numFailed++; - _ptrc_glObjectPtrLabel = (void (CODEGEN_FUNCPTR *)(const void *, GLsizei, const GLchar *))IntGetProcAddress("glObjectPtrLabel"); - if(!_ptrc_glObjectPtrLabel) numFailed++; - _ptrc_glPopDebugGroup = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopDebugGroup"); - if(!_ptrc_glPopDebugGroup) numFailed++; - _ptrc_glPushDebugGroup = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLchar *))IntGetProcAddress("glPushDebugGroup"); - if(!_ptrc_glPushDebugGroup) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferData)(GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexImage)(GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) = NULL; - -static int Load_ARB_invalidate_subdata(void) -{ - int numFailed = 0; - _ptrc_glInvalidateBufferData = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glInvalidateBufferData"); - if(!_ptrc_glInvalidateBufferData) numFailed++; - _ptrc_glInvalidateBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glInvalidateBufferSubData"); - if(!_ptrc_glInvalidateBufferSubData) numFailed++; - _ptrc_glInvalidateFramebuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLenum *))IntGetProcAddress("glInvalidateFramebuffer"); - if(!_ptrc_glInvalidateFramebuffer) numFailed++; - _ptrc_glInvalidateSubFramebuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glInvalidateSubFramebuffer"); - if(!_ptrc_glInvalidateSubFramebuffer) numFailed++; - _ptrc_glInvalidateTexImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint))IntGetProcAddress("glInvalidateTexImage"); - if(!_ptrc_glInvalidateTexImage) numFailed++; - _ptrc_glInvalidateTexSubImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei))IntGetProcAddress("glInvalidateTexSubImage"); - if(!_ptrc_glInvalidateTexSubImage) numFailed++; - return numFailed; -} - -void (CODEGEN_FUNCPTR *_ptrc_glAccum)(GLenum op, GLfloat value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glAlphaFunc)(GLenum func, GLfloat ref) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBegin)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendFunc)(GLenum sfactor, GLenum dfactor) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCallList)(GLuint list) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCallLists)(GLsizei n, GLenum type, const void * lists) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClear)(GLbitfield mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearDepth)(GLdouble depth) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearIndex)(GLfloat c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearStencil)(GLint s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClipPlane)(GLenum plane, const GLdouble * equation) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3b)(GLbyte red, GLbyte green, GLbyte blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3bv)(const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3d)(GLdouble red, GLdouble green, GLdouble blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3f)(GLfloat red, GLfloat green, GLfloat blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3i)(GLint red, GLint green, GLint blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3s)(GLshort red, GLshort green, GLshort blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3ub)(GLubyte red, GLubyte green, GLubyte blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3ubv)(const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3ui)(GLuint red, GLuint green, GLuint blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3uiv)(const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3us)(GLushort red, GLushort green, GLushort blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor3usv)(const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4bv)(const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4i)(GLint red, GLint green, GLint blue, GLint alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4ubv)(const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4uiv)(const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColor4usv)(const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColorMaterial)(GLenum face, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCullFace)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteLists)(GLuint list, GLsizei range) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthFunc)(GLenum func) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthMask)(GLboolean flag) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthRange)(GLdouble ren_near, GLdouble ren_far) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDisable)(GLenum cap) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawBuffer)(GLenum buf) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlag)(GLboolean flag) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlagv)(const GLboolean * flag) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnable)(GLenum cap) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnd)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEndList)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1d)(GLdouble u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1dv)(const GLdouble * u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1f)(GLfloat u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1fv)(const GLfloat * u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2d)(GLdouble u, GLdouble v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2dv)(const GLdouble * u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2f)(GLfloat u, GLfloat v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2fv)(const GLfloat * u) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalMesh1)(GLenum mode, GLint i1, GLint i2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalPoint1)(GLint i) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEvalPoint2)(GLint i, GLint j) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFinish)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFlush)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogf)(GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogfv)(GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogi)(GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogiv)(GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFrontFace)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFrustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glGenLists)(GLsizei range) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBooleanv)(GLenum pname, GLboolean * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetClipPlane)(GLenum plane, GLdouble * equation) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetDoublev)(GLenum pname, GLdouble * data) = NULL; -GLenum (CODEGEN_FUNCPTR *_ptrc_glGetError)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetFloatv)(GLenum pname, GLfloat * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetIntegerv)(GLenum pname, GLint * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetLightfv)(GLenum light, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetLightiv)(GLenum light, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMapdv)(GLenum target, GLenum query, GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMapfv)(GLenum target, GLenum query, GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMapiv)(GLenum target, GLenum query, GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMaterialfv)(GLenum face, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMaterialiv)(GLenum face, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapfv)(GLenum map, GLfloat * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapuiv)(GLenum map, GLuint * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapusv)(GLenum map, GLushort * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetPolygonStipple)(GLubyte * mask) = NULL; -const GLubyte * (CODEGEN_FUNCPTR *_ptrc_glGetString)(GLenum name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexEnviv)(GLenum target, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexGendv)(GLenum coord, GLenum pname, GLdouble * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexGeniv)(GLenum coord, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameteriv)(GLenum target, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glHint)(GLenum target, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexMask)(GLuint mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexd)(GLdouble c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexdv)(const GLdouble * c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexf)(GLfloat c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexfv)(const GLfloat * c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexi)(GLint c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexiv)(const GLint * c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexs)(GLshort c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexsv)(const GLshort * c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInitNames)(void) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsEnabled)(GLenum cap) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsList)(GLuint list) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightModelf)(GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightModelfv)(GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightModeli)(GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightModeliv)(GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightf)(GLenum light, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightfv)(GLenum light, GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLighti)(GLenum light, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLightiv)(GLenum light, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLineStipple)(GLint factor, GLushort pattern) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLineWidth)(GLfloat width) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glListBase)(GLuint base) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadIdentity)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadMatrixd)(const GLdouble * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadMatrixf)(const GLfloat * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadName)(GLuint name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLogicOp)(GLenum opcode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMap1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMap1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMap2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMap2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMapGrid1d)(GLint un, GLdouble u1, GLdouble u2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMapGrid1f)(GLint un, GLfloat u1, GLfloat u2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMaterialf)(GLenum face, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMaterialfv)(GLenum face, GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMateriali)(GLenum face, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMaterialiv)(GLenum face, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMatrixMode)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultMatrixd)(const GLdouble * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultMatrixf)(const GLfloat * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNewList)(GLuint list, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3b)(GLbyte nx, GLbyte ny, GLbyte nz) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3bv)(const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3d)(GLdouble nx, GLdouble ny, GLdouble nz) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3f)(GLfloat nx, GLfloat ny, GLfloat nz) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3i)(GLint nx, GLint ny, GLint nz) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3s)(GLshort nx, GLshort ny, GLshort nz) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormal3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glOrtho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPassThrough)(GLfloat token) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelStoref)(GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelStorei)(GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelTransferf)(GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelTransferi)(GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPixelZoom)(GLfloat xfactor, GLfloat yfactor) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPointSize)(GLfloat size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPolygonMode)(GLenum face, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPolygonStipple)(const GLubyte * mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPopAttrib)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPopMatrix)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPopName)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPushAttrib)(GLbitfield mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPushMatrix)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPushName)(GLuint name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2d)(GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2f)(GLfloat x, GLfloat y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2i)(GLint x, GLint y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2s)(GLshort x, GLshort y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3d)(GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3f)(GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3i)(GLint x, GLint y, GLint z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3s)(GLshort x, GLshort y, GLshort z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4i)(GLint x, GLint y, GLint z, GLint w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glReadBuffer)(GLenum src) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectdv)(const GLdouble * v1, const GLdouble * v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectfv)(const GLfloat * v1, const GLfloat * v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRecti)(GLint x1, GLint y1, GLint x2, GLint y2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectiv)(const GLint * v1, const GLint * v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRectsv)(const GLshort * v1, const GLshort * v2) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glRenderMode)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScaled)(GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScalef)(GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScissor)(GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSelectBuffer)(GLsizei size, GLuint * buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glShadeModel)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilFunc)(GLenum func, GLint ref, GLuint mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilMask)(GLuint mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1d)(GLdouble s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1f)(GLfloat s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1i)(GLint s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1s)(GLshort s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2d)(GLdouble s, GLdouble t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2f)(GLfloat s, GLfloat t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2i)(GLint s, GLint t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2s)(GLshort s, GLshort t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3d)(GLdouble s, GLdouble t, GLdouble r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3f)(GLfloat s, GLfloat t, GLfloat r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3i)(GLint s, GLint t, GLint r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3s)(GLshort s, GLshort t, GLshort r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4i)(GLint s, GLint t, GLint r, GLint q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexEnvf)(GLenum target, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexEnvfv)(GLenum target, GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexEnvi)(GLenum target, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexEnviv)(GLenum target, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGend)(GLenum coord, GLenum pname, GLdouble param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGendv)(GLenum coord, GLenum pname, const GLdouble * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGenf)(GLenum coord, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGenfv)(GLenum coord, GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGeni)(GLenum coord, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexGeniv)(GLenum coord, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameterf)(GLenum target, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameterfv)(GLenum target, GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameteri)(GLenum target, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameteriv)(GLenum target, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTranslated)(GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTranslatef)(GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2d)(GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2f)(GLfloat x, GLfloat y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2i)(GLint x, GLint y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2s)(GLshort x, GLshort y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex2sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3d)(GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3f)(GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3i)(GLint x, GLint y, GLint z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3s)(GLshort x, GLshort y, GLshort z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4i)(GLint x, GLint y, GLint z, GLint w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4s)(GLshort x, GLshort y, GLshort z, GLshort w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertex4sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glViewport)(GLint x, GLint y, GLsizei width, GLsizei height) = NULL; - -GLboolean (CODEGEN_FUNCPTR *_ptrc_glAreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glArrayElement)(GLint i) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindTexture)(GLenum target, GLuint texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteTextures)(GLsizei n, const GLuint * textures) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDisableClientState)(GLenum ren_array) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawArrays)(GLenum mode, GLint first, GLsizei count) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElements)(GLenum mode, GLsizei count, GLenum type, const void * indices) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlagPointer)(GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnableClientState)(GLenum ren_array) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenTextures)(GLsizei n, GLuint * textures) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexPointer)(GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexub)(GLubyte c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glIndexubv)(const GLubyte * c) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInterleavedArrays)(GLenum format, GLsizei stride, const void * pointer) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsTexture)(GLuint texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNormalPointer)(GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPolygonOffset)(GLfloat factor, GLfloat units) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPopClientAttrib)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPrioritizeTextures)(GLsizei n, const GLuint * textures, const GLfloat * priorities) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPushClientAttrib)(GLbitfield mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glActiveTexture)(GLenum texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClientActiveTexture)(GLenum texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTexImage)(GLenum target, GLint level, void * img) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadTransposeMatrixd)(const GLdouble * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLoadTransposeMatrixf)(const GLfloat * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultTransposeMatrixd)(const GLdouble * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultTransposeMatrixf)(const GLfloat * m) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1d)(GLenum target, GLdouble s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1dv)(GLenum target, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1f)(GLenum target, GLfloat s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1fv)(GLenum target, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1i)(GLenum target, GLint s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1iv)(GLenum target, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1s)(GLenum target, GLshort s) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1sv)(GLenum target, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2dv)(GLenum target, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2fv)(GLenum target, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2i)(GLenum target, GLint s, GLint t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2iv)(GLenum target, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2s)(GLenum target, GLshort s, GLshort t) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2sv)(GLenum target, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3dv)(GLenum target, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3fv)(GLenum target, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3iv)(GLenum target, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3sv)(GLenum target, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4dv)(GLenum target, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4fv)(GLenum target, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4iv)(GLenum target, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4sv)(GLenum target, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSampleCoverage)(GLfloat value, GLboolean invert) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendEquation)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogCoordPointer)(GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogCoordd)(GLdouble coord) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogCoorddv)(const GLdouble * coord) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogCoordf)(GLfloat coord) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFogCoordfv)(const GLfloat * coord) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawArrays)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPointParameterf)(GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPointParameterfv)(GLenum pname, const GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPointParameteri)(GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPointParameteriv)(GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3bv)(const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3i)(GLint red, GLint green, GLint blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3s)(GLshort red, GLshort green, GLshort blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ubv)(const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ui)(GLuint red, GLuint green, GLuint blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3uiv)(const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3us)(GLushort red, GLushort green, GLushort blue) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3usv)(const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2d)(GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2f)(GLfloat x, GLfloat y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2i)(GLint x, GLint y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2s)(GLshort x, GLshort y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2sv)(const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3d)(GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3dv)(const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3f)(GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3fv)(const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3i)(GLint x, GLint y, GLint z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3iv)(const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3s)(GLshort x, GLshort y, GLshort z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3sv)(const GLshort * v) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBeginQuery)(GLenum target, GLuint id) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindBuffer)(GLenum target, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBufferData)(GLenum target, GLsizeiptr size, const void * data, GLenum usage) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteBuffers)(GLsizei n, const GLuint * buffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteQueries)(GLsizei n, const GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEndQuery)(GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenBuffers)(GLsizei n, GLuint * buffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenQueries)(GLsizei n, GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBufferParameteriv)(GLenum target, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBufferPointerv)(GLenum target, GLenum pname, void ** params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectiv)(GLuint id, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryiv)(GLenum target, GLenum pname, GLint * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsBuffer)(GLuint buffer) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsQuery)(GLuint id) = NULL; -void * (CODEGEN_FUNCPTR *_ptrc_glMapBuffer)(GLenum target, GLenum access) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glUnmapBuffer)(GLenum target) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glAttachShader)(GLuint program, GLuint shader) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindAttribLocation)(GLuint program, GLuint index, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompileShader)(GLuint shader) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateProgram)(void) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateShader)(GLenum type) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteProgram)(GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteShader)(GLuint shader) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDetachShader)(GLuint program, GLuint shader) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDisableVertexAttribArray)(GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawBuffers)(GLsizei n, const GLenum * bufs) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnableVertexAttribArray)(GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetAttribLocation)(GLuint program, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramiv)(GLuint program, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetShaderiv)(GLuint shader, GLenum pname, GLint * params) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetUniformLocation)(GLuint program, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformfv)(GLuint program, GLint location, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformiv)(GLuint program, GLint location, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribPointerv)(GLuint index, GLenum pname, void ** pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribiv)(GLuint index, GLenum pname, GLint * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsProgram)(GLuint program) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsShader)(GLuint shader) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glLinkProgram)(GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glShaderSource)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilMaskSeparate)(GLenum face, GLuint mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glStencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1f)(GLint location, GLfloat v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1fv)(GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1i)(GLint location, GLint v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1iv)(GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2f)(GLint location, GLfloat v0, GLfloat v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2fv)(GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2i)(GLint location, GLint v0, GLint v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2iv)(GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3fv)(GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3iv)(GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4fv)(GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4iv)(GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUseProgram)(GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glValidateProgram)(GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1d)(GLuint index, GLdouble x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1f)(GLuint index, GLfloat x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1fv)(GLuint index, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1s)(GLuint index, GLshort x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1sv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2fv)(GLuint index, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2s)(GLuint index, GLshort x, GLshort y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2sv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3fv)(GLuint index, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3sv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nbv)(GLuint index, const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Niv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nsv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nubv)(GLuint index, const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nuiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nusv)(GLuint index, const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4bv)(GLuint index, const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4fv)(GLuint index, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4iv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4sv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4ubv)(GLuint index, const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4uiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4usv)(GLuint index, const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBeginConditionalRender)(GLuint id, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBeginTransformFeedback)(GLenum primitiveMode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindBufferBase)(GLenum target, GLuint index, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindFragDataLocation)(GLuint program, GLuint color, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindFramebuffer)(GLenum target, GLuint framebuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindRenderbuffer)(GLenum target, GLuint renderbuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindVertexArray)(GLuint ren_array) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) = NULL; -GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckFramebufferStatus)(GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClampColor)(GLenum target, GLenum clamp) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteFramebuffers)(GLsizei n, const GLuint * framebuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteVertexArrays)(GLsizei n, const GLuint * arrays) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDisablei)(GLenum target, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnablei)(GLenum target, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEndConditionalRender)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEndTransformFeedback)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenFramebuffers)(GLsizei n, GLuint * framebuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenRenderbuffers)(GLsizei n, GLuint * renderbuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenVertexArrays)(GLsizei n, GLuint * arrays) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenerateMipmap)(GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBooleani_v)(GLenum target, GLuint index, GLboolean * data) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetFragDataLocation)(GLuint program, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetIntegeri_v)(GLenum target, GLuint index, GLint * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params) = NULL; -const GLubyte * (CODEGEN_FUNCPTR *_ptrc_glGetStringi)(GLenum name, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterIiv)(GLenum target, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformuiv)(GLuint program, GLint location, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsEnabledi)(GLenum target, GLuint index) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsFramebuffer)(GLuint framebuffer) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsRenderbuffer)(GLuint renderbuffer) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsVertexArray)(GLuint ren_array) = NULL; -void * (CODEGEN_FUNCPTR *_ptrc_glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameterIiv)(GLenum target, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1ui)(GLint location, GLuint v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1uiv)(GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2ui)(GLint location, GLuint v0, GLuint v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2uiv)(GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3uiv)(GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4uiv)(GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1i)(GLuint index, GLint x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1iv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1ui)(GLuint index, GLuint x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1uiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2i)(GLuint index, GLint x, GLint y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2iv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2ui)(GLuint index, GLuint x, GLuint y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2uiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3iv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3uiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4bv)(GLuint index, const GLbyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4iv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4sv)(GLuint index, const GLshort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4ubv)(GLuint index, const GLubyte * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4uiv)(GLuint index, const GLuint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4usv)(GLuint index, const GLushort * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glGetUniformBlockIndex)(GLuint program, const GLchar * uniformBlockName) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPrimitiveRestartIndex)(GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexBuffer)(GLenum target, GLenum internalformat, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) = NULL; - -GLenum (CODEGEN_FUNCPTR *_ptrc_glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteSync)(GLsync sync) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex) = NULL; -GLsync (CODEGEN_FUNCPTR *_ptrc_glFenceSync)(GLenum condition, GLbitfield flags) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetInteger64i_v)(GLenum target, GLuint index, GLint64 * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetInteger64v)(GLenum pname, GLint64 * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetMultisamplefv)(GLenum pname, GLuint index, GLfloat * val) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsSync)(GLsync sync) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProvokingVertex)(GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSampleMaski)(GLuint maskNumber, GLbitfield mask) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindSampler)(GLuint unit, GLuint sampler) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteSamplers)(GLsizei count, const GLuint * samplers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenSamplers)(GLsizei count, GLuint * samplers) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetFragDataIndex)(GLuint program, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsSampler)(GLuint sampler) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glQueryCounter)(GLuint id, GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribDivisor)(GLuint index, GLuint divisor) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBeginQueryIndexed)(GLenum target, GLuint index, GLuint id) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindTransformFeedback)(GLenum target, GLuint id) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationi)(GLuint buf, GLenum mode) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBlendFunci)(GLuint buf, GLenum src, GLenum dst) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteTransformFeedbacks)(GLsizei n, const GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysIndirect)(GLenum mode, const void * indirect) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedback)(GLenum mode, GLuint id) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEndQueryIndexed)(GLenum target, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenTransformFeedbacks)(GLsizei n, GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint * params) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glGetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar * name) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetUniformdv)(GLuint program, GLint location, GLdouble * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsTransformFeedback)(GLuint id) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMinSampleShading)(GLfloat value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPatchParameterfv)(GLenum pname, const GLfloat * values) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPatchParameteri)(GLenum pname, GLint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glPauseTransformFeedback)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glResumeTransformFeedback)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1d)(GLint location, GLdouble x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform1dv)(GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2d)(GLint location, GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform2dv)(GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform3dv)(GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniform4dv)(GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint * indices) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glActiveShaderProgram)(GLuint pipeline, GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindProgramPipeline)(GLuint pipeline) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearDepthf)(GLfloat d) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const* strings) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDeleteProgramPipelines)(GLsizei n, const GLuint * pipelines) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDepthRangef)(GLfloat n, GLfloat f) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenProgramPipelines)(GLsizei n, GLuint * pipelines) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetDoublei_v)(GLenum target, GLuint index, GLdouble * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetFloati_v)(GLenum target, GLuint index, GLfloat * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble * params) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsProgramPipeline)(GLuint pipeline) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramBinary)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramParameteri)(GLuint program, GLenum pname, GLint value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1d)(GLuint program, GLint location, GLdouble v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1f)(GLuint program, GLint location, GLfloat v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1i)(GLuint program, GLint location, GLint v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1ui)(GLuint program, GLint location, GLuint v0) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glReleaseShaderCompiler)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScissorArrayv)(GLuint first, GLsizei count, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glScissorIndexedv)(GLuint index, const GLint * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glShaderBinary)(GLsizei count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glUseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glValidateProgramPipeline)(GLuint pipeline) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL1d)(GLuint index, GLdouble x) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL1dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL2d)(GLuint index, GLdouble x, GLdouble y) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL2dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL3dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL4dv)(GLuint index, const GLdouble * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glViewportArrayv)(GLuint first, GLsizei count, const GLfloat * v) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glViewportIndexedfv)(GLuint index, const GLfloat * v) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMemoryBarrier)(GLbitfield barriers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_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) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDispatchComputeIndirect)(GLintptr indirect) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFramebufferParameteri)(GLenum target, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferParameteriv)(GLenum target, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint * params) = NULL; -GLuint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar * name) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar * name) = NULL; -GLint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawArraysIndirect)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribBinding)(GLuint attribindex, GLuint bindingindex) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexBindingDivisor)(GLuint bindingindex, GLuint divisor) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBindBuffersBase)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindBuffersRange)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindImageTextures)(GLuint first, GLsizei count, const GLuint * textures) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindSamplers)(GLuint first, GLsizei count, const GLuint * samplers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindTextures)(GLuint first, GLsizei count, const GLuint * textures) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glBindVertexBuffers)(GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearTexImage)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data) = NULL; - -void (CODEGEN_FUNCPTR *_ptrc_glBindTextureUnit)(GLuint unit, GLuint texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_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) = NULL; -GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckNamedFramebufferStatus)(GLuint framebuffer, GLenum target) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedBufferData)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedBufferSubData)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferfi)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat depth, GLint stencil) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferfv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferuiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint * value) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glClipControl)(GLenum origin, GLenum depth) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyNamedBufferSubData)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateBuffers)(GLsizei n, GLuint * buffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateFramebuffers)(GLsizei n, GLuint * framebuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateProgramPipelines)(GLsizei n, GLuint * pipelines) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateQueries)(GLenum target, GLsizei n, GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateRenderbuffers)(GLsizei n, GLuint * renderbuffers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateSamplers)(GLsizei n, GLuint * samplers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateTextures)(GLenum target, GLsizei n, GLuint * textures) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateTransformFeedbacks)(GLsizei n, GLuint * ids) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glCreateVertexArrays)(GLsizei n, GLuint * arrays) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glDisableVertexArrayAttrib)(GLuint vaobj, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glEnableVertexArrayAttrib)(GLuint vaobj, GLuint index) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glFlushMappedNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGenerateTextureMipmap)(GLuint texture) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTextureImage)(GLuint texture, GLint level, GLsizei bufSize, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels) = NULL; -GLenum (CODEGEN_FUNCPTR *_ptrc_glGetGraphicsResetStatus)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferParameteri64v)(GLuint buffer, GLenum pname, GLint64 * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferParameteriv)(GLuint buffer, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferPointerv)(GLuint buffer, GLenum pname, void ** params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedFramebufferAttachmentParameteriv)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedFramebufferParameteriv)(GLuint framebuffer, GLenum pname, GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetNamedRenderbufferParameteriv)(GLuint renderbuffer, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjecti64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectui64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectuiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureImage)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureLevelParameterfv)(GLuint texture, GLint level, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureLevelParameteriv)(GLuint texture, GLint level, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterIiv)(GLuint texture, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterIuiv)(GLuint texture, GLenum pname, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterfv)(GLuint texture, GLenum pname, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameteriv)(GLuint texture, GLenum pname, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_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) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbacki64_v)(GLuint xfb, GLenum pname, GLuint index, GLint64 * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbacki_v)(GLuint xfb, GLenum pname, GLuint index, GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbackiv)(GLuint xfb, GLenum pname, GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayIndexed64iv)(GLuint vaobj, GLuint index, GLenum pname, GLint64 * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayIndexediv)(GLuint vaobj, GLuint index, GLenum pname, GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayiv)(GLuint vaobj, GLenum pname, GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnCompressedTexImage)(GLenum target, GLint lod, GLsizei bufSize, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformdv)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformfv)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformiv)(GLuint program, GLint location, GLsizei bufSize, GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformuiv)(GLuint program, GLint location, GLsizei bufSize, GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateNamedFramebufferData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glInvalidateNamedFramebufferSubData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) = NULL; -void * (CODEGEN_FUNCPTR *_ptrc_glMapNamedBuffer)(GLuint buffer, GLenum access) = NULL; -void * (CODEGEN_FUNCPTR *_ptrc_glMapNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glMemoryBarrierByRegion)(GLbitfield barriers) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferData)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferStorage)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferDrawBuffer)(GLuint framebuffer, GLenum buf) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferDrawBuffers)(GLuint framebuffer, GLsizei n, const GLenum * bufs) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferParameteri)(GLuint framebuffer, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferReadBuffer)(GLuint framebuffer, GLenum src) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferRenderbuffer)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferTexture)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferTextureLayer)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedRenderbufferStorage)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glNamedRenderbufferStorageMultisample)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glReadnPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureBarrier)(void) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureBuffer)(GLuint texture, GLenum internalformat, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureBufferRange)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterIiv)(GLuint texture, GLenum pname, const GLint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterIuiv)(GLuint texture, GLenum pname, const GLuint * params) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterf)(GLuint texture, GLenum pname, GLfloat param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterfv)(GLuint texture, GLenum pname, const GLfloat * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameteri)(GLuint texture, GLenum pname, GLint param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureParameteriv)(GLuint texture, GLenum pname, const GLint * param) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage1D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage2D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage2DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage3D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage3DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackBufferBase)(GLuint xfb, GLuint index, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackBufferRange)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) = NULL; -GLboolean (CODEGEN_FUNCPTR *_ptrc_glUnmapNamedBuffer)(GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribBinding)(GLuint vaobj, GLuint attribindex, GLuint bindingindex) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribIFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribLFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayBindingDivisor)(GLuint vaobj, GLuint bindingindex, GLuint divisor) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayElementBuffer)(GLuint vaobj, GLuint buffer) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayVertexBuffer)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) = NULL; -void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayVertexBuffers)(GLuint vaobj, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides) = NULL; - -static int Load_Version_4_5(void) -{ - int numFailed = 0; - _ptrc_glAccum = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glAccum"); - if(!_ptrc_glAccum) numFailed++; - _ptrc_glAlphaFunc = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glAlphaFunc"); - if(!_ptrc_glAlphaFunc) numFailed++; - _ptrc_glBegin = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glBegin"); - if(!_ptrc_glBegin) numFailed++; - _ptrc_glBitmap = (void (CODEGEN_FUNCPTR *)(GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, const GLubyte *))IntGetProcAddress("glBitmap"); - if(!_ptrc_glBitmap) numFailed++; - _ptrc_glBlendFunc = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glBlendFunc"); - if(!_ptrc_glBlendFunc) numFailed++; - _ptrc_glCallList = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glCallList"); - if(!_ptrc_glCallList) numFailed++; - _ptrc_glCallLists = (void (CODEGEN_FUNCPTR *)(GLsizei, GLenum, const void *))IntGetProcAddress("glCallLists"); - if(!_ptrc_glCallLists) numFailed++; - _ptrc_glClear = (void (CODEGEN_FUNCPTR *)(GLbitfield))IntGetProcAddress("glClear"); - if(!_ptrc_glClear) numFailed++; - _ptrc_glClearAccum = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glClearAccum"); - if(!_ptrc_glClearAccum) numFailed++; - _ptrc_glClearColor = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glClearColor"); - if(!_ptrc_glClearColor) numFailed++; - _ptrc_glClearDepth = (void (CODEGEN_FUNCPTR *)(GLdouble))IntGetProcAddress("glClearDepth"); - if(!_ptrc_glClearDepth) numFailed++; - _ptrc_glClearIndex = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glClearIndex"); - if(!_ptrc_glClearIndex) numFailed++; - _ptrc_glClearStencil = (void (CODEGEN_FUNCPTR *)(GLint))IntGetProcAddress("glClearStencil"); - if(!_ptrc_glClearStencil) numFailed++; - _ptrc_glClipPlane = (void (CODEGEN_FUNCPTR *)(GLenum, const GLdouble *))IntGetProcAddress("glClipPlane"); - if(!_ptrc_glClipPlane) numFailed++; - _ptrc_glColor3b = (void (CODEGEN_FUNCPTR *)(GLbyte, GLbyte, GLbyte))IntGetProcAddress("glColor3b"); - if(!_ptrc_glColor3b) numFailed++; - _ptrc_glColor3bv = (void (CODEGEN_FUNCPTR *)(const GLbyte *))IntGetProcAddress("glColor3bv"); - if(!_ptrc_glColor3bv) numFailed++; - _ptrc_glColor3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glColor3d"); - if(!_ptrc_glColor3d) numFailed++; - _ptrc_glColor3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glColor3dv"); - if(!_ptrc_glColor3dv) numFailed++; - _ptrc_glColor3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glColor3f"); - if(!_ptrc_glColor3f) numFailed++; - _ptrc_glColor3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glColor3fv"); - if(!_ptrc_glColor3fv) numFailed++; - _ptrc_glColor3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glColor3i"); - if(!_ptrc_glColor3i) numFailed++; - _ptrc_glColor3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glColor3iv"); - if(!_ptrc_glColor3iv) numFailed++; - _ptrc_glColor3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glColor3s"); - if(!_ptrc_glColor3s) numFailed++; - _ptrc_glColor3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glColor3sv"); - if(!_ptrc_glColor3sv) numFailed++; - _ptrc_glColor3ub = (void (CODEGEN_FUNCPTR *)(GLubyte, GLubyte, GLubyte))IntGetProcAddress("glColor3ub"); - if(!_ptrc_glColor3ub) numFailed++; - _ptrc_glColor3ubv = (void (CODEGEN_FUNCPTR *)(const GLubyte *))IntGetProcAddress("glColor3ubv"); - if(!_ptrc_glColor3ubv) numFailed++; - _ptrc_glColor3ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glColor3ui"); - if(!_ptrc_glColor3ui) numFailed++; - _ptrc_glColor3uiv = (void (CODEGEN_FUNCPTR *)(const GLuint *))IntGetProcAddress("glColor3uiv"); - if(!_ptrc_glColor3uiv) numFailed++; - _ptrc_glColor3us = (void (CODEGEN_FUNCPTR *)(GLushort, GLushort, GLushort))IntGetProcAddress("glColor3us"); - if(!_ptrc_glColor3us) numFailed++; - _ptrc_glColor3usv = (void (CODEGEN_FUNCPTR *)(const GLushort *))IntGetProcAddress("glColor3usv"); - if(!_ptrc_glColor3usv) numFailed++; - _ptrc_glColor4b = (void (CODEGEN_FUNCPTR *)(GLbyte, GLbyte, GLbyte, GLbyte))IntGetProcAddress("glColor4b"); - if(!_ptrc_glColor4b) numFailed++; - _ptrc_glColor4bv = (void (CODEGEN_FUNCPTR *)(const GLbyte *))IntGetProcAddress("glColor4bv"); - if(!_ptrc_glColor4bv) numFailed++; - _ptrc_glColor4d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glColor4d"); - if(!_ptrc_glColor4d) numFailed++; - _ptrc_glColor4dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glColor4dv"); - if(!_ptrc_glColor4dv) numFailed++; - _ptrc_glColor4f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glColor4f"); - if(!_ptrc_glColor4f) numFailed++; - _ptrc_glColor4fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glColor4fv"); - if(!_ptrc_glColor4fv) numFailed++; - _ptrc_glColor4i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glColor4i"); - if(!_ptrc_glColor4i) numFailed++; - _ptrc_glColor4iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glColor4iv"); - if(!_ptrc_glColor4iv) numFailed++; - _ptrc_glColor4s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glColor4s"); - if(!_ptrc_glColor4s) numFailed++; - _ptrc_glColor4sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glColor4sv"); - if(!_ptrc_glColor4sv) numFailed++; - _ptrc_glColor4ub = (void (CODEGEN_FUNCPTR *)(GLubyte, GLubyte, GLubyte, GLubyte))IntGetProcAddress("glColor4ub"); - if(!_ptrc_glColor4ub) numFailed++; - _ptrc_glColor4ubv = (void (CODEGEN_FUNCPTR *)(const GLubyte *))IntGetProcAddress("glColor4ubv"); - if(!_ptrc_glColor4ubv) numFailed++; - _ptrc_glColor4ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glColor4ui"); - if(!_ptrc_glColor4ui) numFailed++; - _ptrc_glColor4uiv = (void (CODEGEN_FUNCPTR *)(const GLuint *))IntGetProcAddress("glColor4uiv"); - if(!_ptrc_glColor4uiv) numFailed++; - _ptrc_glColor4us = (void (CODEGEN_FUNCPTR *)(GLushort, GLushort, GLushort, GLushort))IntGetProcAddress("glColor4us"); - if(!_ptrc_glColor4us) numFailed++; - _ptrc_glColor4usv = (void (CODEGEN_FUNCPTR *)(const GLushort *))IntGetProcAddress("glColor4usv"); - if(!_ptrc_glColor4usv) numFailed++; - _ptrc_glColorMask = (void (CODEGEN_FUNCPTR *)(GLboolean, GLboolean, GLboolean, GLboolean))IntGetProcAddress("glColorMask"); - if(!_ptrc_glColorMask) numFailed++; - _ptrc_glColorMaterial = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glColorMaterial"); - if(!_ptrc_glColorMaterial) numFailed++; - _ptrc_glCopyPixels = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLsizei, GLsizei, GLenum))IntGetProcAddress("glCopyPixels"); - if(!_ptrc_glCopyPixels) numFailed++; - _ptrc_glCullFace = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glCullFace"); - if(!_ptrc_glCullFace) numFailed++; - _ptrc_glDeleteLists = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei))IntGetProcAddress("glDeleteLists"); - if(!_ptrc_glDeleteLists) numFailed++; - _ptrc_glDepthFunc = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glDepthFunc"); - if(!_ptrc_glDepthFunc) numFailed++; - _ptrc_glDepthMask = (void (CODEGEN_FUNCPTR *)(GLboolean))IntGetProcAddress("glDepthMask"); - if(!_ptrc_glDepthMask) numFailed++; - _ptrc_glDepthRange = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glDepthRange"); - if(!_ptrc_glDepthRange) numFailed++; - _ptrc_glDisable = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glDisable"); - if(!_ptrc_glDisable) numFailed++; - _ptrc_glDrawBuffer = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glDrawBuffer"); - if(!_ptrc_glDrawBuffer) numFailed++; - _ptrc_glDrawPixels = (void (CODEGEN_FUNCPTR *)(GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glDrawPixels"); - if(!_ptrc_glDrawPixels) numFailed++; - _ptrc_glEdgeFlag = (void (CODEGEN_FUNCPTR *)(GLboolean))IntGetProcAddress("glEdgeFlag"); - if(!_ptrc_glEdgeFlag) numFailed++; - _ptrc_glEdgeFlagv = (void (CODEGEN_FUNCPTR *)(const GLboolean *))IntGetProcAddress("glEdgeFlagv"); - if(!_ptrc_glEdgeFlagv) numFailed++; - _ptrc_glEnable = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glEnable"); - if(!_ptrc_glEnable) numFailed++; - _ptrc_glEnd = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glEnd"); - if(!_ptrc_glEnd) numFailed++; - _ptrc_glEndList = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glEndList"); - if(!_ptrc_glEndList) numFailed++; - _ptrc_glEvalCoord1d = (void (CODEGEN_FUNCPTR *)(GLdouble))IntGetProcAddress("glEvalCoord1d"); - if(!_ptrc_glEvalCoord1d) numFailed++; - _ptrc_glEvalCoord1dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glEvalCoord1dv"); - if(!_ptrc_glEvalCoord1dv) numFailed++; - _ptrc_glEvalCoord1f = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glEvalCoord1f"); - if(!_ptrc_glEvalCoord1f) numFailed++; - _ptrc_glEvalCoord1fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glEvalCoord1fv"); - if(!_ptrc_glEvalCoord1fv) numFailed++; - _ptrc_glEvalCoord2d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glEvalCoord2d"); - if(!_ptrc_glEvalCoord2d) numFailed++; - _ptrc_glEvalCoord2dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glEvalCoord2dv"); - if(!_ptrc_glEvalCoord2dv) numFailed++; - _ptrc_glEvalCoord2f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glEvalCoord2f"); - if(!_ptrc_glEvalCoord2f) numFailed++; - _ptrc_glEvalCoord2fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glEvalCoord2fv"); - if(!_ptrc_glEvalCoord2fv) numFailed++; - _ptrc_glEvalMesh1 = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint))IntGetProcAddress("glEvalMesh1"); - if(!_ptrc_glEvalMesh1) numFailed++; - _ptrc_glEvalMesh2 = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint))IntGetProcAddress("glEvalMesh2"); - if(!_ptrc_glEvalMesh2) numFailed++; - _ptrc_glEvalPoint1 = (void (CODEGEN_FUNCPTR *)(GLint))IntGetProcAddress("glEvalPoint1"); - if(!_ptrc_glEvalPoint1) numFailed++; - _ptrc_glEvalPoint2 = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glEvalPoint2"); - if(!_ptrc_glEvalPoint2) numFailed++; - _ptrc_glFeedbackBuffer = (void (CODEGEN_FUNCPTR *)(GLsizei, GLenum, GLfloat *))IntGetProcAddress("glFeedbackBuffer"); - if(!_ptrc_glFeedbackBuffer) numFailed++; - _ptrc_glFinish = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glFinish"); - if(!_ptrc_glFinish) numFailed++; - _ptrc_glFlush = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glFlush"); - if(!_ptrc_glFlush) numFailed++; - _ptrc_glFogf = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glFogf"); - if(!_ptrc_glFogf) numFailed++; - _ptrc_glFogfv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glFogfv"); - if(!_ptrc_glFogfv) numFailed++; - _ptrc_glFogi = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glFogi"); - if(!_ptrc_glFogi) numFailed++; - _ptrc_glFogiv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glFogiv"); - if(!_ptrc_glFogiv) numFailed++; - _ptrc_glFrontFace = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glFrontFace"); - if(!_ptrc_glFrontFace) numFailed++; - _ptrc_glFrustum = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glFrustum"); - if(!_ptrc_glFrustum) numFailed++; - _ptrc_glGenLists = (GLuint (CODEGEN_FUNCPTR *)(GLsizei))IntGetProcAddress("glGenLists"); - if(!_ptrc_glGenLists) numFailed++; - _ptrc_glGetBooleanv = (void (CODEGEN_FUNCPTR *)(GLenum, GLboolean *))IntGetProcAddress("glGetBooleanv"); - if(!_ptrc_glGetBooleanv) numFailed++; - _ptrc_glGetClipPlane = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble *))IntGetProcAddress("glGetClipPlane"); - if(!_ptrc_glGetClipPlane) numFailed++; - _ptrc_glGetDoublev = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble *))IntGetProcAddress("glGetDoublev"); - if(!_ptrc_glGetDoublev) numFailed++; - _ptrc_glGetError = (GLenum (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glGetError"); - if(!_ptrc_glGetError) numFailed++; - _ptrc_glGetFloatv = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat *))IntGetProcAddress("glGetFloatv"); - if(!_ptrc_glGetFloatv) numFailed++; - _ptrc_glGetIntegerv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint *))IntGetProcAddress("glGetIntegerv"); - if(!_ptrc_glGetIntegerv) numFailed++; - _ptrc_glGetLightfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetLightfv"); - if(!_ptrc_glGetLightfv) numFailed++; - _ptrc_glGetLightiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetLightiv"); - if(!_ptrc_glGetLightiv) numFailed++; - _ptrc_glGetMapdv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLdouble *))IntGetProcAddress("glGetMapdv"); - if(!_ptrc_glGetMapdv) numFailed++; - _ptrc_glGetMapfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetMapfv"); - if(!_ptrc_glGetMapfv) numFailed++; - _ptrc_glGetMapiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetMapiv"); - if(!_ptrc_glGetMapiv) numFailed++; - _ptrc_glGetMaterialfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetMaterialfv"); - if(!_ptrc_glGetMaterialfv) numFailed++; - _ptrc_glGetMaterialiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetMaterialiv"); - if(!_ptrc_glGetMaterialiv) numFailed++; - _ptrc_glGetPixelMapfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat *))IntGetProcAddress("glGetPixelMapfv"); - if(!_ptrc_glGetPixelMapfv) numFailed++; - _ptrc_glGetPixelMapuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint *))IntGetProcAddress("glGetPixelMapuiv"); - if(!_ptrc_glGetPixelMapuiv) numFailed++; - _ptrc_glGetPixelMapusv = (void (CODEGEN_FUNCPTR *)(GLenum, GLushort *))IntGetProcAddress("glGetPixelMapusv"); - if(!_ptrc_glGetPixelMapusv) numFailed++; - _ptrc_glGetPolygonStipple = (void (CODEGEN_FUNCPTR *)(GLubyte *))IntGetProcAddress("glGetPolygonStipple"); - if(!_ptrc_glGetPolygonStipple) numFailed++; - _ptrc_glGetString = (const GLubyte * (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glGetString"); - if(!_ptrc_glGetString) numFailed++; - _ptrc_glGetTexEnvfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetTexEnvfv"); - if(!_ptrc_glGetTexEnvfv) numFailed++; - _ptrc_glGetTexEnviv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetTexEnviv"); - if(!_ptrc_glGetTexEnviv) numFailed++; - _ptrc_glGetTexGendv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLdouble *))IntGetProcAddress("glGetTexGendv"); - if(!_ptrc_glGetTexGendv) numFailed++; - _ptrc_glGetTexGenfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetTexGenfv"); - if(!_ptrc_glGetTexGenfv) numFailed++; - _ptrc_glGetTexGeniv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetTexGeniv"); - if(!_ptrc_glGetTexGeniv) numFailed++; - _ptrc_glGetTexImage = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLenum, void *))IntGetProcAddress("glGetTexImage"); - if(!_ptrc_glGetTexImage) numFailed++; - _ptrc_glGetTexLevelParameterfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLfloat *))IntGetProcAddress("glGetTexLevelParameterfv"); - if(!_ptrc_glGetTexLevelParameterfv) numFailed++; - _ptrc_glGetTexLevelParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLint *))IntGetProcAddress("glGetTexLevelParameteriv"); - if(!_ptrc_glGetTexLevelParameteriv) numFailed++; - _ptrc_glGetTexParameterfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat *))IntGetProcAddress("glGetTexParameterfv"); - if(!_ptrc_glGetTexParameterfv) numFailed++; - _ptrc_glGetTexParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetTexParameteriv"); - if(!_ptrc_glGetTexParameteriv) numFailed++; - _ptrc_glHint = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glHint"); - if(!_ptrc_glHint) numFailed++; - _ptrc_glIndexMask = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIndexMask"); - if(!_ptrc_glIndexMask) numFailed++; - _ptrc_glIndexd = (void (CODEGEN_FUNCPTR *)(GLdouble))IntGetProcAddress("glIndexd"); - if(!_ptrc_glIndexd) numFailed++; - _ptrc_glIndexdv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glIndexdv"); - if(!_ptrc_glIndexdv) numFailed++; - _ptrc_glIndexf = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glIndexf"); - if(!_ptrc_glIndexf) numFailed++; - _ptrc_glIndexfv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glIndexfv"); - if(!_ptrc_glIndexfv) numFailed++; - _ptrc_glIndexi = (void (CODEGEN_FUNCPTR *)(GLint))IntGetProcAddress("glIndexi"); - if(!_ptrc_glIndexi) numFailed++; - _ptrc_glIndexiv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glIndexiv"); - if(!_ptrc_glIndexiv) numFailed++; - _ptrc_glIndexs = (void (CODEGEN_FUNCPTR *)(GLshort))IntGetProcAddress("glIndexs"); - if(!_ptrc_glIndexs) numFailed++; - _ptrc_glIndexsv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glIndexsv"); - if(!_ptrc_glIndexsv) numFailed++; - _ptrc_glInitNames = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glInitNames"); - if(!_ptrc_glInitNames) numFailed++; - _ptrc_glIsEnabled = (GLboolean (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glIsEnabled"); - if(!_ptrc_glIsEnabled) numFailed++; - _ptrc_glIsList = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsList"); - if(!_ptrc_glIsList) numFailed++; - _ptrc_glLightModelf = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glLightModelf"); - if(!_ptrc_glLightModelf) numFailed++; - _ptrc_glLightModelfv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glLightModelfv"); - if(!_ptrc_glLightModelfv) numFailed++; - _ptrc_glLightModeli = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glLightModeli"); - if(!_ptrc_glLightModeli) numFailed++; - _ptrc_glLightModeliv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glLightModeliv"); - if(!_ptrc_glLightModeliv) numFailed++; - _ptrc_glLightf = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat))IntGetProcAddress("glLightf"); - if(!_ptrc_glLightf) numFailed++; - _ptrc_glLightfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLfloat *))IntGetProcAddress("glLightfv"); - if(!_ptrc_glLightfv) numFailed++; - _ptrc_glLighti = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glLighti"); - if(!_ptrc_glLighti) numFailed++; - _ptrc_glLightiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glLightiv"); - if(!_ptrc_glLightiv) numFailed++; - _ptrc_glLineStipple = (void (CODEGEN_FUNCPTR *)(GLint, GLushort))IntGetProcAddress("glLineStipple"); - if(!_ptrc_glLineStipple) numFailed++; - _ptrc_glLineWidth = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glLineWidth"); - if(!_ptrc_glLineWidth) numFailed++; - _ptrc_glListBase = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glListBase"); - if(!_ptrc_glListBase) numFailed++; - _ptrc_glLoadIdentity = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glLoadIdentity"); - if(!_ptrc_glLoadIdentity) numFailed++; - _ptrc_glLoadMatrixd = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glLoadMatrixd"); - if(!_ptrc_glLoadMatrixd) numFailed++; - _ptrc_glLoadMatrixf = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glLoadMatrixf"); - if(!_ptrc_glLoadMatrixf) numFailed++; - _ptrc_glLoadName = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glLoadName"); - if(!_ptrc_glLoadName) numFailed++; - _ptrc_glLogicOp = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glLogicOp"); - if(!_ptrc_glLogicOp) numFailed++; - _ptrc_glMap1d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble, GLdouble, GLint, GLint, const GLdouble *))IntGetProcAddress("glMap1d"); - if(!_ptrc_glMap1d) numFailed++; - _ptrc_glMap1f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat, GLfloat, GLint, GLint, const GLfloat *))IntGetProcAddress("glMap1f"); - if(!_ptrc_glMap1f) numFailed++; - _ptrc_glMap2d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *))IntGetProcAddress("glMap2d"); - if(!_ptrc_glMap2d) numFailed++; - _ptrc_glMap2f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *))IntGetProcAddress("glMap2f"); - if(!_ptrc_glMap2f) numFailed++; - _ptrc_glMapGrid1d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble, GLdouble))IntGetProcAddress("glMapGrid1d"); - if(!_ptrc_glMapGrid1d) numFailed++; - _ptrc_glMapGrid1f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat, GLfloat))IntGetProcAddress("glMapGrid1f"); - if(!_ptrc_glMapGrid1f) numFailed++; - _ptrc_glMapGrid2d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble))IntGetProcAddress("glMapGrid2d"); - if(!_ptrc_glMapGrid2d) numFailed++; - _ptrc_glMapGrid2f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat))IntGetProcAddress("glMapGrid2f"); - if(!_ptrc_glMapGrid2f) numFailed++; - _ptrc_glMaterialf = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat))IntGetProcAddress("glMaterialf"); - if(!_ptrc_glMaterialf) numFailed++; - _ptrc_glMaterialfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLfloat *))IntGetProcAddress("glMaterialfv"); - if(!_ptrc_glMaterialfv) numFailed++; - _ptrc_glMateriali = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glMateriali"); - if(!_ptrc_glMateriali) numFailed++; - _ptrc_glMaterialiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glMaterialiv"); - if(!_ptrc_glMaterialiv) numFailed++; - _ptrc_glMatrixMode = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glMatrixMode"); - if(!_ptrc_glMatrixMode) numFailed++; - _ptrc_glMultMatrixd = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glMultMatrixd"); - if(!_ptrc_glMultMatrixd) numFailed++; - _ptrc_glMultMatrixf = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glMultMatrixf"); - if(!_ptrc_glMultMatrixf) numFailed++; - _ptrc_glNewList = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glNewList"); - if(!_ptrc_glNewList) numFailed++; - _ptrc_glNormal3b = (void (CODEGEN_FUNCPTR *)(GLbyte, GLbyte, GLbyte))IntGetProcAddress("glNormal3b"); - if(!_ptrc_glNormal3b) numFailed++; - _ptrc_glNormal3bv = (void (CODEGEN_FUNCPTR *)(const GLbyte *))IntGetProcAddress("glNormal3bv"); - if(!_ptrc_glNormal3bv) numFailed++; - _ptrc_glNormal3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glNormal3d"); - if(!_ptrc_glNormal3d) numFailed++; - _ptrc_glNormal3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glNormal3dv"); - if(!_ptrc_glNormal3dv) numFailed++; - _ptrc_glNormal3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glNormal3f"); - if(!_ptrc_glNormal3f) numFailed++; - _ptrc_glNormal3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glNormal3fv"); - if(!_ptrc_glNormal3fv) numFailed++; - _ptrc_glNormal3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glNormal3i"); - if(!_ptrc_glNormal3i) numFailed++; - _ptrc_glNormal3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glNormal3iv"); - if(!_ptrc_glNormal3iv) numFailed++; - _ptrc_glNormal3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glNormal3s"); - if(!_ptrc_glNormal3s) numFailed++; - _ptrc_glNormal3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glNormal3sv"); - if(!_ptrc_glNormal3sv) numFailed++; - _ptrc_glOrtho = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glOrtho"); - if(!_ptrc_glOrtho) numFailed++; - _ptrc_glPassThrough = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glPassThrough"); - if(!_ptrc_glPassThrough) numFailed++; - _ptrc_glPixelMapfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLfloat *))IntGetProcAddress("glPixelMapfv"); - if(!_ptrc_glPixelMapfv) numFailed++; - _ptrc_glPixelMapuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLuint *))IntGetProcAddress("glPixelMapuiv"); - if(!_ptrc_glPixelMapuiv) numFailed++; - _ptrc_glPixelMapusv = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLushort *))IntGetProcAddress("glPixelMapusv"); - if(!_ptrc_glPixelMapusv) numFailed++; - _ptrc_glPixelStoref = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glPixelStoref"); - if(!_ptrc_glPixelStoref) numFailed++; - _ptrc_glPixelStorei = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glPixelStorei"); - if(!_ptrc_glPixelStorei) numFailed++; - _ptrc_glPixelTransferf = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glPixelTransferf"); - if(!_ptrc_glPixelTransferf) numFailed++; - _ptrc_glPixelTransferi = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glPixelTransferi"); - if(!_ptrc_glPixelTransferi) numFailed++; - _ptrc_glPixelZoom = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glPixelZoom"); - if(!_ptrc_glPixelZoom) numFailed++; - _ptrc_glPointSize = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glPointSize"); - if(!_ptrc_glPointSize) numFailed++; - _ptrc_glPolygonMode = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glPolygonMode"); - if(!_ptrc_glPolygonMode) numFailed++; - _ptrc_glPolygonStipple = (void (CODEGEN_FUNCPTR *)(const GLubyte *))IntGetProcAddress("glPolygonStipple"); - if(!_ptrc_glPolygonStipple) numFailed++; - _ptrc_glPopAttrib = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopAttrib"); - if(!_ptrc_glPopAttrib) numFailed++; - _ptrc_glPopMatrix = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopMatrix"); - if(!_ptrc_glPopMatrix) numFailed++; - _ptrc_glPopName = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopName"); - if(!_ptrc_glPopName) numFailed++; - _ptrc_glPushAttrib = (void (CODEGEN_FUNCPTR *)(GLbitfield))IntGetProcAddress("glPushAttrib"); - if(!_ptrc_glPushAttrib) numFailed++; - _ptrc_glPushMatrix = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPushMatrix"); - if(!_ptrc_glPushMatrix) numFailed++; - _ptrc_glPushName = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glPushName"); - if(!_ptrc_glPushName) numFailed++; - _ptrc_glRasterPos2d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glRasterPos2d"); - if(!_ptrc_glRasterPos2d) numFailed++; - _ptrc_glRasterPos2dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glRasterPos2dv"); - if(!_ptrc_glRasterPos2dv) numFailed++; - _ptrc_glRasterPos2f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glRasterPos2f"); - if(!_ptrc_glRasterPos2f) numFailed++; - _ptrc_glRasterPos2fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glRasterPos2fv"); - if(!_ptrc_glRasterPos2fv) numFailed++; - _ptrc_glRasterPos2i = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glRasterPos2i"); - if(!_ptrc_glRasterPos2i) numFailed++; - _ptrc_glRasterPos2iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glRasterPos2iv"); - if(!_ptrc_glRasterPos2iv) numFailed++; - _ptrc_glRasterPos2s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort))IntGetProcAddress("glRasterPos2s"); - if(!_ptrc_glRasterPos2s) numFailed++; - _ptrc_glRasterPos2sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glRasterPos2sv"); - if(!_ptrc_glRasterPos2sv) numFailed++; - _ptrc_glRasterPos3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glRasterPos3d"); - if(!_ptrc_glRasterPos3d) numFailed++; - _ptrc_glRasterPos3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glRasterPos3dv"); - if(!_ptrc_glRasterPos3dv) numFailed++; - _ptrc_glRasterPos3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glRasterPos3f"); - if(!_ptrc_glRasterPos3f) numFailed++; - _ptrc_glRasterPos3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glRasterPos3fv"); - if(!_ptrc_glRasterPos3fv) numFailed++; - _ptrc_glRasterPos3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glRasterPos3i"); - if(!_ptrc_glRasterPos3i) numFailed++; - _ptrc_glRasterPos3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glRasterPos3iv"); - if(!_ptrc_glRasterPos3iv) numFailed++; - _ptrc_glRasterPos3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glRasterPos3s"); - if(!_ptrc_glRasterPos3s) numFailed++; - _ptrc_glRasterPos3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glRasterPos3sv"); - if(!_ptrc_glRasterPos3sv) numFailed++; - _ptrc_glRasterPos4d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glRasterPos4d"); - if(!_ptrc_glRasterPos4d) numFailed++; - _ptrc_glRasterPos4dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glRasterPos4dv"); - if(!_ptrc_glRasterPos4dv) numFailed++; - _ptrc_glRasterPos4f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glRasterPos4f"); - if(!_ptrc_glRasterPos4f) numFailed++; - _ptrc_glRasterPos4fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glRasterPos4fv"); - if(!_ptrc_glRasterPos4fv) numFailed++; - _ptrc_glRasterPos4i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glRasterPos4i"); - if(!_ptrc_glRasterPos4i) numFailed++; - _ptrc_glRasterPos4iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glRasterPos4iv"); - if(!_ptrc_glRasterPos4iv) numFailed++; - _ptrc_glRasterPos4s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glRasterPos4s"); - if(!_ptrc_glRasterPos4s) numFailed++; - _ptrc_glRasterPos4sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glRasterPos4sv"); - if(!_ptrc_glRasterPos4sv) numFailed++; - _ptrc_glReadBuffer = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glReadBuffer"); - if(!_ptrc_glReadBuffer) numFailed++; - _ptrc_glReadPixels = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *))IntGetProcAddress("glReadPixels"); - if(!_ptrc_glReadPixels) numFailed++; - _ptrc_glRectd = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glRectd"); - if(!_ptrc_glRectd) numFailed++; - _ptrc_glRectdv = (void (CODEGEN_FUNCPTR *)(const GLdouble *, const GLdouble *))IntGetProcAddress("glRectdv"); - if(!_ptrc_glRectdv) numFailed++; - _ptrc_glRectf = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glRectf"); - if(!_ptrc_glRectf) numFailed++; - _ptrc_glRectfv = (void (CODEGEN_FUNCPTR *)(const GLfloat *, const GLfloat *))IntGetProcAddress("glRectfv"); - if(!_ptrc_glRectfv) numFailed++; - _ptrc_glRecti = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glRecti"); - if(!_ptrc_glRecti) numFailed++; - _ptrc_glRectiv = (void (CODEGEN_FUNCPTR *)(const GLint *, const GLint *))IntGetProcAddress("glRectiv"); - if(!_ptrc_glRectiv) numFailed++; - _ptrc_glRects = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glRects"); - if(!_ptrc_glRects) numFailed++; - _ptrc_glRectsv = (void (CODEGEN_FUNCPTR *)(const GLshort *, const GLshort *))IntGetProcAddress("glRectsv"); - if(!_ptrc_glRectsv) numFailed++; - _ptrc_glRenderMode = (GLint (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glRenderMode"); - if(!_ptrc_glRenderMode) numFailed++; - _ptrc_glRotated = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glRotated"); - if(!_ptrc_glRotated) numFailed++; - _ptrc_glRotatef = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glRotatef"); - if(!_ptrc_glRotatef) numFailed++; - _ptrc_glScaled = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glScaled"); - if(!_ptrc_glScaled) numFailed++; - _ptrc_glScalef = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glScalef"); - if(!_ptrc_glScalef) numFailed++; - _ptrc_glScissor = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glScissor"); - if(!_ptrc_glScissor) numFailed++; - _ptrc_glSelectBuffer = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glSelectBuffer"); - if(!_ptrc_glSelectBuffer) numFailed++; - _ptrc_glShadeModel = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glShadeModel"); - if(!_ptrc_glShadeModel) numFailed++; - _ptrc_glStencilFunc = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLuint))IntGetProcAddress("glStencilFunc"); - if(!_ptrc_glStencilFunc) numFailed++; - _ptrc_glStencilMask = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glStencilMask"); - if(!_ptrc_glStencilMask) numFailed++; - _ptrc_glStencilOp = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum))IntGetProcAddress("glStencilOp"); - if(!_ptrc_glStencilOp) numFailed++; - _ptrc_glTexCoord1d = (void (CODEGEN_FUNCPTR *)(GLdouble))IntGetProcAddress("glTexCoord1d"); - if(!_ptrc_glTexCoord1d) numFailed++; - _ptrc_glTexCoord1dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glTexCoord1dv"); - if(!_ptrc_glTexCoord1dv) numFailed++; - _ptrc_glTexCoord1f = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glTexCoord1f"); - if(!_ptrc_glTexCoord1f) numFailed++; - _ptrc_glTexCoord1fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glTexCoord1fv"); - if(!_ptrc_glTexCoord1fv) numFailed++; - _ptrc_glTexCoord1i = (void (CODEGEN_FUNCPTR *)(GLint))IntGetProcAddress("glTexCoord1i"); - if(!_ptrc_glTexCoord1i) numFailed++; - _ptrc_glTexCoord1iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glTexCoord1iv"); - if(!_ptrc_glTexCoord1iv) numFailed++; - _ptrc_glTexCoord1s = (void (CODEGEN_FUNCPTR *)(GLshort))IntGetProcAddress("glTexCoord1s"); - if(!_ptrc_glTexCoord1s) numFailed++; - _ptrc_glTexCoord1sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glTexCoord1sv"); - if(!_ptrc_glTexCoord1sv) numFailed++; - _ptrc_glTexCoord2d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glTexCoord2d"); - if(!_ptrc_glTexCoord2d) numFailed++; - _ptrc_glTexCoord2dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glTexCoord2dv"); - if(!_ptrc_glTexCoord2dv) numFailed++; - _ptrc_glTexCoord2f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glTexCoord2f"); - if(!_ptrc_glTexCoord2f) numFailed++; - _ptrc_glTexCoord2fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glTexCoord2fv"); - if(!_ptrc_glTexCoord2fv) numFailed++; - _ptrc_glTexCoord2i = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glTexCoord2i"); - if(!_ptrc_glTexCoord2i) numFailed++; - _ptrc_glTexCoord2iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glTexCoord2iv"); - if(!_ptrc_glTexCoord2iv) numFailed++; - _ptrc_glTexCoord2s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort))IntGetProcAddress("glTexCoord2s"); - if(!_ptrc_glTexCoord2s) numFailed++; - _ptrc_glTexCoord2sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glTexCoord2sv"); - if(!_ptrc_glTexCoord2sv) numFailed++; - _ptrc_glTexCoord3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glTexCoord3d"); - if(!_ptrc_glTexCoord3d) numFailed++; - _ptrc_glTexCoord3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glTexCoord3dv"); - if(!_ptrc_glTexCoord3dv) numFailed++; - _ptrc_glTexCoord3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glTexCoord3f"); - if(!_ptrc_glTexCoord3f) numFailed++; - _ptrc_glTexCoord3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glTexCoord3fv"); - if(!_ptrc_glTexCoord3fv) numFailed++; - _ptrc_glTexCoord3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glTexCoord3i"); - if(!_ptrc_glTexCoord3i) numFailed++; - _ptrc_glTexCoord3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glTexCoord3iv"); - if(!_ptrc_glTexCoord3iv) numFailed++; - _ptrc_glTexCoord3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glTexCoord3s"); - if(!_ptrc_glTexCoord3s) numFailed++; - _ptrc_glTexCoord3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glTexCoord3sv"); - if(!_ptrc_glTexCoord3sv) numFailed++; - _ptrc_glTexCoord4d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glTexCoord4d"); - if(!_ptrc_glTexCoord4d) numFailed++; - _ptrc_glTexCoord4dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glTexCoord4dv"); - if(!_ptrc_glTexCoord4dv) numFailed++; - _ptrc_glTexCoord4f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glTexCoord4f"); - if(!_ptrc_glTexCoord4f) numFailed++; - _ptrc_glTexCoord4fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glTexCoord4fv"); - if(!_ptrc_glTexCoord4fv) numFailed++; - _ptrc_glTexCoord4i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glTexCoord4i"); - if(!_ptrc_glTexCoord4i) numFailed++; - _ptrc_glTexCoord4iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glTexCoord4iv"); - if(!_ptrc_glTexCoord4iv) numFailed++; - _ptrc_glTexCoord4s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glTexCoord4s"); - if(!_ptrc_glTexCoord4s) numFailed++; - _ptrc_glTexCoord4sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glTexCoord4sv"); - if(!_ptrc_glTexCoord4sv) numFailed++; - _ptrc_glTexEnvf = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat))IntGetProcAddress("glTexEnvf"); - if(!_ptrc_glTexEnvf) numFailed++; - _ptrc_glTexEnvfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLfloat *))IntGetProcAddress("glTexEnvfv"); - if(!_ptrc_glTexEnvfv) numFailed++; - _ptrc_glTexEnvi = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glTexEnvi"); - if(!_ptrc_glTexEnvi) numFailed++; - _ptrc_glTexEnviv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glTexEnviv"); - if(!_ptrc_glTexEnviv) numFailed++; - _ptrc_glTexGend = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLdouble))IntGetProcAddress("glTexGend"); - if(!_ptrc_glTexGend) numFailed++; - _ptrc_glTexGendv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLdouble *))IntGetProcAddress("glTexGendv"); - if(!_ptrc_glTexGendv) numFailed++; - _ptrc_glTexGenf = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat))IntGetProcAddress("glTexGenf"); - if(!_ptrc_glTexGenf) numFailed++; - _ptrc_glTexGenfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLfloat *))IntGetProcAddress("glTexGenfv"); - if(!_ptrc_glTexGenfv) numFailed++; - _ptrc_glTexGeni = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glTexGeni"); - if(!_ptrc_glTexGeni) numFailed++; - _ptrc_glTexGeniv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glTexGeniv"); - if(!_ptrc_glTexGeniv) numFailed++; - _ptrc_glTexImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *))IntGetProcAddress("glTexImage1D"); - if(!_ptrc_glTexImage1D) numFailed++; - _ptrc_glTexImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *))IntGetProcAddress("glTexImage2D"); - if(!_ptrc_glTexImage2D) numFailed++; - _ptrc_glTexParameterf = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLfloat))IntGetProcAddress("glTexParameterf"); - if(!_ptrc_glTexParameterf) numFailed++; - _ptrc_glTexParameterfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLfloat *))IntGetProcAddress("glTexParameterfv"); - if(!_ptrc_glTexParameterfv) numFailed++; - _ptrc_glTexParameteri = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glTexParameteri"); - if(!_ptrc_glTexParameteri) numFailed++; - _ptrc_glTexParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glTexParameteriv"); - if(!_ptrc_glTexParameteriv) numFailed++; - _ptrc_glTranslated = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glTranslated"); - if(!_ptrc_glTranslated) numFailed++; - _ptrc_glTranslatef = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glTranslatef"); - if(!_ptrc_glTranslatef) numFailed++; - _ptrc_glVertex2d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glVertex2d"); - if(!_ptrc_glVertex2d) numFailed++; - _ptrc_glVertex2dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glVertex2dv"); - if(!_ptrc_glVertex2dv) numFailed++; - _ptrc_glVertex2f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glVertex2f"); - if(!_ptrc_glVertex2f) numFailed++; - _ptrc_glVertex2fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glVertex2fv"); - if(!_ptrc_glVertex2fv) numFailed++; - _ptrc_glVertex2i = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glVertex2i"); - if(!_ptrc_glVertex2i) numFailed++; - _ptrc_glVertex2iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glVertex2iv"); - if(!_ptrc_glVertex2iv) numFailed++; - _ptrc_glVertex2s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort))IntGetProcAddress("glVertex2s"); - if(!_ptrc_glVertex2s) numFailed++; - _ptrc_glVertex2sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glVertex2sv"); - if(!_ptrc_glVertex2sv) numFailed++; - _ptrc_glVertex3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertex3d"); - if(!_ptrc_glVertex3d) numFailed++; - _ptrc_glVertex3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glVertex3dv"); - if(!_ptrc_glVertex3dv) numFailed++; - _ptrc_glVertex3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glVertex3f"); - if(!_ptrc_glVertex3f) numFailed++; - _ptrc_glVertex3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glVertex3fv"); - if(!_ptrc_glVertex3fv) numFailed++; - _ptrc_glVertex3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glVertex3i"); - if(!_ptrc_glVertex3i) numFailed++; - _ptrc_glVertex3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glVertex3iv"); - if(!_ptrc_glVertex3iv) numFailed++; - _ptrc_glVertex3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glVertex3s"); - if(!_ptrc_glVertex3s) numFailed++; - _ptrc_glVertex3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glVertex3sv"); - if(!_ptrc_glVertex3sv) numFailed++; - _ptrc_glVertex4d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertex4d"); - if(!_ptrc_glVertex4d) numFailed++; - _ptrc_glVertex4dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glVertex4dv"); - if(!_ptrc_glVertex4dv) numFailed++; - _ptrc_glVertex4f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glVertex4f"); - if(!_ptrc_glVertex4f) numFailed++; - _ptrc_glVertex4fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glVertex4fv"); - if(!_ptrc_glVertex4fv) numFailed++; - _ptrc_glVertex4i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glVertex4i"); - if(!_ptrc_glVertex4i) numFailed++; - _ptrc_glVertex4iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glVertex4iv"); - if(!_ptrc_glVertex4iv) numFailed++; - _ptrc_glVertex4s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glVertex4s"); - if(!_ptrc_glVertex4s) numFailed++; - _ptrc_glVertex4sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glVertex4sv"); - if(!_ptrc_glVertex4sv) numFailed++; - _ptrc_glViewport = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glViewport"); - if(!_ptrc_glViewport) numFailed++; - _ptrc_glAreTexturesResident = (GLboolean (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *, GLboolean *))IntGetProcAddress("glAreTexturesResident"); - if(!_ptrc_glAreTexturesResident) numFailed++; - _ptrc_glArrayElement = (void (CODEGEN_FUNCPTR *)(GLint))IntGetProcAddress("glArrayElement"); - if(!_ptrc_glArrayElement) numFailed++; - _ptrc_glBindTexture = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindTexture"); - if(!_ptrc_glBindTexture) numFailed++; - _ptrc_glColorPointer = (void (CODEGEN_FUNCPTR *)(GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glColorPointer"); - if(!_ptrc_glColorPointer) numFailed++; - _ptrc_glCopyTexImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint))IntGetProcAddress("glCopyTexImage1D"); - if(!_ptrc_glCopyTexImage1D) numFailed++; - _ptrc_glCopyTexImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint))IntGetProcAddress("glCopyTexImage2D"); - if(!_ptrc_glCopyTexImage2D) numFailed++; - _ptrc_glCopyTexSubImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLsizei))IntGetProcAddress("glCopyTexSubImage1D"); - if(!_ptrc_glCopyTexSubImage1D) numFailed++; - _ptrc_glCopyTexSubImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glCopyTexSubImage2D"); - if(!_ptrc_glCopyTexSubImage2D) numFailed++; - _ptrc_glDeleteTextures = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteTextures"); - if(!_ptrc_glDeleteTextures) numFailed++; - _ptrc_glDisableClientState = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glDisableClientState"); - if(!_ptrc_glDisableClientState) numFailed++; - _ptrc_glDrawArrays = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLsizei))IntGetProcAddress("glDrawArrays"); - if(!_ptrc_glDrawArrays) numFailed++; - _ptrc_glDrawElements = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *))IntGetProcAddress("glDrawElements"); - if(!_ptrc_glDrawElements) numFailed++; - _ptrc_glEdgeFlagPointer = (void (CODEGEN_FUNCPTR *)(GLsizei, const void *))IntGetProcAddress("glEdgeFlagPointer"); - if(!_ptrc_glEdgeFlagPointer) numFailed++; - _ptrc_glEnableClientState = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glEnableClientState"); - if(!_ptrc_glEnableClientState) numFailed++; - _ptrc_glGenTextures = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenTextures"); - if(!_ptrc_glGenTextures) numFailed++; - _ptrc_glGetPointerv = (void (CODEGEN_FUNCPTR *)(GLenum, void **))IntGetProcAddress("glGetPointerv"); - if(!_ptrc_glGetPointerv) numFailed++; - _ptrc_glIndexPointer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const void *))IntGetProcAddress("glIndexPointer"); - if(!_ptrc_glIndexPointer) numFailed++; - _ptrc_glIndexub = (void (CODEGEN_FUNCPTR *)(GLubyte))IntGetProcAddress("glIndexub"); - if(!_ptrc_glIndexub) numFailed++; - _ptrc_glIndexubv = (void (CODEGEN_FUNCPTR *)(const GLubyte *))IntGetProcAddress("glIndexubv"); - if(!_ptrc_glIndexubv) numFailed++; - _ptrc_glInterleavedArrays = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const void *))IntGetProcAddress("glInterleavedArrays"); - if(!_ptrc_glInterleavedArrays) numFailed++; - _ptrc_glIsTexture = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsTexture"); - if(!_ptrc_glIsTexture) numFailed++; - _ptrc_glNormalPointer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const void *))IntGetProcAddress("glNormalPointer"); - if(!_ptrc_glNormalPointer) numFailed++; - _ptrc_glPolygonOffset = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glPolygonOffset"); - if(!_ptrc_glPolygonOffset) numFailed++; - _ptrc_glPopClientAttrib = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopClientAttrib"); - if(!_ptrc_glPopClientAttrib) numFailed++; - _ptrc_glPrioritizeTextures = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *, const GLfloat *))IntGetProcAddress("glPrioritizeTextures"); - if(!_ptrc_glPrioritizeTextures) numFailed++; - _ptrc_glPushClientAttrib = (void (CODEGEN_FUNCPTR *)(GLbitfield))IntGetProcAddress("glPushClientAttrib"); - if(!_ptrc_glPushClientAttrib) numFailed++; - _ptrc_glTexCoordPointer = (void (CODEGEN_FUNCPTR *)(GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glTexCoordPointer"); - if(!_ptrc_glTexCoordPointer) numFailed++; - _ptrc_glTexSubImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTexSubImage1D"); - if(!_ptrc_glTexSubImage1D) numFailed++; - _ptrc_glTexSubImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTexSubImage2D"); - if(!_ptrc_glTexSubImage2D) numFailed++; - _ptrc_glVertexPointer = (void (CODEGEN_FUNCPTR *)(GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glVertexPointer"); - if(!_ptrc_glVertexPointer) numFailed++; - _ptrc_glCopyTexSubImage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glCopyTexSubImage3D"); - if(!_ptrc_glCopyTexSubImage3D) numFailed++; - _ptrc_glDrawRangeElements = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void *))IntGetProcAddress("glDrawRangeElements"); - if(!_ptrc_glDrawRangeElements) numFailed++; - _ptrc_glTexImage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *))IntGetProcAddress("glTexImage3D"); - if(!_ptrc_glTexImage3D) numFailed++; - _ptrc_glTexSubImage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTexSubImage3D"); - if(!_ptrc_glTexSubImage3D) numFailed++; - _ptrc_glActiveTexture = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glActiveTexture"); - if(!_ptrc_glActiveTexture) numFailed++; - _ptrc_glClientActiveTexture = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glClientActiveTexture"); - if(!_ptrc_glClientActiveTexture) numFailed++; - _ptrc_glCompressedTexImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage1D"); - if(!_ptrc_glCompressedTexImage1D) numFailed++; - _ptrc_glCompressedTexImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage2D"); - if(!_ptrc_glCompressedTexImage2D) numFailed++; - _ptrc_glCompressedTexImage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *))IntGetProcAddress("glCompressedTexImage3D"); - if(!_ptrc_glCompressedTexImage3D) numFailed++; - _ptrc_glCompressedTexSubImage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage1D"); - if(!_ptrc_glCompressedTexSubImage1D) numFailed++; - _ptrc_glCompressedTexSubImage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage2D"); - if(!_ptrc_glCompressedTexSubImage2D) numFailed++; - _ptrc_glCompressedTexSubImage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTexSubImage3D"); - if(!_ptrc_glCompressedTexSubImage3D) numFailed++; - _ptrc_glGetCompressedTexImage = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, void *))IntGetProcAddress("glGetCompressedTexImage"); - if(!_ptrc_glGetCompressedTexImage) numFailed++; - _ptrc_glLoadTransposeMatrixd = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glLoadTransposeMatrixd"); - if(!_ptrc_glLoadTransposeMatrixd) numFailed++; - _ptrc_glLoadTransposeMatrixf = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glLoadTransposeMatrixf"); - if(!_ptrc_glLoadTransposeMatrixf) numFailed++; - _ptrc_glMultTransposeMatrixd = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glMultTransposeMatrixd"); - if(!_ptrc_glMultTransposeMatrixd) numFailed++; - _ptrc_glMultTransposeMatrixf = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glMultTransposeMatrixf"); - if(!_ptrc_glMultTransposeMatrixf) numFailed++; - _ptrc_glMultiTexCoord1d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble))IntGetProcAddress("glMultiTexCoord1d"); - if(!_ptrc_glMultiTexCoord1d) numFailed++; - _ptrc_glMultiTexCoord1dv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLdouble *))IntGetProcAddress("glMultiTexCoord1dv"); - if(!_ptrc_glMultiTexCoord1dv) numFailed++; - _ptrc_glMultiTexCoord1f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glMultiTexCoord1f"); - if(!_ptrc_glMultiTexCoord1f) numFailed++; - _ptrc_glMultiTexCoord1fv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glMultiTexCoord1fv"); - if(!_ptrc_glMultiTexCoord1fv) numFailed++; - _ptrc_glMultiTexCoord1i = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glMultiTexCoord1i"); - if(!_ptrc_glMultiTexCoord1i) numFailed++; - _ptrc_glMultiTexCoord1iv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glMultiTexCoord1iv"); - if(!_ptrc_glMultiTexCoord1iv) numFailed++; - _ptrc_glMultiTexCoord1s = (void (CODEGEN_FUNCPTR *)(GLenum, GLshort))IntGetProcAddress("glMultiTexCoord1s"); - if(!_ptrc_glMultiTexCoord1s) numFailed++; - _ptrc_glMultiTexCoord1sv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLshort *))IntGetProcAddress("glMultiTexCoord1sv"); - if(!_ptrc_glMultiTexCoord1sv) numFailed++; - _ptrc_glMultiTexCoord2d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble, GLdouble))IntGetProcAddress("glMultiTexCoord2d"); - if(!_ptrc_glMultiTexCoord2d) numFailed++; - _ptrc_glMultiTexCoord2dv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLdouble *))IntGetProcAddress("glMultiTexCoord2dv"); - if(!_ptrc_glMultiTexCoord2dv) numFailed++; - _ptrc_glMultiTexCoord2f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat, GLfloat))IntGetProcAddress("glMultiTexCoord2f"); - if(!_ptrc_glMultiTexCoord2f) numFailed++; - _ptrc_glMultiTexCoord2fv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glMultiTexCoord2fv"); - if(!_ptrc_glMultiTexCoord2fv) numFailed++; - _ptrc_glMultiTexCoord2i = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint))IntGetProcAddress("glMultiTexCoord2i"); - if(!_ptrc_glMultiTexCoord2i) numFailed++; - _ptrc_glMultiTexCoord2iv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glMultiTexCoord2iv"); - if(!_ptrc_glMultiTexCoord2iv) numFailed++; - _ptrc_glMultiTexCoord2s = (void (CODEGEN_FUNCPTR *)(GLenum, GLshort, GLshort))IntGetProcAddress("glMultiTexCoord2s"); - if(!_ptrc_glMultiTexCoord2s) numFailed++; - _ptrc_glMultiTexCoord2sv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLshort *))IntGetProcAddress("glMultiTexCoord2sv"); - if(!_ptrc_glMultiTexCoord2sv) numFailed++; - _ptrc_glMultiTexCoord3d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glMultiTexCoord3d"); - if(!_ptrc_glMultiTexCoord3d) numFailed++; - _ptrc_glMultiTexCoord3dv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLdouble *))IntGetProcAddress("glMultiTexCoord3dv"); - if(!_ptrc_glMultiTexCoord3dv) numFailed++; - _ptrc_glMultiTexCoord3f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glMultiTexCoord3f"); - if(!_ptrc_glMultiTexCoord3f) numFailed++; - _ptrc_glMultiTexCoord3fv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glMultiTexCoord3fv"); - if(!_ptrc_glMultiTexCoord3fv) numFailed++; - _ptrc_glMultiTexCoord3i = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint))IntGetProcAddress("glMultiTexCoord3i"); - if(!_ptrc_glMultiTexCoord3i) numFailed++; - _ptrc_glMultiTexCoord3iv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glMultiTexCoord3iv"); - if(!_ptrc_glMultiTexCoord3iv) numFailed++; - _ptrc_glMultiTexCoord3s = (void (CODEGEN_FUNCPTR *)(GLenum, GLshort, GLshort, GLshort))IntGetProcAddress("glMultiTexCoord3s"); - if(!_ptrc_glMultiTexCoord3s) numFailed++; - _ptrc_glMultiTexCoord3sv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLshort *))IntGetProcAddress("glMultiTexCoord3sv"); - if(!_ptrc_glMultiTexCoord3sv) numFailed++; - _ptrc_glMultiTexCoord4d = (void (CODEGEN_FUNCPTR *)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glMultiTexCoord4d"); - if(!_ptrc_glMultiTexCoord4d) numFailed++; - _ptrc_glMultiTexCoord4dv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLdouble *))IntGetProcAddress("glMultiTexCoord4dv"); - if(!_ptrc_glMultiTexCoord4dv) numFailed++; - _ptrc_glMultiTexCoord4f = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glMultiTexCoord4f"); - if(!_ptrc_glMultiTexCoord4f) numFailed++; - _ptrc_glMultiTexCoord4fv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glMultiTexCoord4fv"); - if(!_ptrc_glMultiTexCoord4fv) numFailed++; - _ptrc_glMultiTexCoord4i = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLint, GLint, GLint))IntGetProcAddress("glMultiTexCoord4i"); - if(!_ptrc_glMultiTexCoord4i) numFailed++; - _ptrc_glMultiTexCoord4iv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glMultiTexCoord4iv"); - if(!_ptrc_glMultiTexCoord4iv) numFailed++; - _ptrc_glMultiTexCoord4s = (void (CODEGEN_FUNCPTR *)(GLenum, GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glMultiTexCoord4s"); - if(!_ptrc_glMultiTexCoord4s) numFailed++; - _ptrc_glMultiTexCoord4sv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLshort *))IntGetProcAddress("glMultiTexCoord4sv"); - if(!_ptrc_glMultiTexCoord4sv) numFailed++; - _ptrc_glSampleCoverage = (void (CODEGEN_FUNCPTR *)(GLfloat, GLboolean))IntGetProcAddress("glSampleCoverage"); - if(!_ptrc_glSampleCoverage) numFailed++; - _ptrc_glBlendColor = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glBlendColor"); - if(!_ptrc_glBlendColor) numFailed++; - _ptrc_glBlendEquation = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glBlendEquation"); - if(!_ptrc_glBlendEquation) numFailed++; - _ptrc_glBlendFuncSeparate = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLenum))IntGetProcAddress("glBlendFuncSeparate"); - if(!_ptrc_glBlendFuncSeparate) numFailed++; - _ptrc_glFogCoordPointer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const void *))IntGetProcAddress("glFogCoordPointer"); - if(!_ptrc_glFogCoordPointer) numFailed++; - _ptrc_glFogCoordd = (void (CODEGEN_FUNCPTR *)(GLdouble))IntGetProcAddress("glFogCoordd"); - if(!_ptrc_glFogCoordd) numFailed++; - _ptrc_glFogCoorddv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glFogCoorddv"); - if(!_ptrc_glFogCoorddv) numFailed++; - _ptrc_glFogCoordf = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glFogCoordf"); - if(!_ptrc_glFogCoordf) numFailed++; - _ptrc_glFogCoordfv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glFogCoordfv"); - if(!_ptrc_glFogCoordfv) numFailed++; - _ptrc_glMultiDrawArrays = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *, const GLsizei *, GLsizei))IntGetProcAddress("glMultiDrawArrays"); - if(!_ptrc_glMultiDrawArrays) numFailed++; - _ptrc_glMultiDrawElements = (void (CODEGEN_FUNCPTR *)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei))IntGetProcAddress("glMultiDrawElements"); - if(!_ptrc_glMultiDrawElements) numFailed++; - _ptrc_glPointParameterf = (void (CODEGEN_FUNCPTR *)(GLenum, GLfloat))IntGetProcAddress("glPointParameterf"); - if(!_ptrc_glPointParameterf) numFailed++; - _ptrc_glPointParameterfv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glPointParameterfv"); - if(!_ptrc_glPointParameterfv) numFailed++; - _ptrc_glPointParameteri = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glPointParameteri"); - if(!_ptrc_glPointParameteri) numFailed++; - _ptrc_glPointParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLint *))IntGetProcAddress("glPointParameteriv"); - if(!_ptrc_glPointParameteriv) numFailed++; - _ptrc_glSecondaryColor3b = (void (CODEGEN_FUNCPTR *)(GLbyte, GLbyte, GLbyte))IntGetProcAddress("glSecondaryColor3b"); - if(!_ptrc_glSecondaryColor3b) numFailed++; - _ptrc_glSecondaryColor3bv = (void (CODEGEN_FUNCPTR *)(const GLbyte *))IntGetProcAddress("glSecondaryColor3bv"); - if(!_ptrc_glSecondaryColor3bv) numFailed++; - _ptrc_glSecondaryColor3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glSecondaryColor3d"); - if(!_ptrc_glSecondaryColor3d) numFailed++; - _ptrc_glSecondaryColor3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glSecondaryColor3dv"); - if(!_ptrc_glSecondaryColor3dv) numFailed++; - _ptrc_glSecondaryColor3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glSecondaryColor3f"); - if(!_ptrc_glSecondaryColor3f) numFailed++; - _ptrc_glSecondaryColor3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glSecondaryColor3fv"); - if(!_ptrc_glSecondaryColor3fv) numFailed++; - _ptrc_glSecondaryColor3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glSecondaryColor3i"); - if(!_ptrc_glSecondaryColor3i) numFailed++; - _ptrc_glSecondaryColor3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glSecondaryColor3iv"); - if(!_ptrc_glSecondaryColor3iv) numFailed++; - _ptrc_glSecondaryColor3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glSecondaryColor3s"); - if(!_ptrc_glSecondaryColor3s) numFailed++; - _ptrc_glSecondaryColor3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glSecondaryColor3sv"); - if(!_ptrc_glSecondaryColor3sv) numFailed++; - _ptrc_glSecondaryColor3ub = (void (CODEGEN_FUNCPTR *)(GLubyte, GLubyte, GLubyte))IntGetProcAddress("glSecondaryColor3ub"); - if(!_ptrc_glSecondaryColor3ub) numFailed++; - _ptrc_glSecondaryColor3ubv = (void (CODEGEN_FUNCPTR *)(const GLubyte *))IntGetProcAddress("glSecondaryColor3ubv"); - if(!_ptrc_glSecondaryColor3ubv) numFailed++; - _ptrc_glSecondaryColor3ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glSecondaryColor3ui"); - if(!_ptrc_glSecondaryColor3ui) numFailed++; - _ptrc_glSecondaryColor3uiv = (void (CODEGEN_FUNCPTR *)(const GLuint *))IntGetProcAddress("glSecondaryColor3uiv"); - if(!_ptrc_glSecondaryColor3uiv) numFailed++; - _ptrc_glSecondaryColor3us = (void (CODEGEN_FUNCPTR *)(GLushort, GLushort, GLushort))IntGetProcAddress("glSecondaryColor3us"); - if(!_ptrc_glSecondaryColor3us) numFailed++; - _ptrc_glSecondaryColor3usv = (void (CODEGEN_FUNCPTR *)(const GLushort *))IntGetProcAddress("glSecondaryColor3usv"); - if(!_ptrc_glSecondaryColor3usv) numFailed++; - _ptrc_glSecondaryColorPointer = (void (CODEGEN_FUNCPTR *)(GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glSecondaryColorPointer"); - if(!_ptrc_glSecondaryColorPointer) numFailed++; - _ptrc_glWindowPos2d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble))IntGetProcAddress("glWindowPos2d"); - if(!_ptrc_glWindowPos2d) numFailed++; - _ptrc_glWindowPos2dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glWindowPos2dv"); - if(!_ptrc_glWindowPos2dv) numFailed++; - _ptrc_glWindowPos2f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glWindowPos2f"); - if(!_ptrc_glWindowPos2f) numFailed++; - _ptrc_glWindowPos2fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glWindowPos2fv"); - if(!_ptrc_glWindowPos2fv) numFailed++; - _ptrc_glWindowPos2i = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glWindowPos2i"); - if(!_ptrc_glWindowPos2i) numFailed++; - _ptrc_glWindowPos2iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glWindowPos2iv"); - if(!_ptrc_glWindowPos2iv) numFailed++; - _ptrc_glWindowPos2s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort))IntGetProcAddress("glWindowPos2s"); - if(!_ptrc_glWindowPos2s) numFailed++; - _ptrc_glWindowPos2sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glWindowPos2sv"); - if(!_ptrc_glWindowPos2sv) numFailed++; - _ptrc_glWindowPos3d = (void (CODEGEN_FUNCPTR *)(GLdouble, GLdouble, GLdouble))IntGetProcAddress("glWindowPos3d"); - if(!_ptrc_glWindowPos3d) numFailed++; - _ptrc_glWindowPos3dv = (void (CODEGEN_FUNCPTR *)(const GLdouble *))IntGetProcAddress("glWindowPos3dv"); - if(!_ptrc_glWindowPos3dv) numFailed++; - _ptrc_glWindowPos3f = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat, GLfloat))IntGetProcAddress("glWindowPos3f"); - if(!_ptrc_glWindowPos3f) numFailed++; - _ptrc_glWindowPos3fv = (void (CODEGEN_FUNCPTR *)(const GLfloat *))IntGetProcAddress("glWindowPos3fv"); - if(!_ptrc_glWindowPos3fv) numFailed++; - _ptrc_glWindowPos3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glWindowPos3i"); - if(!_ptrc_glWindowPos3i) numFailed++; - _ptrc_glWindowPos3iv = (void (CODEGEN_FUNCPTR *)(const GLint *))IntGetProcAddress("glWindowPos3iv"); - if(!_ptrc_glWindowPos3iv) numFailed++; - _ptrc_glWindowPos3s = (void (CODEGEN_FUNCPTR *)(GLshort, GLshort, GLshort))IntGetProcAddress("glWindowPos3s"); - if(!_ptrc_glWindowPos3s) numFailed++; - _ptrc_glWindowPos3sv = (void (CODEGEN_FUNCPTR *)(const GLshort *))IntGetProcAddress("glWindowPos3sv"); - if(!_ptrc_glWindowPos3sv) numFailed++; - _ptrc_glBeginQuery = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBeginQuery"); - if(!_ptrc_glBeginQuery) numFailed++; - _ptrc_glBindBuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindBuffer"); - if(!_ptrc_glBindBuffer) numFailed++; - _ptrc_glBufferData = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizeiptr, const void *, GLenum))IntGetProcAddress("glBufferData"); - if(!_ptrc_glBufferData) numFailed++; - _ptrc_glBufferSubData = (void (CODEGEN_FUNCPTR *)(GLenum, GLintptr, GLsizeiptr, const void *))IntGetProcAddress("glBufferSubData"); - if(!_ptrc_glBufferSubData) numFailed++; - _ptrc_glDeleteBuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteBuffers"); - if(!_ptrc_glDeleteBuffers) numFailed++; - _ptrc_glDeleteQueries = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteQueries"); - if(!_ptrc_glDeleteQueries) numFailed++; - _ptrc_glEndQuery = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glEndQuery"); - if(!_ptrc_glEndQuery) numFailed++; - _ptrc_glGenBuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenBuffers"); - if(!_ptrc_glGenBuffers) numFailed++; - _ptrc_glGenQueries = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenQueries"); - if(!_ptrc_glGenQueries) numFailed++; - _ptrc_glGetBufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetBufferParameteriv"); - if(!_ptrc_glGetBufferParameteriv) numFailed++; - _ptrc_glGetBufferPointerv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, void **))IntGetProcAddress("glGetBufferPointerv"); - if(!_ptrc_glGetBufferPointerv) numFailed++; - _ptrc_glGetBufferSubData = (void (CODEGEN_FUNCPTR *)(GLenum, GLintptr, GLsizeiptr, void *))IntGetProcAddress("glGetBufferSubData"); - if(!_ptrc_glGetBufferSubData) numFailed++; - _ptrc_glGetQueryObjectiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetQueryObjectiv"); - if(!_ptrc_glGetQueryObjectiv) numFailed++; - _ptrc_glGetQueryObjectuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint *))IntGetProcAddress("glGetQueryObjectuiv"); - if(!_ptrc_glGetQueryObjectuiv) numFailed++; - _ptrc_glGetQueryiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetQueryiv"); - if(!_ptrc_glGetQueryiv) numFailed++; - _ptrc_glIsBuffer = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsBuffer"); - if(!_ptrc_glIsBuffer) numFailed++; - _ptrc_glIsQuery = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsQuery"); - if(!_ptrc_glIsQuery) numFailed++; - _ptrc_glMapBuffer = (void * (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glMapBuffer"); - if(!_ptrc_glMapBuffer) numFailed++; - _ptrc_glUnmapBuffer = (GLboolean (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glUnmapBuffer"); - if(!_ptrc_glUnmapBuffer) numFailed++; - _ptrc_glAttachShader = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glAttachShader"); - if(!_ptrc_glAttachShader) numFailed++; - _ptrc_glBindAttribLocation = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, const GLchar *))IntGetProcAddress("glBindAttribLocation"); - if(!_ptrc_glBindAttribLocation) numFailed++; - _ptrc_glBlendEquationSeparate = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glBlendEquationSeparate"); - if(!_ptrc_glBlendEquationSeparate) numFailed++; - _ptrc_glCompileShader = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glCompileShader"); - if(!_ptrc_glCompileShader) numFailed++; - _ptrc_glCreateProgram = (GLuint (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glCreateProgram"); - if(!_ptrc_glCreateProgram) numFailed++; - _ptrc_glCreateShader = (GLuint (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glCreateShader"); - if(!_ptrc_glCreateShader) numFailed++; - _ptrc_glDeleteProgram = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glDeleteProgram"); - if(!_ptrc_glDeleteProgram) numFailed++; - _ptrc_glDeleteShader = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glDeleteShader"); - if(!_ptrc_glDeleteShader) numFailed++; - _ptrc_glDetachShader = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glDetachShader"); - if(!_ptrc_glDetachShader) numFailed++; - _ptrc_glDisableVertexAttribArray = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glDisableVertexAttribArray"); - if(!_ptrc_glDisableVertexAttribArray) numFailed++; - _ptrc_glDrawBuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLenum *))IntGetProcAddress("glDrawBuffers"); - if(!_ptrc_glDrawBuffers) numFailed++; - _ptrc_glEnableVertexAttribArray = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glEnableVertexAttribArray"); - if(!_ptrc_glEnableVertexAttribArray) numFailed++; - _ptrc_glGetActiveAttrib = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *))IntGetProcAddress("glGetActiveAttrib"); - if(!_ptrc_glGetActiveAttrib) numFailed++; - _ptrc_glGetActiveUniform = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *))IntGetProcAddress("glGetActiveUniform"); - if(!_ptrc_glGetActiveUniform) numFailed++; - _ptrc_glGetAttachedShaders = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLuint *))IntGetProcAddress("glGetAttachedShaders"); - if(!_ptrc_glGetAttachedShaders) numFailed++; - _ptrc_glGetAttribLocation = (GLint (CODEGEN_FUNCPTR *)(GLuint, const GLchar *))IntGetProcAddress("glGetAttribLocation"); - if(!_ptrc_glGetAttribLocation) numFailed++; - _ptrc_glGetProgramInfoLog = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetProgramInfoLog"); - if(!_ptrc_glGetProgramInfoLog) numFailed++; - _ptrc_glGetProgramiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetProgramiv"); - if(!_ptrc_glGetProgramiv) numFailed++; - _ptrc_glGetShaderInfoLog = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetShaderInfoLog"); - if(!_ptrc_glGetShaderInfoLog) numFailed++; - _ptrc_glGetShaderSource = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetShaderSource"); - if(!_ptrc_glGetShaderSource) numFailed++; - _ptrc_glGetShaderiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetShaderiv"); - if(!_ptrc_glGetShaderiv) numFailed++; - _ptrc_glGetUniformLocation = (GLint (CODEGEN_FUNCPTR *)(GLuint, const GLchar *))IntGetProcAddress("glGetUniformLocation"); - if(!_ptrc_glGetUniformLocation) numFailed++; - _ptrc_glGetUniformfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLfloat *))IntGetProcAddress("glGetUniformfv"); - if(!_ptrc_glGetUniformfv) numFailed++; - _ptrc_glGetUniformiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint *))IntGetProcAddress("glGetUniformiv"); - if(!_ptrc_glGetUniformiv) numFailed++; - _ptrc_glGetVertexAttribPointerv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, void **))IntGetProcAddress("glGetVertexAttribPointerv"); - if(!_ptrc_glGetVertexAttribPointerv) numFailed++; - _ptrc_glGetVertexAttribdv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLdouble *))IntGetProcAddress("glGetVertexAttribdv"); - if(!_ptrc_glGetVertexAttribdv) numFailed++; - _ptrc_glGetVertexAttribfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLfloat *))IntGetProcAddress("glGetVertexAttribfv"); - if(!_ptrc_glGetVertexAttribfv) numFailed++; - _ptrc_glGetVertexAttribiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetVertexAttribiv"); - if(!_ptrc_glGetVertexAttribiv) numFailed++; - _ptrc_glIsProgram = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsProgram"); - if(!_ptrc_glIsProgram) numFailed++; - _ptrc_glIsShader = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsShader"); - if(!_ptrc_glIsShader) numFailed++; - _ptrc_glLinkProgram = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glLinkProgram"); - if(!_ptrc_glLinkProgram) numFailed++; - _ptrc_glShaderSource = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLchar *const*, const GLint *))IntGetProcAddress("glShaderSource"); - if(!_ptrc_glShaderSource) numFailed++; - _ptrc_glStencilFuncSeparate = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint, GLuint))IntGetProcAddress("glStencilFuncSeparate"); - if(!_ptrc_glStencilFuncSeparate) numFailed++; - _ptrc_glStencilMaskSeparate = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glStencilMaskSeparate"); - if(!_ptrc_glStencilMaskSeparate) numFailed++; - _ptrc_glStencilOpSeparate = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLenum))IntGetProcAddress("glStencilOpSeparate"); - if(!_ptrc_glStencilOpSeparate) numFailed++; - _ptrc_glUniform1f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat))IntGetProcAddress("glUniform1f"); - if(!_ptrc_glUniform1f) numFailed++; - _ptrc_glUniform1fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLfloat *))IntGetProcAddress("glUniform1fv"); - if(!_ptrc_glUniform1fv) numFailed++; - _ptrc_glUniform1i = (void (CODEGEN_FUNCPTR *)(GLint, GLint))IntGetProcAddress("glUniform1i"); - if(!_ptrc_glUniform1i) numFailed++; - _ptrc_glUniform1iv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLint *))IntGetProcAddress("glUniform1iv"); - if(!_ptrc_glUniform1iv) numFailed++; - _ptrc_glUniform2f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat, GLfloat))IntGetProcAddress("glUniform2f"); - if(!_ptrc_glUniform2f) numFailed++; - _ptrc_glUniform2fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLfloat *))IntGetProcAddress("glUniform2fv"); - if(!_ptrc_glUniform2fv) numFailed++; - _ptrc_glUniform2i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint))IntGetProcAddress("glUniform2i"); - if(!_ptrc_glUniform2i) numFailed++; - _ptrc_glUniform2iv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLint *))IntGetProcAddress("glUniform2iv"); - if(!_ptrc_glUniform2iv) numFailed++; - _ptrc_glUniform3f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glUniform3f"); - if(!_ptrc_glUniform3f) numFailed++; - _ptrc_glUniform3fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLfloat *))IntGetProcAddress("glUniform3fv"); - if(!_ptrc_glUniform3fv) numFailed++; - _ptrc_glUniform3i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint))IntGetProcAddress("glUniform3i"); - if(!_ptrc_glUniform3i) numFailed++; - _ptrc_glUniform3iv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLint *))IntGetProcAddress("glUniform3iv"); - if(!_ptrc_glUniform3iv) numFailed++; - _ptrc_glUniform4f = (void (CODEGEN_FUNCPTR *)(GLint, GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glUniform4f"); - if(!_ptrc_glUniform4f) numFailed++; - _ptrc_glUniform4fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLfloat *))IntGetProcAddress("glUniform4fv"); - if(!_ptrc_glUniform4fv) numFailed++; - _ptrc_glUniform4i = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint, GLint))IntGetProcAddress("glUniform4i"); - if(!_ptrc_glUniform4i) numFailed++; - _ptrc_glUniform4iv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLint *))IntGetProcAddress("glUniform4iv"); - if(!_ptrc_glUniform4iv) numFailed++; - _ptrc_glUniformMatrix2fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix2fv"); - if(!_ptrc_glUniformMatrix2fv) numFailed++; - _ptrc_glUniformMatrix3fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix3fv"); - if(!_ptrc_glUniformMatrix3fv) numFailed++; - _ptrc_glUniformMatrix4fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix4fv"); - if(!_ptrc_glUniformMatrix4fv) numFailed++; - _ptrc_glUseProgram = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glUseProgram"); - if(!_ptrc_glUseProgram) numFailed++; - _ptrc_glValidateProgram = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glValidateProgram"); - if(!_ptrc_glValidateProgram) numFailed++; - _ptrc_glVertexAttrib1d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble))IntGetProcAddress("glVertexAttrib1d"); - if(!_ptrc_glVertexAttrib1d) numFailed++; - _ptrc_glVertexAttrib1dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttrib1dv"); - if(!_ptrc_glVertexAttrib1dv) numFailed++; - _ptrc_glVertexAttrib1f = (void (CODEGEN_FUNCPTR *)(GLuint, GLfloat))IntGetProcAddress("glVertexAttrib1f"); - if(!_ptrc_glVertexAttrib1f) numFailed++; - _ptrc_glVertexAttrib1fv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLfloat *))IntGetProcAddress("glVertexAttrib1fv"); - if(!_ptrc_glVertexAttrib1fv) numFailed++; - _ptrc_glVertexAttrib1s = (void (CODEGEN_FUNCPTR *)(GLuint, GLshort))IntGetProcAddress("glVertexAttrib1s"); - if(!_ptrc_glVertexAttrib1s) numFailed++; - _ptrc_glVertexAttrib1sv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttrib1sv"); - if(!_ptrc_glVertexAttrib1sv) numFailed++; - _ptrc_glVertexAttrib2d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble))IntGetProcAddress("glVertexAttrib2d"); - if(!_ptrc_glVertexAttrib2d) numFailed++; - _ptrc_glVertexAttrib2dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttrib2dv"); - if(!_ptrc_glVertexAttrib2dv) numFailed++; - _ptrc_glVertexAttrib2f = (void (CODEGEN_FUNCPTR *)(GLuint, GLfloat, GLfloat))IntGetProcAddress("glVertexAttrib2f"); - if(!_ptrc_glVertexAttrib2f) numFailed++; - _ptrc_glVertexAttrib2fv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLfloat *))IntGetProcAddress("glVertexAttrib2fv"); - if(!_ptrc_glVertexAttrib2fv) numFailed++; - _ptrc_glVertexAttrib2s = (void (CODEGEN_FUNCPTR *)(GLuint, GLshort, GLshort))IntGetProcAddress("glVertexAttrib2s"); - if(!_ptrc_glVertexAttrib2s) numFailed++; - _ptrc_glVertexAttrib2sv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttrib2sv"); - if(!_ptrc_glVertexAttrib2sv) numFailed++; - _ptrc_glVertexAttrib3d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertexAttrib3d"); - if(!_ptrc_glVertexAttrib3d) numFailed++; - _ptrc_glVertexAttrib3dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttrib3dv"); - if(!_ptrc_glVertexAttrib3dv) numFailed++; - _ptrc_glVertexAttrib3f = (void (CODEGEN_FUNCPTR *)(GLuint, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glVertexAttrib3f"); - if(!_ptrc_glVertexAttrib3f) numFailed++; - _ptrc_glVertexAttrib3fv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLfloat *))IntGetProcAddress("glVertexAttrib3fv"); - if(!_ptrc_glVertexAttrib3fv) numFailed++; - _ptrc_glVertexAttrib3s = (void (CODEGEN_FUNCPTR *)(GLuint, GLshort, GLshort, GLshort))IntGetProcAddress("glVertexAttrib3s"); - if(!_ptrc_glVertexAttrib3s) numFailed++; - _ptrc_glVertexAttrib3sv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttrib3sv"); - if(!_ptrc_glVertexAttrib3sv) numFailed++; - _ptrc_glVertexAttrib4Nbv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLbyte *))IntGetProcAddress("glVertexAttrib4Nbv"); - if(!_ptrc_glVertexAttrib4Nbv) numFailed++; - _ptrc_glVertexAttrib4Niv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttrib4Niv"); - if(!_ptrc_glVertexAttrib4Niv) numFailed++; - _ptrc_glVertexAttrib4Nsv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttrib4Nsv"); - if(!_ptrc_glVertexAttrib4Nsv) numFailed++; - _ptrc_glVertexAttrib4Nub = (void (CODEGEN_FUNCPTR *)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte))IntGetProcAddress("glVertexAttrib4Nub"); - if(!_ptrc_glVertexAttrib4Nub) numFailed++; - _ptrc_glVertexAttrib4Nubv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLubyte *))IntGetProcAddress("glVertexAttrib4Nubv"); - if(!_ptrc_glVertexAttrib4Nubv) numFailed++; - _ptrc_glVertexAttrib4Nuiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttrib4Nuiv"); - if(!_ptrc_glVertexAttrib4Nuiv) numFailed++; - _ptrc_glVertexAttrib4Nusv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLushort *))IntGetProcAddress("glVertexAttrib4Nusv"); - if(!_ptrc_glVertexAttrib4Nusv) numFailed++; - _ptrc_glVertexAttrib4bv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLbyte *))IntGetProcAddress("glVertexAttrib4bv"); - if(!_ptrc_glVertexAttrib4bv) numFailed++; - _ptrc_glVertexAttrib4d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertexAttrib4d"); - if(!_ptrc_glVertexAttrib4d) numFailed++; - _ptrc_glVertexAttrib4dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttrib4dv"); - if(!_ptrc_glVertexAttrib4dv) numFailed++; - _ptrc_glVertexAttrib4f = (void (CODEGEN_FUNCPTR *)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glVertexAttrib4f"); - if(!_ptrc_glVertexAttrib4f) numFailed++; - _ptrc_glVertexAttrib4fv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLfloat *))IntGetProcAddress("glVertexAttrib4fv"); - if(!_ptrc_glVertexAttrib4fv) numFailed++; - _ptrc_glVertexAttrib4iv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttrib4iv"); - if(!_ptrc_glVertexAttrib4iv) numFailed++; - _ptrc_glVertexAttrib4s = (void (CODEGEN_FUNCPTR *)(GLuint, GLshort, GLshort, GLshort, GLshort))IntGetProcAddress("glVertexAttrib4s"); - if(!_ptrc_glVertexAttrib4s) numFailed++; - _ptrc_glVertexAttrib4sv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttrib4sv"); - if(!_ptrc_glVertexAttrib4sv) numFailed++; - _ptrc_glVertexAttrib4ubv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLubyte *))IntGetProcAddress("glVertexAttrib4ubv"); - if(!_ptrc_glVertexAttrib4ubv) numFailed++; - _ptrc_glVertexAttrib4uiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttrib4uiv"); - if(!_ptrc_glVertexAttrib4uiv) numFailed++; - _ptrc_glVertexAttrib4usv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLushort *))IntGetProcAddress("glVertexAttrib4usv"); - if(!_ptrc_glVertexAttrib4usv) numFailed++; - _ptrc_glVertexAttribPointer = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *))IntGetProcAddress("glVertexAttribPointer"); - if(!_ptrc_glVertexAttribPointer) numFailed++; - _ptrc_glUniformMatrix2x3fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix2x3fv"); - if(!_ptrc_glUniformMatrix2x3fv) numFailed++; - _ptrc_glUniformMatrix2x4fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix2x4fv"); - if(!_ptrc_glUniformMatrix2x4fv) numFailed++; - _ptrc_glUniformMatrix3x2fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix3x2fv"); - if(!_ptrc_glUniformMatrix3x2fv) numFailed++; - _ptrc_glUniformMatrix3x4fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix3x4fv"); - if(!_ptrc_glUniformMatrix3x4fv) numFailed++; - _ptrc_glUniformMatrix4x2fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix4x2fv"); - if(!_ptrc_glUniformMatrix4x2fv) numFailed++; - _ptrc_glUniformMatrix4x3fv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glUniformMatrix4x3fv"); - if(!_ptrc_glUniformMatrix4x3fv) numFailed++; - _ptrc_glBeginConditionalRender = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glBeginConditionalRender"); - if(!_ptrc_glBeginConditionalRender) numFailed++; - _ptrc_glBeginTransformFeedback = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glBeginTransformFeedback"); - if(!_ptrc_glBeginTransformFeedback) numFailed++; - _ptrc_glBindBufferBase = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint))IntGetProcAddress("glBindBufferBase"); - if(!_ptrc_glBindBufferBase) numFailed++; - _ptrc_glBindBufferRange = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glBindBufferRange"); - if(!_ptrc_glBindBufferRange) numFailed++; - _ptrc_glBindFragDataLocation = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, const GLchar *))IntGetProcAddress("glBindFragDataLocation"); - if(!_ptrc_glBindFragDataLocation) numFailed++; - _ptrc_glBindFramebuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindFramebuffer"); - if(!_ptrc_glBindFramebuffer) numFailed++; - _ptrc_glBindRenderbuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindRenderbuffer"); - if(!_ptrc_glBindRenderbuffer) numFailed++; - _ptrc_glBindVertexArray = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glBindVertexArray"); - if(!_ptrc_glBindVertexArray) numFailed++; - _ptrc_glBlitFramebuffer = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum))IntGetProcAddress("glBlitFramebuffer"); - if(!_ptrc_glBlitFramebuffer) numFailed++; - _ptrc_glCheckFramebufferStatus = (GLenum (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glCheckFramebufferStatus"); - if(!_ptrc_glCheckFramebufferStatus) numFailed++; - _ptrc_glClampColor = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glClampColor"); - if(!_ptrc_glClampColor) numFailed++; - _ptrc_glClearBufferfi = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLfloat, GLint))IntGetProcAddress("glClearBufferfi"); - if(!_ptrc_glClearBufferfi) numFailed++; - _ptrc_glClearBufferfv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, const GLfloat *))IntGetProcAddress("glClearBufferfv"); - if(!_ptrc_glClearBufferfv) numFailed++; - _ptrc_glClearBufferiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, const GLint *))IntGetProcAddress("glClearBufferiv"); - if(!_ptrc_glClearBufferiv) numFailed++; - _ptrc_glClearBufferuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, const GLuint *))IntGetProcAddress("glClearBufferuiv"); - if(!_ptrc_glClearBufferuiv) numFailed++; - _ptrc_glColorMaski = (void (CODEGEN_FUNCPTR *)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean))IntGetProcAddress("glColorMaski"); - if(!_ptrc_glColorMaski) numFailed++; - _ptrc_glDeleteFramebuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteFramebuffers"); - if(!_ptrc_glDeleteFramebuffers) numFailed++; - _ptrc_glDeleteRenderbuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteRenderbuffers"); - if(!_ptrc_glDeleteRenderbuffers) numFailed++; - _ptrc_glDeleteVertexArrays = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteVertexArrays"); - if(!_ptrc_glDeleteVertexArrays) numFailed++; - _ptrc_glDisablei = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glDisablei"); - if(!_ptrc_glDisablei) numFailed++; - _ptrc_glEnablei = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glEnablei"); - if(!_ptrc_glEnablei) numFailed++; - _ptrc_glEndConditionalRender = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glEndConditionalRender"); - if(!_ptrc_glEndConditionalRender) numFailed++; - _ptrc_glEndTransformFeedback = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glEndTransformFeedback"); - if(!_ptrc_glEndTransformFeedback) numFailed++; - _ptrc_glFlushMappedBufferRange = (void (CODEGEN_FUNCPTR *)(GLenum, GLintptr, GLsizeiptr))IntGetProcAddress("glFlushMappedBufferRange"); - if(!_ptrc_glFlushMappedBufferRange) numFailed++; - _ptrc_glFramebufferRenderbuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint))IntGetProcAddress("glFramebufferRenderbuffer"); - if(!_ptrc_glFramebufferRenderbuffer) numFailed++; - _ptrc_glFramebufferTexture1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint))IntGetProcAddress("glFramebufferTexture1D"); - if(!_ptrc_glFramebufferTexture1D) numFailed++; - _ptrc_glFramebufferTexture2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint))IntGetProcAddress("glFramebufferTexture2D"); - if(!_ptrc_glFramebufferTexture2D) numFailed++; - _ptrc_glFramebufferTexture3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLuint, GLint, GLint))IntGetProcAddress("glFramebufferTexture3D"); - if(!_ptrc_glFramebufferTexture3D) numFailed++; - _ptrc_glFramebufferTextureLayer = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint, GLint, GLint))IntGetProcAddress("glFramebufferTextureLayer"); - if(!_ptrc_glFramebufferTextureLayer) numFailed++; - _ptrc_glGenFramebuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenFramebuffers"); - if(!_ptrc_glGenFramebuffers) numFailed++; - _ptrc_glGenRenderbuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenRenderbuffers"); - if(!_ptrc_glGenRenderbuffers) numFailed++; - _ptrc_glGenVertexArrays = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenVertexArrays"); - if(!_ptrc_glGenVertexArrays) numFailed++; - _ptrc_glGenerateMipmap = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glGenerateMipmap"); - if(!_ptrc_glGenerateMipmap) numFailed++; - _ptrc_glGetBooleani_v = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLboolean *))IntGetProcAddress("glGetBooleani_v"); - if(!_ptrc_glGetBooleani_v) numFailed++; - _ptrc_glGetFragDataLocation = (GLint (CODEGEN_FUNCPTR *)(GLuint, const GLchar *))IntGetProcAddress("glGetFragDataLocation"); - if(!_ptrc_glGetFragDataLocation) numFailed++; - _ptrc_glGetFramebufferAttachmentParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLint *))IntGetProcAddress("glGetFramebufferAttachmentParameteriv"); - if(!_ptrc_glGetFramebufferAttachmentParameteriv) numFailed++; - _ptrc_glGetIntegeri_v = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLint *))IntGetProcAddress("glGetIntegeri_v"); - if(!_ptrc_glGetIntegeri_v) numFailed++; - _ptrc_glGetRenderbufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetRenderbufferParameteriv"); - if(!_ptrc_glGetRenderbufferParameteriv) numFailed++; - _ptrc_glGetStringi = (const GLubyte * (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glGetStringi"); - if(!_ptrc_glGetStringi) numFailed++; - _ptrc_glGetTexParameterIiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetTexParameterIiv"); - if(!_ptrc_glGetTexParameterIiv) numFailed++; - _ptrc_glGetTexParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint *))IntGetProcAddress("glGetTexParameterIuiv"); - if(!_ptrc_glGetTexParameterIuiv) numFailed++; - _ptrc_glGetTransformFeedbackVarying = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *))IntGetProcAddress("glGetTransformFeedbackVarying"); - if(!_ptrc_glGetTransformFeedbackVarying) numFailed++; - _ptrc_glGetUniformuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLuint *))IntGetProcAddress("glGetUniformuiv"); - if(!_ptrc_glGetUniformuiv) numFailed++; - _ptrc_glGetVertexAttribIiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetVertexAttribIiv"); - if(!_ptrc_glGetVertexAttribIiv) numFailed++; - _ptrc_glGetVertexAttribIuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint *))IntGetProcAddress("glGetVertexAttribIuiv"); - if(!_ptrc_glGetVertexAttribIuiv) numFailed++; - _ptrc_glIsEnabledi = (GLboolean (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glIsEnabledi"); - if(!_ptrc_glIsEnabledi) numFailed++; - _ptrc_glIsFramebuffer = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsFramebuffer"); - if(!_ptrc_glIsFramebuffer) numFailed++; - _ptrc_glIsRenderbuffer = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsRenderbuffer"); - if(!_ptrc_glIsRenderbuffer) numFailed++; - _ptrc_glIsVertexArray = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsVertexArray"); - if(!_ptrc_glIsVertexArray) numFailed++; - _ptrc_glMapBufferRange = (void * (CODEGEN_FUNCPTR *)(GLenum, GLintptr, GLsizeiptr, GLbitfield))IntGetProcAddress("glMapBufferRange"); - if(!_ptrc_glMapBufferRange) numFailed++; - _ptrc_glRenderbufferStorage = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLsizei, GLsizei))IntGetProcAddress("glRenderbufferStorage"); - if(!_ptrc_glRenderbufferStorage) numFailed++; - _ptrc_glRenderbufferStorageMultisample = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei))IntGetProcAddress("glRenderbufferStorageMultisample"); - if(!_ptrc_glRenderbufferStorageMultisample) numFailed++; - _ptrc_glTexParameterIiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLint *))IntGetProcAddress("glTexParameterIiv"); - if(!_ptrc_glTexParameterIiv) numFailed++; - _ptrc_glTexParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const GLuint *))IntGetProcAddress("glTexParameterIuiv"); - if(!_ptrc_glTexParameterIuiv) numFailed++; - _ptrc_glTransformFeedbackVaryings = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLchar *const*, GLenum))IntGetProcAddress("glTransformFeedbackVaryings"); - if(!_ptrc_glTransformFeedbackVaryings) numFailed++; - _ptrc_glUniform1ui = (void (CODEGEN_FUNCPTR *)(GLint, GLuint))IntGetProcAddress("glUniform1ui"); - if(!_ptrc_glUniform1ui) numFailed++; - _ptrc_glUniform1uiv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLuint *))IntGetProcAddress("glUniform1uiv"); - if(!_ptrc_glUniform1uiv) numFailed++; - _ptrc_glUniform2ui = (void (CODEGEN_FUNCPTR *)(GLint, GLuint, GLuint))IntGetProcAddress("glUniform2ui"); - if(!_ptrc_glUniform2ui) numFailed++; - _ptrc_glUniform2uiv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLuint *))IntGetProcAddress("glUniform2uiv"); - if(!_ptrc_glUniform2uiv) numFailed++; - _ptrc_glUniform3ui = (void (CODEGEN_FUNCPTR *)(GLint, GLuint, GLuint, GLuint))IntGetProcAddress("glUniform3ui"); - if(!_ptrc_glUniform3ui) numFailed++; - _ptrc_glUniform3uiv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLuint *))IntGetProcAddress("glUniform3uiv"); - if(!_ptrc_glUniform3uiv) numFailed++; - _ptrc_glUniform4ui = (void (CODEGEN_FUNCPTR *)(GLint, GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glUniform4ui"); - if(!_ptrc_glUniform4ui) numFailed++; - _ptrc_glUniform4uiv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLuint *))IntGetProcAddress("glUniform4uiv"); - if(!_ptrc_glUniform4uiv) numFailed++; - _ptrc_glVertexAttribI1i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint))IntGetProcAddress("glVertexAttribI1i"); - if(!_ptrc_glVertexAttribI1i) numFailed++; - _ptrc_glVertexAttribI1iv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttribI1iv"); - if(!_ptrc_glVertexAttribI1iv) numFailed++; - _ptrc_glVertexAttribI1ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glVertexAttribI1ui"); - if(!_ptrc_glVertexAttribI1ui) numFailed++; - _ptrc_glVertexAttribI1uiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttribI1uiv"); - if(!_ptrc_glVertexAttribI1uiv) numFailed++; - _ptrc_glVertexAttribI2i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint))IntGetProcAddress("glVertexAttribI2i"); - if(!_ptrc_glVertexAttribI2i) numFailed++; - _ptrc_glVertexAttribI2iv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttribI2iv"); - if(!_ptrc_glVertexAttribI2iv) numFailed++; - _ptrc_glVertexAttribI2ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glVertexAttribI2ui"); - if(!_ptrc_glVertexAttribI2ui) numFailed++; - _ptrc_glVertexAttribI2uiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttribI2uiv"); - if(!_ptrc_glVertexAttribI2uiv) numFailed++; - _ptrc_glVertexAttribI3i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint))IntGetProcAddress("glVertexAttribI3i"); - if(!_ptrc_glVertexAttribI3i) numFailed++; - _ptrc_glVertexAttribI3iv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttribI3iv"); - if(!_ptrc_glVertexAttribI3iv) numFailed++; - _ptrc_glVertexAttribI3ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glVertexAttribI3ui"); - if(!_ptrc_glVertexAttribI3ui) numFailed++; - _ptrc_glVertexAttribI3uiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttribI3uiv"); - if(!_ptrc_glVertexAttribI3uiv) numFailed++; - _ptrc_glVertexAttribI4bv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLbyte *))IntGetProcAddress("glVertexAttribI4bv"); - if(!_ptrc_glVertexAttribI4bv) numFailed++; - _ptrc_glVertexAttribI4i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint))IntGetProcAddress("glVertexAttribI4i"); - if(!_ptrc_glVertexAttribI4i) numFailed++; - _ptrc_glVertexAttribI4iv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glVertexAttribI4iv"); - if(!_ptrc_glVertexAttribI4iv) numFailed++; - _ptrc_glVertexAttribI4sv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLshort *))IntGetProcAddress("glVertexAttribI4sv"); - if(!_ptrc_glVertexAttribI4sv) numFailed++; - _ptrc_glVertexAttribI4ubv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLubyte *))IntGetProcAddress("glVertexAttribI4ubv"); - if(!_ptrc_glVertexAttribI4ubv) numFailed++; - _ptrc_glVertexAttribI4ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glVertexAttribI4ui"); - if(!_ptrc_glVertexAttribI4ui) numFailed++; - _ptrc_glVertexAttribI4uiv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLuint *))IntGetProcAddress("glVertexAttribI4uiv"); - if(!_ptrc_glVertexAttribI4uiv) numFailed++; - _ptrc_glVertexAttribI4usv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLushort *))IntGetProcAddress("glVertexAttribI4usv"); - if(!_ptrc_glVertexAttribI4usv) numFailed++; - _ptrc_glVertexAttribIPointer = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glVertexAttribIPointer"); - if(!_ptrc_glVertexAttribIPointer) numFailed++; - _ptrc_glCopyBufferSubData = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr))IntGetProcAddress("glCopyBufferSubData"); - if(!_ptrc_glCopyBufferSubData) numFailed++; - _ptrc_glDrawArraysInstanced = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLsizei, GLsizei))IntGetProcAddress("glDrawArraysInstanced"); - if(!_ptrc_glDrawArraysInstanced) numFailed++; - _ptrc_glDrawElementsInstanced = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *, GLsizei))IntGetProcAddress("glDrawElementsInstanced"); - if(!_ptrc_glDrawElementsInstanced) numFailed++; - _ptrc_glGetActiveUniformBlockName = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetActiveUniformBlockName"); - if(!_ptrc_glGetActiveUniformBlockName) numFailed++; - _ptrc_glGetActiveUniformBlockiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLint *))IntGetProcAddress("glGetActiveUniformBlockiv"); - if(!_ptrc_glGetActiveUniformBlockiv) numFailed++; - _ptrc_glGetActiveUniformName = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetActiveUniformName"); - if(!_ptrc_glGetActiveUniformName) numFailed++; - _ptrc_glGetActiveUniformsiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLuint *, GLenum, GLint *))IntGetProcAddress("glGetActiveUniformsiv"); - if(!_ptrc_glGetActiveUniformsiv) numFailed++; - _ptrc_glGetUniformBlockIndex = (GLuint (CODEGEN_FUNCPTR *)(GLuint, const GLchar *))IntGetProcAddress("glGetUniformBlockIndex"); - if(!_ptrc_glGetUniformBlockIndex) numFailed++; - _ptrc_glGetUniformIndices = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLchar *const*, GLuint *))IntGetProcAddress("glGetUniformIndices"); - if(!_ptrc_glGetUniformIndices) numFailed++; - _ptrc_glPrimitiveRestartIndex = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glPrimitiveRestartIndex"); - if(!_ptrc_glPrimitiveRestartIndex) numFailed++; - _ptrc_glTexBuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint))IntGetProcAddress("glTexBuffer"); - if(!_ptrc_glTexBuffer) numFailed++; - _ptrc_glUniformBlockBinding = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glUniformBlockBinding"); - if(!_ptrc_glUniformBlockBinding) numFailed++; - _ptrc_glClientWaitSync = (GLenum (CODEGEN_FUNCPTR *)(GLsync, GLbitfield, GLuint64))IntGetProcAddress("glClientWaitSync"); - if(!_ptrc_glClientWaitSync) numFailed++; - _ptrc_glDeleteSync = (void (CODEGEN_FUNCPTR *)(GLsync))IntGetProcAddress("glDeleteSync"); - if(!_ptrc_glDeleteSync) numFailed++; - _ptrc_glDrawElementsBaseVertex = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *, GLint))IntGetProcAddress("glDrawElementsBaseVertex"); - if(!_ptrc_glDrawElementsBaseVertex) numFailed++; - _ptrc_glDrawElementsInstancedBaseVertex = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLint))IntGetProcAddress("glDrawElementsInstancedBaseVertex"); - if(!_ptrc_glDrawElementsInstancedBaseVertex) numFailed++; - _ptrc_glDrawRangeElementsBaseVertex = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void *, GLint))IntGetProcAddress("glDrawRangeElementsBaseVertex"); - if(!_ptrc_glDrawRangeElementsBaseVertex) numFailed++; - _ptrc_glFenceSync = (GLsync (CODEGEN_FUNCPTR *)(GLenum, GLbitfield))IntGetProcAddress("glFenceSync"); - if(!_ptrc_glFenceSync) numFailed++; - _ptrc_glFramebufferTexture = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint, GLint))IntGetProcAddress("glFramebufferTexture"); - if(!_ptrc_glFramebufferTexture) numFailed++; - _ptrc_glGetBufferParameteri64v = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint64 *))IntGetProcAddress("glGetBufferParameteri64v"); - if(!_ptrc_glGetBufferParameteri64v) numFailed++; - _ptrc_glGetInteger64i_v = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLint64 *))IntGetProcAddress("glGetInteger64i_v"); - if(!_ptrc_glGetInteger64i_v) numFailed++; - _ptrc_glGetInteger64v = (void (CODEGEN_FUNCPTR *)(GLenum, GLint64 *))IntGetProcAddress("glGetInteger64v"); - if(!_ptrc_glGetInteger64v) numFailed++; - _ptrc_glGetMultisamplefv = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLfloat *))IntGetProcAddress("glGetMultisamplefv"); - if(!_ptrc_glGetMultisamplefv) numFailed++; - _ptrc_glGetSynciv = (void (CODEGEN_FUNCPTR *)(GLsync, GLenum, GLsizei, GLsizei *, GLint *))IntGetProcAddress("glGetSynciv"); - if(!_ptrc_glGetSynciv) numFailed++; - _ptrc_glIsSync = (GLboolean (CODEGEN_FUNCPTR *)(GLsync))IntGetProcAddress("glIsSync"); - if(!_ptrc_glIsSync) numFailed++; - _ptrc_glMultiDrawElementsBaseVertex = (void (CODEGEN_FUNCPTR *)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei, const GLint *))IntGetProcAddress("glMultiDrawElementsBaseVertex"); - if(!_ptrc_glMultiDrawElementsBaseVertex) numFailed++; - _ptrc_glProvokingVertex = (void (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glProvokingVertex"); - if(!_ptrc_glProvokingVertex) numFailed++; - _ptrc_glSampleMaski = (void (CODEGEN_FUNCPTR *)(GLuint, GLbitfield))IntGetProcAddress("glSampleMaski"); - if(!_ptrc_glSampleMaski) numFailed++; - _ptrc_glTexImage2DMultisample = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTexImage2DMultisample"); - if(!_ptrc_glTexImage2DMultisample) numFailed++; - _ptrc_glTexImage3DMultisample = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTexImage3DMultisample"); - if(!_ptrc_glTexImage3DMultisample) numFailed++; - _ptrc_glWaitSync = (void (CODEGEN_FUNCPTR *)(GLsync, GLbitfield, GLuint64))IntGetProcAddress("glWaitSync"); - if(!_ptrc_glWaitSync) numFailed++; - _ptrc_glBindFragDataLocationIndexed = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, const GLchar *))IntGetProcAddress("glBindFragDataLocationIndexed"); - if(!_ptrc_glBindFragDataLocationIndexed) numFailed++; - _ptrc_glBindSampler = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glBindSampler"); - if(!_ptrc_glBindSampler) numFailed++; - _ptrc_glDeleteSamplers = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteSamplers"); - if(!_ptrc_glDeleteSamplers) numFailed++; - _ptrc_glGenSamplers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenSamplers"); - if(!_ptrc_glGenSamplers) numFailed++; - _ptrc_glGetFragDataIndex = (GLint (CODEGEN_FUNCPTR *)(GLuint, const GLchar *))IntGetProcAddress("glGetFragDataIndex"); - if(!_ptrc_glGetFragDataIndex) numFailed++; - _ptrc_glGetQueryObjecti64v = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint64 *))IntGetProcAddress("glGetQueryObjecti64v"); - if(!_ptrc_glGetQueryObjecti64v) numFailed++; - _ptrc_glGetQueryObjectui64v = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint64 *))IntGetProcAddress("glGetQueryObjectui64v"); - if(!_ptrc_glGetQueryObjectui64v) numFailed++; - _ptrc_glGetSamplerParameterIiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetSamplerParameterIiv"); - if(!_ptrc_glGetSamplerParameterIiv) numFailed++; - _ptrc_glGetSamplerParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint *))IntGetProcAddress("glGetSamplerParameterIuiv"); - if(!_ptrc_glGetSamplerParameterIuiv) numFailed++; - _ptrc_glGetSamplerParameterfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLfloat *))IntGetProcAddress("glGetSamplerParameterfv"); - if(!_ptrc_glGetSamplerParameterfv) numFailed++; - _ptrc_glGetSamplerParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetSamplerParameteriv"); - if(!_ptrc_glGetSamplerParameteriv) numFailed++; - _ptrc_glIsSampler = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsSampler"); - if(!_ptrc_glIsSampler) numFailed++; - _ptrc_glQueryCounter = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glQueryCounter"); - if(!_ptrc_glQueryCounter) numFailed++; - _ptrc_glSamplerParameterIiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLint *))IntGetProcAddress("glSamplerParameterIiv"); - if(!_ptrc_glSamplerParameterIiv) numFailed++; - _ptrc_glSamplerParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLuint *))IntGetProcAddress("glSamplerParameterIuiv"); - if(!_ptrc_glSamplerParameterIuiv) numFailed++; - _ptrc_glSamplerParameterf = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLfloat))IntGetProcAddress("glSamplerParameterf"); - if(!_ptrc_glSamplerParameterf) numFailed++; - _ptrc_glSamplerParameterfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLfloat *))IntGetProcAddress("glSamplerParameterfv"); - if(!_ptrc_glSamplerParameterfv) numFailed++; - _ptrc_glSamplerParameteri = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint))IntGetProcAddress("glSamplerParameteri"); - if(!_ptrc_glSamplerParameteri) numFailed++; - _ptrc_glSamplerParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLint *))IntGetProcAddress("glSamplerParameteriv"); - if(!_ptrc_glSamplerParameteriv) numFailed++; - _ptrc_glVertexAttribDivisor = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glVertexAttribDivisor"); - if(!_ptrc_glVertexAttribDivisor) numFailed++; - _ptrc_glVertexAttribP1ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexAttribP1ui"); - if(!_ptrc_glVertexAttribP1ui) numFailed++; - _ptrc_glVertexAttribP1uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, const GLuint *))IntGetProcAddress("glVertexAttribP1uiv"); - if(!_ptrc_glVertexAttribP1uiv) numFailed++; - _ptrc_glVertexAttribP2ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexAttribP2ui"); - if(!_ptrc_glVertexAttribP2ui) numFailed++; - _ptrc_glVertexAttribP2uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, const GLuint *))IntGetProcAddress("glVertexAttribP2uiv"); - if(!_ptrc_glVertexAttribP2uiv) numFailed++; - _ptrc_glVertexAttribP3ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexAttribP3ui"); - if(!_ptrc_glVertexAttribP3ui) numFailed++; - _ptrc_glVertexAttribP3uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, const GLuint *))IntGetProcAddress("glVertexAttribP3uiv"); - if(!_ptrc_glVertexAttribP3uiv) numFailed++; - _ptrc_glVertexAttribP4ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexAttribP4ui"); - if(!_ptrc_glVertexAttribP4ui) numFailed++; - _ptrc_glVertexAttribP4uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLboolean, const GLuint *))IntGetProcAddress("glVertexAttribP4uiv"); - if(!_ptrc_glVertexAttribP4uiv) numFailed++; - _ptrc_glBeginQueryIndexed = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint))IntGetProcAddress("glBeginQueryIndexed"); - if(!_ptrc_glBeginQueryIndexed) numFailed++; - _ptrc_glBindTransformFeedback = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glBindTransformFeedback"); - if(!_ptrc_glBindTransformFeedback) numFailed++; - _ptrc_glBlendEquationSeparatei = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum))IntGetProcAddress("glBlendEquationSeparatei"); - if(!_ptrc_glBlendEquationSeparatei) numFailed++; - _ptrc_glBlendEquationi = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glBlendEquationi"); - if(!_ptrc_glBlendEquationi) numFailed++; - _ptrc_glBlendFuncSeparatei = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLenum, GLenum))IntGetProcAddress("glBlendFuncSeparatei"); - if(!_ptrc_glBlendFuncSeparatei) numFailed++; - _ptrc_glBlendFunci = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum))IntGetProcAddress("glBlendFunci"); - if(!_ptrc_glBlendFunci) numFailed++; - _ptrc_glDeleteTransformFeedbacks = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteTransformFeedbacks"); - if(!_ptrc_glDeleteTransformFeedbacks) numFailed++; - _ptrc_glDrawArraysIndirect = (void (CODEGEN_FUNCPTR *)(GLenum, const void *))IntGetProcAddress("glDrawArraysIndirect"); - if(!_ptrc_glDrawArraysIndirect) numFailed++; - _ptrc_glDrawElementsIndirect = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const void *))IntGetProcAddress("glDrawElementsIndirect"); - if(!_ptrc_glDrawElementsIndirect) numFailed++; - _ptrc_glDrawTransformFeedback = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glDrawTransformFeedback"); - if(!_ptrc_glDrawTransformFeedback) numFailed++; - _ptrc_glDrawTransformFeedbackStream = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint))IntGetProcAddress("glDrawTransformFeedbackStream"); - if(!_ptrc_glDrawTransformFeedbackStream) numFailed++; - _ptrc_glEndQueryIndexed = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glEndQueryIndexed"); - if(!_ptrc_glEndQueryIndexed) numFailed++; - _ptrc_glGenTransformFeedbacks = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenTransformFeedbacks"); - if(!_ptrc_glGenTransformFeedbacks) numFailed++; - _ptrc_glGetActiveSubroutineName = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetActiveSubroutineName"); - if(!_ptrc_glGetActiveSubroutineName) numFailed++; - _ptrc_glGetActiveSubroutineUniformName = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetActiveSubroutineUniformName"); - if(!_ptrc_glGetActiveSubroutineUniformName) numFailed++; - _ptrc_glGetActiveSubroutineUniformiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLenum, GLint *))IntGetProcAddress("glGetActiveSubroutineUniformiv"); - if(!_ptrc_glGetActiveSubroutineUniformiv) numFailed++; - _ptrc_glGetProgramStageiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLint *))IntGetProcAddress("glGetProgramStageiv"); - if(!_ptrc_glGetProgramStageiv) numFailed++; - _ptrc_glGetQueryIndexediv = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLenum, GLint *))IntGetProcAddress("glGetQueryIndexediv"); - if(!_ptrc_glGetQueryIndexediv) numFailed++; - _ptrc_glGetSubroutineIndex = (GLuint (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLchar *))IntGetProcAddress("glGetSubroutineIndex"); - if(!_ptrc_glGetSubroutineIndex) numFailed++; - _ptrc_glGetSubroutineUniformLocation = (GLint (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLchar *))IntGetProcAddress("glGetSubroutineUniformLocation"); - if(!_ptrc_glGetSubroutineUniformLocation) numFailed++; - _ptrc_glGetUniformSubroutineuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLuint *))IntGetProcAddress("glGetUniformSubroutineuiv"); - if(!_ptrc_glGetUniformSubroutineuiv) numFailed++; - _ptrc_glGetUniformdv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLdouble *))IntGetProcAddress("glGetUniformdv"); - if(!_ptrc_glGetUniformdv) numFailed++; - _ptrc_glIsTransformFeedback = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsTransformFeedback"); - if(!_ptrc_glIsTransformFeedback) numFailed++; - _ptrc_glMinSampleShading = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glMinSampleShading"); - if(!_ptrc_glMinSampleShading) numFailed++; - _ptrc_glPatchParameterfv = (void (CODEGEN_FUNCPTR *)(GLenum, const GLfloat *))IntGetProcAddress("glPatchParameterfv"); - if(!_ptrc_glPatchParameterfv) numFailed++; - _ptrc_glPatchParameteri = (void (CODEGEN_FUNCPTR *)(GLenum, GLint))IntGetProcAddress("glPatchParameteri"); - if(!_ptrc_glPatchParameteri) numFailed++; - _ptrc_glPauseTransformFeedback = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPauseTransformFeedback"); - if(!_ptrc_glPauseTransformFeedback) numFailed++; - _ptrc_glResumeTransformFeedback = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glResumeTransformFeedback"); - if(!_ptrc_glResumeTransformFeedback) numFailed++; - _ptrc_glUniform1d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble))IntGetProcAddress("glUniform1d"); - if(!_ptrc_glUniform1d) numFailed++; - _ptrc_glUniform1dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLdouble *))IntGetProcAddress("glUniform1dv"); - if(!_ptrc_glUniform1dv) numFailed++; - _ptrc_glUniform2d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble, GLdouble))IntGetProcAddress("glUniform2d"); - if(!_ptrc_glUniform2d) numFailed++; - _ptrc_glUniform2dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLdouble *))IntGetProcAddress("glUniform2dv"); - if(!_ptrc_glUniform2dv) numFailed++; - _ptrc_glUniform3d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glUniform3d"); - if(!_ptrc_glUniform3d) numFailed++; - _ptrc_glUniform3dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLdouble *))IntGetProcAddress("glUniform3dv"); - if(!_ptrc_glUniform3dv) numFailed++; - _ptrc_glUniform4d = (void (CODEGEN_FUNCPTR *)(GLint, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glUniform4d"); - if(!_ptrc_glUniform4d) numFailed++; - _ptrc_glUniform4dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, const GLdouble *))IntGetProcAddress("glUniform4dv"); - if(!_ptrc_glUniform4dv) numFailed++; - _ptrc_glUniformMatrix2dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix2dv"); - if(!_ptrc_glUniformMatrix2dv) numFailed++; - _ptrc_glUniformMatrix2x3dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix2x3dv"); - if(!_ptrc_glUniformMatrix2x3dv) numFailed++; - _ptrc_glUniformMatrix2x4dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix2x4dv"); - if(!_ptrc_glUniformMatrix2x4dv) numFailed++; - _ptrc_glUniformMatrix3dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix3dv"); - if(!_ptrc_glUniformMatrix3dv) numFailed++; - _ptrc_glUniformMatrix3x2dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix3x2dv"); - if(!_ptrc_glUniformMatrix3x2dv) numFailed++; - _ptrc_glUniformMatrix3x4dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix3x4dv"); - if(!_ptrc_glUniformMatrix3x4dv) numFailed++; - _ptrc_glUniformMatrix4dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix4dv"); - if(!_ptrc_glUniformMatrix4dv) numFailed++; - _ptrc_glUniformMatrix4x2dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix4x2dv"); - if(!_ptrc_glUniformMatrix4x2dv) numFailed++; - _ptrc_glUniformMatrix4x3dv = (void (CODEGEN_FUNCPTR *)(GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glUniformMatrix4x3dv"); - if(!_ptrc_glUniformMatrix4x3dv) numFailed++; - _ptrc_glUniformSubroutinesuiv = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLuint *))IntGetProcAddress("glUniformSubroutinesuiv"); - if(!_ptrc_glUniformSubroutinesuiv) numFailed++; - _ptrc_glActiveShaderProgram = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glActiveShaderProgram"); - if(!_ptrc_glActiveShaderProgram) numFailed++; - _ptrc_glBindProgramPipeline = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glBindProgramPipeline"); - if(!_ptrc_glBindProgramPipeline) numFailed++; - _ptrc_glClearDepthf = (void (CODEGEN_FUNCPTR *)(GLfloat))IntGetProcAddress("glClearDepthf"); - if(!_ptrc_glClearDepthf) numFailed++; - _ptrc_glCreateShaderProgramv = (GLuint (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLchar *const*))IntGetProcAddress("glCreateShaderProgramv"); - if(!_ptrc_glCreateShaderProgramv) numFailed++; - _ptrc_glDeleteProgramPipelines = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *))IntGetProcAddress("glDeleteProgramPipelines"); - if(!_ptrc_glDeleteProgramPipelines) numFailed++; - _ptrc_glDepthRangeArrayv = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLdouble *))IntGetProcAddress("glDepthRangeArrayv"); - if(!_ptrc_glDepthRangeArrayv) numFailed++; - _ptrc_glDepthRangeIndexed = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble))IntGetProcAddress("glDepthRangeIndexed"); - if(!_ptrc_glDepthRangeIndexed) numFailed++; - _ptrc_glDepthRangef = (void (CODEGEN_FUNCPTR *)(GLfloat, GLfloat))IntGetProcAddress("glDepthRangef"); - if(!_ptrc_glDepthRangef) numFailed++; - _ptrc_glGenProgramPipelines = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glGenProgramPipelines"); - if(!_ptrc_glGenProgramPipelines) numFailed++; - _ptrc_glGetDoublei_v = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLdouble *))IntGetProcAddress("glGetDoublei_v"); - if(!_ptrc_glGetDoublei_v) numFailed++; - _ptrc_glGetFloati_v = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLfloat *))IntGetProcAddress("glGetFloati_v"); - if(!_ptrc_glGetFloati_v) numFailed++; - _ptrc_glGetProgramBinary = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLenum *, void *))IntGetProcAddress("glGetProgramBinary"); - if(!_ptrc_glGetProgramBinary) numFailed++; - _ptrc_glGetProgramPipelineInfoLog = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetProgramPipelineInfoLog"); - if(!_ptrc_glGetProgramPipelineInfoLog) numFailed++; - _ptrc_glGetProgramPipelineiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetProgramPipelineiv"); - if(!_ptrc_glGetProgramPipelineiv) numFailed++; - _ptrc_glGetShaderPrecisionFormat = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *, GLint *))IntGetProcAddress("glGetShaderPrecisionFormat"); - if(!_ptrc_glGetShaderPrecisionFormat) numFailed++; - _ptrc_glGetVertexAttribLdv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLdouble *))IntGetProcAddress("glGetVertexAttribLdv"); - if(!_ptrc_glGetVertexAttribLdv) numFailed++; - _ptrc_glIsProgramPipeline = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glIsProgramPipeline"); - if(!_ptrc_glIsProgramPipeline) numFailed++; - _ptrc_glProgramBinary = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const void *, GLsizei))IntGetProcAddress("glProgramBinary"); - if(!_ptrc_glProgramBinary) numFailed++; - _ptrc_glProgramParameteri = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint))IntGetProcAddress("glProgramParameteri"); - if(!_ptrc_glProgramParameteri) numFailed++; - _ptrc_glProgramUniform1d = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLdouble))IntGetProcAddress("glProgramUniform1d"); - if(!_ptrc_glProgramUniform1d) numFailed++; - _ptrc_glProgramUniform1dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLdouble *))IntGetProcAddress("glProgramUniform1dv"); - if(!_ptrc_glProgramUniform1dv) numFailed++; - _ptrc_glProgramUniform1f = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLfloat))IntGetProcAddress("glProgramUniform1f"); - if(!_ptrc_glProgramUniform1f) numFailed++; - _ptrc_glProgramUniform1fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLfloat *))IntGetProcAddress("glProgramUniform1fv"); - if(!_ptrc_glProgramUniform1fv) numFailed++; - _ptrc_glProgramUniform1i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint))IntGetProcAddress("glProgramUniform1i"); - if(!_ptrc_glProgramUniform1i) numFailed++; - _ptrc_glProgramUniform1iv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLint *))IntGetProcAddress("glProgramUniform1iv"); - if(!_ptrc_glProgramUniform1iv) numFailed++; - _ptrc_glProgramUniform1ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLuint))IntGetProcAddress("glProgramUniform1ui"); - if(!_ptrc_glProgramUniform1ui) numFailed++; - _ptrc_glProgramUniform1uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLuint *))IntGetProcAddress("glProgramUniform1uiv"); - if(!_ptrc_glProgramUniform1uiv) numFailed++; - _ptrc_glProgramUniform2d = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLdouble, GLdouble))IntGetProcAddress("glProgramUniform2d"); - if(!_ptrc_glProgramUniform2d) numFailed++; - _ptrc_glProgramUniform2dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLdouble *))IntGetProcAddress("glProgramUniform2dv"); - if(!_ptrc_glProgramUniform2dv) numFailed++; - _ptrc_glProgramUniform2f = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLfloat, GLfloat))IntGetProcAddress("glProgramUniform2f"); - if(!_ptrc_glProgramUniform2f) numFailed++; - _ptrc_glProgramUniform2fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLfloat *))IntGetProcAddress("glProgramUniform2fv"); - if(!_ptrc_glProgramUniform2fv) numFailed++; - _ptrc_glProgramUniform2i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint))IntGetProcAddress("glProgramUniform2i"); - if(!_ptrc_glProgramUniform2i) numFailed++; - _ptrc_glProgramUniform2iv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLint *))IntGetProcAddress("glProgramUniform2iv"); - if(!_ptrc_glProgramUniform2iv) numFailed++; - _ptrc_glProgramUniform2ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLuint, GLuint))IntGetProcAddress("glProgramUniform2ui"); - if(!_ptrc_glProgramUniform2ui) numFailed++; - _ptrc_glProgramUniform2uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLuint *))IntGetProcAddress("glProgramUniform2uiv"); - if(!_ptrc_glProgramUniform2uiv) numFailed++; - _ptrc_glProgramUniform3d = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glProgramUniform3d"); - if(!_ptrc_glProgramUniform3d) numFailed++; - _ptrc_glProgramUniform3dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLdouble *))IntGetProcAddress("glProgramUniform3dv"); - if(!_ptrc_glProgramUniform3dv) numFailed++; - _ptrc_glProgramUniform3f = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glProgramUniform3f"); - if(!_ptrc_glProgramUniform3f) numFailed++; - _ptrc_glProgramUniform3fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLfloat *))IntGetProcAddress("glProgramUniform3fv"); - if(!_ptrc_glProgramUniform3fv) numFailed++; - _ptrc_glProgramUniform3i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint))IntGetProcAddress("glProgramUniform3i"); - if(!_ptrc_glProgramUniform3i) numFailed++; - _ptrc_glProgramUniform3iv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLint *))IntGetProcAddress("glProgramUniform3iv"); - if(!_ptrc_glProgramUniform3iv) numFailed++; - _ptrc_glProgramUniform3ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLuint, GLuint, GLuint))IntGetProcAddress("glProgramUniform3ui"); - if(!_ptrc_glProgramUniform3ui) numFailed++; - _ptrc_glProgramUniform3uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLuint *))IntGetProcAddress("glProgramUniform3uiv"); - if(!_ptrc_glProgramUniform3uiv) numFailed++; - _ptrc_glProgramUniform4d = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glProgramUniform4d"); - if(!_ptrc_glProgramUniform4d) numFailed++; - _ptrc_glProgramUniform4dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLdouble *))IntGetProcAddress("glProgramUniform4dv"); - if(!_ptrc_glProgramUniform4dv) numFailed++; - _ptrc_glProgramUniform4f = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glProgramUniform4f"); - if(!_ptrc_glProgramUniform4f) numFailed++; - _ptrc_glProgramUniform4fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLfloat *))IntGetProcAddress("glProgramUniform4fv"); - if(!_ptrc_glProgramUniform4fv) numFailed++; - _ptrc_glProgramUniform4i = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLint))IntGetProcAddress("glProgramUniform4i"); - if(!_ptrc_glProgramUniform4i) numFailed++; - _ptrc_glProgramUniform4iv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLint *))IntGetProcAddress("glProgramUniform4iv"); - if(!_ptrc_glProgramUniform4iv) numFailed++; - _ptrc_glProgramUniform4ui = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glProgramUniform4ui"); - if(!_ptrc_glProgramUniform4ui) numFailed++; - _ptrc_glProgramUniform4uiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, const GLuint *))IntGetProcAddress("glProgramUniform4uiv"); - if(!_ptrc_glProgramUniform4uiv) numFailed++; - _ptrc_glProgramUniformMatrix2dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix2dv"); - if(!_ptrc_glProgramUniformMatrix2dv) numFailed++; - _ptrc_glProgramUniformMatrix2fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix2fv"); - if(!_ptrc_glProgramUniformMatrix2fv) numFailed++; - _ptrc_glProgramUniformMatrix2x3dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix2x3dv"); - if(!_ptrc_glProgramUniformMatrix2x3dv) numFailed++; - _ptrc_glProgramUniformMatrix2x3fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix2x3fv"); - if(!_ptrc_glProgramUniformMatrix2x3fv) numFailed++; - _ptrc_glProgramUniformMatrix2x4dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix2x4dv"); - if(!_ptrc_glProgramUniformMatrix2x4dv) numFailed++; - _ptrc_glProgramUniformMatrix2x4fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix2x4fv"); - if(!_ptrc_glProgramUniformMatrix2x4fv) numFailed++; - _ptrc_glProgramUniformMatrix3dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix3dv"); - if(!_ptrc_glProgramUniformMatrix3dv) numFailed++; - _ptrc_glProgramUniformMatrix3fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix3fv"); - if(!_ptrc_glProgramUniformMatrix3fv) numFailed++; - _ptrc_glProgramUniformMatrix3x2dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix3x2dv"); - if(!_ptrc_glProgramUniformMatrix3x2dv) numFailed++; - _ptrc_glProgramUniformMatrix3x2fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix3x2fv"); - if(!_ptrc_glProgramUniformMatrix3x2fv) numFailed++; - _ptrc_glProgramUniformMatrix3x4dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix3x4dv"); - if(!_ptrc_glProgramUniformMatrix3x4dv) numFailed++; - _ptrc_glProgramUniformMatrix3x4fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix3x4fv"); - if(!_ptrc_glProgramUniformMatrix3x4fv) numFailed++; - _ptrc_glProgramUniformMatrix4dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix4dv"); - if(!_ptrc_glProgramUniformMatrix4dv) numFailed++; - _ptrc_glProgramUniformMatrix4fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix4fv"); - if(!_ptrc_glProgramUniformMatrix4fv) numFailed++; - _ptrc_glProgramUniformMatrix4x2dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix4x2dv"); - if(!_ptrc_glProgramUniformMatrix4x2dv) numFailed++; - _ptrc_glProgramUniformMatrix4x2fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix4x2fv"); - if(!_ptrc_glProgramUniformMatrix4x2fv) numFailed++; - _ptrc_glProgramUniformMatrix4x3dv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *))IntGetProcAddress("glProgramUniformMatrix4x3dv"); - if(!_ptrc_glProgramUniformMatrix4x3dv) numFailed++; - _ptrc_glProgramUniformMatrix4x3fv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *))IntGetProcAddress("glProgramUniformMatrix4x3fv"); - if(!_ptrc_glProgramUniformMatrix4x3fv) numFailed++; - _ptrc_glReleaseShaderCompiler = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glReleaseShaderCompiler"); - if(!_ptrc_glReleaseShaderCompiler) numFailed++; - _ptrc_glScissorArrayv = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLint *))IntGetProcAddress("glScissorArrayv"); - if(!_ptrc_glScissorArrayv) numFailed++; - _ptrc_glScissorIndexed = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glScissorIndexed"); - if(!_ptrc_glScissorIndexed) numFailed++; - _ptrc_glScissorIndexedv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLint *))IntGetProcAddress("glScissorIndexedv"); - if(!_ptrc_glScissorIndexedv) numFailed++; - _ptrc_glShaderBinary = (void (CODEGEN_FUNCPTR *)(GLsizei, const GLuint *, GLenum, const void *, GLsizei))IntGetProcAddress("glShaderBinary"); - if(!_ptrc_glShaderBinary) numFailed++; - _ptrc_glUseProgramStages = (void (CODEGEN_FUNCPTR *)(GLuint, GLbitfield, GLuint))IntGetProcAddress("glUseProgramStages"); - if(!_ptrc_glUseProgramStages) numFailed++; - _ptrc_glValidateProgramPipeline = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glValidateProgramPipeline"); - if(!_ptrc_glValidateProgramPipeline) numFailed++; - _ptrc_glVertexAttribL1d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble))IntGetProcAddress("glVertexAttribL1d"); - if(!_ptrc_glVertexAttribL1d) numFailed++; - _ptrc_glVertexAttribL1dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttribL1dv"); - if(!_ptrc_glVertexAttribL1dv) numFailed++; - _ptrc_glVertexAttribL2d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble))IntGetProcAddress("glVertexAttribL2d"); - if(!_ptrc_glVertexAttribL2d) numFailed++; - _ptrc_glVertexAttribL2dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttribL2dv"); - if(!_ptrc_glVertexAttribL2dv) numFailed++; - _ptrc_glVertexAttribL3d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertexAttribL3d"); - if(!_ptrc_glVertexAttribL3d) numFailed++; - _ptrc_glVertexAttribL3dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttribL3dv"); - if(!_ptrc_glVertexAttribL3dv) numFailed++; - _ptrc_glVertexAttribL4d = (void (CODEGEN_FUNCPTR *)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble))IntGetProcAddress("glVertexAttribL4d"); - if(!_ptrc_glVertexAttribL4d) numFailed++; - _ptrc_glVertexAttribL4dv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLdouble *))IntGetProcAddress("glVertexAttribL4dv"); - if(!_ptrc_glVertexAttribL4dv) numFailed++; - _ptrc_glVertexAttribLPointer = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLsizei, const void *))IntGetProcAddress("glVertexAttribLPointer"); - if(!_ptrc_glVertexAttribLPointer) numFailed++; - _ptrc_glViewportArrayv = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLfloat *))IntGetProcAddress("glViewportArrayv"); - if(!_ptrc_glViewportArrayv) numFailed++; - _ptrc_glViewportIndexedf = (void (CODEGEN_FUNCPTR *)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat))IntGetProcAddress("glViewportIndexedf"); - if(!_ptrc_glViewportIndexedf) numFailed++; - _ptrc_glViewportIndexedfv = (void (CODEGEN_FUNCPTR *)(GLuint, const GLfloat *))IntGetProcAddress("glViewportIndexedfv"); - if(!_ptrc_glViewportIndexedfv) numFailed++; - _ptrc_glBindImageTexture = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum))IntGetProcAddress("glBindImageTexture"); - if(!_ptrc_glBindImageTexture) numFailed++; - _ptrc_glDrawArraysInstancedBaseInstance = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLsizei, GLsizei, GLuint))IntGetProcAddress("glDrawArraysInstancedBaseInstance"); - if(!_ptrc_glDrawArraysInstancedBaseInstance) numFailed++; - _ptrc_glDrawElementsInstancedBaseInstance = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLuint))IntGetProcAddress("glDrawElementsInstancedBaseInstance"); - if(!_ptrc_glDrawElementsInstancedBaseInstance) numFailed++; - _ptrc_glDrawElementsInstancedBaseVertexBaseInstance = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLint, GLuint))IntGetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"); - if(!_ptrc_glDrawElementsInstancedBaseVertexBaseInstance) numFailed++; - _ptrc_glDrawTransformFeedbackInstanced = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei))IntGetProcAddress("glDrawTransformFeedbackInstanced"); - if(!_ptrc_glDrawTransformFeedbackInstanced) numFailed++; - _ptrc_glDrawTransformFeedbackStreamInstanced = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLuint, GLsizei))IntGetProcAddress("glDrawTransformFeedbackStreamInstanced"); - if(!_ptrc_glDrawTransformFeedbackStreamInstanced) numFailed++; - _ptrc_glGetActiveAtomicCounterBufferiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLint *))IntGetProcAddress("glGetActiveAtomicCounterBufferiv"); - if(!_ptrc_glGetActiveAtomicCounterBufferiv) numFailed++; - _ptrc_glGetInternalformativ = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLsizei, GLint *))IntGetProcAddress("glGetInternalformativ"); - if(!_ptrc_glGetInternalformativ) numFailed++; - _ptrc_glMemoryBarrier = (void (CODEGEN_FUNCPTR *)(GLbitfield))IntGetProcAddress("glMemoryBarrier"); - if(!_ptrc_glMemoryBarrier) numFailed++; - _ptrc_glTexStorage1D = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei))IntGetProcAddress("glTexStorage1D"); - if(!_ptrc_glTexStorage1D) numFailed++; - _ptrc_glTexStorage2D = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei))IntGetProcAddress("glTexStorage2D"); - if(!_ptrc_glTexStorage2D) numFailed++; - _ptrc_glTexStorage3D = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei))IntGetProcAddress("glTexStorage3D"); - if(!_ptrc_glTexStorage3D) numFailed++; - _ptrc_glBindVertexBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLintptr, GLsizei))IntGetProcAddress("glBindVertexBuffer"); - if(!_ptrc_glBindVertexBuffer) numFailed++; - _ptrc_glClearBufferData = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLenum, const void *))IntGetProcAddress("glClearBufferData"); - if(!_ptrc_glClearBufferData) numFailed++; - _ptrc_glClearBufferSubData = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, const void *))IntGetProcAddress("glClearBufferSubData"); - if(!_ptrc_glClearBufferSubData) numFailed++; - _ptrc_glCopyImageSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei))IntGetProcAddress("glCopyImageSubData"); - if(!_ptrc_glCopyImageSubData) numFailed++; - _ptrc_glDebugMessageCallback = (void (CODEGEN_FUNCPTR *)(GLDEBUGPROC, const void *))IntGetProcAddress("glDebugMessageCallback"); - if(!_ptrc_glDebugMessageCallback) numFailed++; - _ptrc_glDebugMessageControl = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean))IntGetProcAddress("glDebugMessageControl"); - if(!_ptrc_glDebugMessageControl) numFailed++; - _ptrc_glDebugMessageInsert = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *))IntGetProcAddress("glDebugMessageInsert"); - if(!_ptrc_glDebugMessageInsert) numFailed++; - _ptrc_glDispatchCompute = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glDispatchCompute"); - if(!_ptrc_glDispatchCompute) numFailed++; - _ptrc_glDispatchComputeIndirect = (void (CODEGEN_FUNCPTR *)(GLintptr))IntGetProcAddress("glDispatchComputeIndirect"); - if(!_ptrc_glDispatchComputeIndirect) numFailed++; - _ptrc_glFramebufferParameteri = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint))IntGetProcAddress("glFramebufferParameteri"); - if(!_ptrc_glFramebufferParameteri) numFailed++; - _ptrc_glGetDebugMessageLog = (GLuint (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *))IntGetProcAddress("glGetDebugMessageLog"); - if(!_ptrc_glGetDebugMessageLog) numFailed++; - _ptrc_glGetFramebufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLint *))IntGetProcAddress("glGetFramebufferParameteriv"); - if(!_ptrc_glGetFramebufferParameteriv) numFailed++; - _ptrc_glGetInternalformati64v = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLenum, GLsizei, GLint64 *))IntGetProcAddress("glGetInternalformati64v"); - if(!_ptrc_glGetInternalformati64v) numFailed++; - _ptrc_glGetObjectLabel = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetObjectLabel"); - if(!_ptrc_glGetObjectLabel) numFailed++; - _ptrc_glGetObjectPtrLabel = (void (CODEGEN_FUNCPTR *)(const void *, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetObjectPtrLabel"); - if(!_ptrc_glGetObjectPtrLabel) numFailed++; - _ptrc_glGetProgramInterfaceiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLint *))IntGetProcAddress("glGetProgramInterfaceiv"); - if(!_ptrc_glGetProgramInterfaceiv) numFailed++; - _ptrc_glGetProgramResourceIndex = (GLuint (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLchar *))IntGetProcAddress("glGetProgramResourceIndex"); - if(!_ptrc_glGetProgramResourceIndex) numFailed++; - _ptrc_glGetProgramResourceLocation = (GLint (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLchar *))IntGetProcAddress("glGetProgramResourceLocation"); - if(!_ptrc_glGetProgramResourceLocation) numFailed++; - _ptrc_glGetProgramResourceLocationIndex = (GLint (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLchar *))IntGetProcAddress("glGetProgramResourceLocationIndex"); - if(!_ptrc_glGetProgramResourceLocationIndex) numFailed++; - _ptrc_glGetProgramResourceName = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *))IntGetProcAddress("glGetProgramResourceName"); - if(!_ptrc_glGetProgramResourceName) numFailed++; - _ptrc_glGetProgramResourceiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLsizei, const GLenum *, GLsizei, GLsizei *, GLint *))IntGetProcAddress("glGetProgramResourceiv"); - if(!_ptrc_glGetProgramResourceiv) numFailed++; - _ptrc_glInvalidateBufferData = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glInvalidateBufferData"); - if(!_ptrc_glInvalidateBufferData) numFailed++; - _ptrc_glInvalidateBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glInvalidateBufferSubData"); - if(!_ptrc_glInvalidateBufferSubData) numFailed++; - _ptrc_glInvalidateFramebuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLenum *))IntGetProcAddress("glInvalidateFramebuffer"); - if(!_ptrc_glInvalidateFramebuffer) numFailed++; - _ptrc_glInvalidateSubFramebuffer = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glInvalidateSubFramebuffer"); - if(!_ptrc_glInvalidateSubFramebuffer) numFailed++; - _ptrc_glInvalidateTexImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint))IntGetProcAddress("glInvalidateTexImage"); - if(!_ptrc_glInvalidateTexImage) numFailed++; - _ptrc_glInvalidateTexSubImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei))IntGetProcAddress("glInvalidateTexSubImage"); - if(!_ptrc_glInvalidateTexSubImage) numFailed++; - _ptrc_glMultiDrawArraysIndirect = (void (CODEGEN_FUNCPTR *)(GLenum, const void *, GLsizei, GLsizei))IntGetProcAddress("glMultiDrawArraysIndirect"); - if(!_ptrc_glMultiDrawArraysIndirect) numFailed++; - _ptrc_glMultiDrawElementsIndirect = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, const void *, GLsizei, GLsizei))IntGetProcAddress("glMultiDrawElementsIndirect"); - if(!_ptrc_glMultiDrawElementsIndirect) numFailed++; - _ptrc_glObjectLabel = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLchar *))IntGetProcAddress("glObjectLabel"); - if(!_ptrc_glObjectLabel) numFailed++; - _ptrc_glObjectPtrLabel = (void (CODEGEN_FUNCPTR *)(const void *, GLsizei, const GLchar *))IntGetProcAddress("glObjectPtrLabel"); - if(!_ptrc_glObjectPtrLabel) numFailed++; - _ptrc_glPopDebugGroup = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glPopDebugGroup"); - if(!_ptrc_glPopDebugGroup) numFailed++; - _ptrc_glPushDebugGroup = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLchar *))IntGetProcAddress("glPushDebugGroup"); - if(!_ptrc_glPushDebugGroup) numFailed++; - _ptrc_glShaderStorageBlockBinding = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glShaderStorageBlockBinding"); - if(!_ptrc_glShaderStorageBlockBinding) numFailed++; - _ptrc_glTexBufferRange = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glTexBufferRange"); - if(!_ptrc_glTexBufferRange) numFailed++; - _ptrc_glTexStorage2DMultisample = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTexStorage2DMultisample"); - if(!_ptrc_glTexStorage2DMultisample) numFailed++; - _ptrc_glTexStorage3DMultisample = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTexStorage3DMultisample"); - if(!_ptrc_glTexStorage3DMultisample) numFailed++; - _ptrc_glTextureView = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLenum, GLuint, GLuint, GLuint, GLuint))IntGetProcAddress("glTextureView"); - if(!_ptrc_glTextureView) numFailed++; - _ptrc_glVertexAttribBinding = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glVertexAttribBinding"); - if(!_ptrc_glVertexAttribBinding) numFailed++; - _ptrc_glVertexAttribFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexAttribFormat"); - if(!_ptrc_glVertexAttribFormat) numFailed++; - _ptrc_glVertexAttribIFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLuint))IntGetProcAddress("glVertexAttribIFormat"); - if(!_ptrc_glVertexAttribIFormat) numFailed++; - _ptrc_glVertexAttribLFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLuint))IntGetProcAddress("glVertexAttribLFormat"); - if(!_ptrc_glVertexAttribLFormat) numFailed++; - _ptrc_glVertexBindingDivisor = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glVertexBindingDivisor"); - if(!_ptrc_glVertexBindingDivisor) numFailed++; - _ptrc_glBindBuffersBase = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLuint *))IntGetProcAddress("glBindBuffersBase"); - if(!_ptrc_glBindBuffersBase) numFailed++; - _ptrc_glBindBuffersRange = (void (CODEGEN_FUNCPTR *)(GLenum, GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizeiptr *))IntGetProcAddress("glBindBuffersRange"); - if(!_ptrc_glBindBuffersRange) numFailed++; - _ptrc_glBindImageTextures = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLuint *))IntGetProcAddress("glBindImageTextures"); - if(!_ptrc_glBindImageTextures) numFailed++; - _ptrc_glBindSamplers = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLuint *))IntGetProcAddress("glBindSamplers"); - if(!_ptrc_glBindSamplers) numFailed++; - _ptrc_glBindTextures = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLuint *))IntGetProcAddress("glBindTextures"); - if(!_ptrc_glBindTextures) numFailed++; - _ptrc_glBindVertexBuffers = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizei *))IntGetProcAddress("glBindVertexBuffers"); - if(!_ptrc_glBindVertexBuffers) numFailed++; - _ptrc_glBufferStorage = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizeiptr, const void *, GLbitfield))IntGetProcAddress("glBufferStorage"); - if(!_ptrc_glBufferStorage) numFailed++; - _ptrc_glClearTexImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLenum, const void *))IntGetProcAddress("glClearTexImage"); - if(!_ptrc_glClearTexImage) numFailed++; - _ptrc_glClearTexSubImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glClearTexSubImage"); - if(!_ptrc_glClearTexSubImage) numFailed++; - _ptrc_glBindTextureUnit = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glBindTextureUnit"); - if(!_ptrc_glBindTextureUnit) numFailed++; - _ptrc_glBlitNamedFramebuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum))IntGetProcAddress("glBlitNamedFramebuffer"); - if(!_ptrc_glBlitNamedFramebuffer) numFailed++; - _ptrc_glCheckNamedFramebufferStatus = (GLenum (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glCheckNamedFramebufferStatus"); - if(!_ptrc_glCheckNamedFramebufferStatus) numFailed++; - _ptrc_glClearNamedBufferData = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLenum, const void *))IntGetProcAddress("glClearNamedBufferData"); - if(!_ptrc_glClearNamedBufferData) numFailed++; - _ptrc_glClearNamedBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, const void *))IntGetProcAddress("glClearNamedBufferSubData"); - if(!_ptrc_glClearNamedBufferSubData) numFailed++; - _ptrc_glClearNamedFramebufferfi = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint, const GLfloat, GLint))IntGetProcAddress("glClearNamedFramebufferfi"); - if(!_ptrc_glClearNamedFramebufferfi) numFailed++; - _ptrc_glClearNamedFramebufferfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint, const GLfloat *))IntGetProcAddress("glClearNamedFramebufferfv"); - if(!_ptrc_glClearNamedFramebufferfv) numFailed++; - _ptrc_glClearNamedFramebufferiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint, const GLint *))IntGetProcAddress("glClearNamedFramebufferiv"); - if(!_ptrc_glClearNamedFramebufferiv) numFailed++; - _ptrc_glClearNamedFramebufferuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint, const GLuint *))IntGetProcAddress("glClearNamedFramebufferuiv"); - if(!_ptrc_glClearNamedFramebufferuiv) numFailed++; - _ptrc_glClipControl = (void (CODEGEN_FUNCPTR *)(GLenum, GLenum))IntGetProcAddress("glClipControl"); - if(!_ptrc_glClipControl) numFailed++; - _ptrc_glCompressedTextureSubImage1D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTextureSubImage1D"); - if(!_ptrc_glCompressedTextureSubImage1D) numFailed++; - _ptrc_glCompressedTextureSubImage2D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTextureSubImage2D"); - if(!_ptrc_glCompressedTextureSubImage2D) numFailed++; - _ptrc_glCompressedTextureSubImage3D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *))IntGetProcAddress("glCompressedTextureSubImage3D"); - if(!_ptrc_glCompressedTextureSubImage3D) numFailed++; - _ptrc_glCopyNamedBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr))IntGetProcAddress("glCopyNamedBufferSubData"); - if(!_ptrc_glCopyNamedBufferSubData) numFailed++; - _ptrc_glCopyTextureSubImage1D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei))IntGetProcAddress("glCopyTextureSubImage1D"); - if(!_ptrc_glCopyTextureSubImage1D) numFailed++; - _ptrc_glCopyTextureSubImage2D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glCopyTextureSubImage2D"); - if(!_ptrc_glCopyTextureSubImage2D) numFailed++; - _ptrc_glCopyTextureSubImage3D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glCopyTextureSubImage3D"); - if(!_ptrc_glCopyTextureSubImage3D) numFailed++; - _ptrc_glCreateBuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateBuffers"); - if(!_ptrc_glCreateBuffers) numFailed++; - _ptrc_glCreateFramebuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateFramebuffers"); - if(!_ptrc_glCreateFramebuffers) numFailed++; - _ptrc_glCreateProgramPipelines = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateProgramPipelines"); - if(!_ptrc_glCreateProgramPipelines) numFailed++; - _ptrc_glCreateQueries = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLuint *))IntGetProcAddress("glCreateQueries"); - if(!_ptrc_glCreateQueries) numFailed++; - _ptrc_glCreateRenderbuffers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateRenderbuffers"); - if(!_ptrc_glCreateRenderbuffers) numFailed++; - _ptrc_glCreateSamplers = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateSamplers"); - if(!_ptrc_glCreateSamplers) numFailed++; - _ptrc_glCreateTextures = (void (CODEGEN_FUNCPTR *)(GLenum, GLsizei, GLuint *))IntGetProcAddress("glCreateTextures"); - if(!_ptrc_glCreateTextures) numFailed++; - _ptrc_glCreateTransformFeedbacks = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateTransformFeedbacks"); - if(!_ptrc_glCreateTransformFeedbacks) numFailed++; - _ptrc_glCreateVertexArrays = (void (CODEGEN_FUNCPTR *)(GLsizei, GLuint *))IntGetProcAddress("glCreateVertexArrays"); - if(!_ptrc_glCreateVertexArrays) numFailed++; - _ptrc_glDisableVertexArrayAttrib = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glDisableVertexArrayAttrib"); - if(!_ptrc_glDisableVertexArrayAttrib) numFailed++; - _ptrc_glEnableVertexArrayAttrib = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glEnableVertexArrayAttrib"); - if(!_ptrc_glEnableVertexArrayAttrib) numFailed++; - _ptrc_glFlushMappedNamedBufferRange = (void (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glFlushMappedNamedBufferRange"); - if(!_ptrc_glFlushMappedNamedBufferRange) numFailed++; - _ptrc_glGenerateTextureMipmap = (void (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glGenerateTextureMipmap"); - if(!_ptrc_glGenerateTextureMipmap) numFailed++; - _ptrc_glGetCompressedTextureImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, void *))IntGetProcAddress("glGetCompressedTextureImage"); - if(!_ptrc_glGetCompressedTextureImage) numFailed++; - _ptrc_glGetCompressedTextureSubImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, void *))IntGetProcAddress("glGetCompressedTextureSubImage"); - if(!_ptrc_glGetCompressedTextureSubImage) numFailed++; - _ptrc_glGetGraphicsResetStatus = (GLenum (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glGetGraphicsResetStatus"); - if(!_ptrc_glGetGraphicsResetStatus) numFailed++; - _ptrc_glGetNamedBufferParameteri64v = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint64 *))IntGetProcAddress("glGetNamedBufferParameteri64v"); - if(!_ptrc_glGetNamedBufferParameteri64v) numFailed++; - _ptrc_glGetNamedBufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetNamedBufferParameteriv"); - if(!_ptrc_glGetNamedBufferParameteriv) numFailed++; - _ptrc_glGetNamedBufferPointerv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, void **))IntGetProcAddress("glGetNamedBufferPointerv"); - if(!_ptrc_glGetNamedBufferPointerv) numFailed++; - _ptrc_glGetNamedBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr, void *))IntGetProcAddress("glGetNamedBufferSubData"); - if(!_ptrc_glGetNamedBufferSubData) numFailed++; - _ptrc_glGetNamedFramebufferAttachmentParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLint *))IntGetProcAddress("glGetNamedFramebufferAttachmentParameteriv"); - if(!_ptrc_glGetNamedFramebufferAttachmentParameteriv) numFailed++; - _ptrc_glGetNamedFramebufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetNamedFramebufferParameteriv"); - if(!_ptrc_glGetNamedFramebufferParameteriv) numFailed++; - _ptrc_glGetNamedRenderbufferParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetNamedRenderbufferParameteriv"); - if(!_ptrc_glGetNamedRenderbufferParameteriv) numFailed++; - _ptrc_glGetQueryBufferObjecti64v = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLintptr))IntGetProcAddress("glGetQueryBufferObjecti64v"); - if(!_ptrc_glGetQueryBufferObjecti64v) numFailed++; - _ptrc_glGetQueryBufferObjectiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLintptr))IntGetProcAddress("glGetQueryBufferObjectiv"); - if(!_ptrc_glGetQueryBufferObjectiv) numFailed++; - _ptrc_glGetQueryBufferObjectui64v = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLintptr))IntGetProcAddress("glGetQueryBufferObjectui64v"); - if(!_ptrc_glGetQueryBufferObjectui64v) numFailed++; - _ptrc_glGetQueryBufferObjectuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLintptr))IntGetProcAddress("glGetQueryBufferObjectuiv"); - if(!_ptrc_glGetQueryBufferObjectuiv) numFailed++; - _ptrc_glGetTextureImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLenum, GLsizei, void *))IntGetProcAddress("glGetTextureImage"); - if(!_ptrc_glGetTextureImage) numFailed++; - _ptrc_glGetTextureLevelParameterfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLfloat *))IntGetProcAddress("glGetTextureLevelParameterfv"); - if(!_ptrc_glGetTextureLevelParameterfv) numFailed++; - _ptrc_glGetTextureLevelParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLenum, GLint *))IntGetProcAddress("glGetTextureLevelParameteriv"); - if(!_ptrc_glGetTextureLevelParameteriv) numFailed++; - _ptrc_glGetTextureParameterIiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetTextureParameterIiv"); - if(!_ptrc_glGetTextureParameterIiv) numFailed++; - _ptrc_glGetTextureParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint *))IntGetProcAddress("glGetTextureParameterIuiv"); - if(!_ptrc_glGetTextureParameterIuiv) numFailed++; - _ptrc_glGetTextureParameterfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLfloat *))IntGetProcAddress("glGetTextureParameterfv"); - if(!_ptrc_glGetTextureParameterfv) numFailed++; - _ptrc_glGetTextureParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetTextureParameteriv"); - if(!_ptrc_glGetTextureParameteriv) numFailed++; - _ptrc_glGetTextureSubImage = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *))IntGetProcAddress("glGetTextureSubImage"); - if(!_ptrc_glGetTextureSubImage) numFailed++; - _ptrc_glGetTransformFeedbacki64_v = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLint64 *))IntGetProcAddress("glGetTransformFeedbacki64_v"); - if(!_ptrc_glGetTransformFeedbacki64_v) numFailed++; - _ptrc_glGetTransformFeedbacki_v = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLint *))IntGetProcAddress("glGetTransformFeedbacki_v"); - if(!_ptrc_glGetTransformFeedbacki_v) numFailed++; - _ptrc_glGetTransformFeedbackiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetTransformFeedbackiv"); - if(!_ptrc_glGetTransformFeedbackiv) numFailed++; - _ptrc_glGetVertexArrayIndexed64iv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLint64 *))IntGetProcAddress("glGetVertexArrayIndexed64iv"); - if(!_ptrc_glGetVertexArrayIndexed64iv) numFailed++; - _ptrc_glGetVertexArrayIndexediv = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLenum, GLint *))IntGetProcAddress("glGetVertexArrayIndexediv"); - if(!_ptrc_glGetVertexArrayIndexediv) numFailed++; - _ptrc_glGetVertexArrayiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint *))IntGetProcAddress("glGetVertexArrayiv"); - if(!_ptrc_glGetVertexArrayiv) numFailed++; - _ptrc_glGetnCompressedTexImage = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLsizei, void *))IntGetProcAddress("glGetnCompressedTexImage"); - if(!_ptrc_glGetnCompressedTexImage) numFailed++; - _ptrc_glGetnTexImage = (void (CODEGEN_FUNCPTR *)(GLenum, GLint, GLenum, GLenum, GLsizei, void *))IntGetProcAddress("glGetnTexImage"); - if(!_ptrc_glGetnTexImage) numFailed++; - _ptrc_glGetnUniformdv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLdouble *))IntGetProcAddress("glGetnUniformdv"); - if(!_ptrc_glGetnUniformdv) numFailed++; - _ptrc_glGetnUniformfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLfloat *))IntGetProcAddress("glGetnUniformfv"); - if(!_ptrc_glGetnUniformfv) numFailed++; - _ptrc_glGetnUniformiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLint *))IntGetProcAddress("glGetnUniformiv"); - if(!_ptrc_glGetnUniformiv) numFailed++; - _ptrc_glGetnUniformuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLsizei, GLuint *))IntGetProcAddress("glGetnUniformuiv"); - if(!_ptrc_glGetnUniformuiv) numFailed++; - _ptrc_glInvalidateNamedFramebufferData = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLenum *))IntGetProcAddress("glInvalidateNamedFramebufferData"); - if(!_ptrc_glInvalidateNamedFramebufferData) numFailed++; - _ptrc_glInvalidateNamedFramebufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei))IntGetProcAddress("glInvalidateNamedFramebufferSubData"); - if(!_ptrc_glInvalidateNamedFramebufferSubData) numFailed++; - _ptrc_glMapNamedBuffer = (void * (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glMapNamedBuffer"); - if(!_ptrc_glMapNamedBuffer) numFailed++; - _ptrc_glMapNamedBufferRange = (void * (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr, GLbitfield))IntGetProcAddress("glMapNamedBufferRange"); - if(!_ptrc_glMapNamedBufferRange) numFailed++; - _ptrc_glMemoryBarrierByRegion = (void (CODEGEN_FUNCPTR *)(GLbitfield))IntGetProcAddress("glMemoryBarrierByRegion"); - if(!_ptrc_glMemoryBarrierByRegion) numFailed++; - _ptrc_glNamedBufferData = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizeiptr, const void *, GLenum))IntGetProcAddress("glNamedBufferData"); - if(!_ptrc_glNamedBufferData) numFailed++; - _ptrc_glNamedBufferStorage = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizeiptr, const void *, GLbitfield))IntGetProcAddress("glNamedBufferStorage"); - if(!_ptrc_glNamedBufferStorage) numFailed++; - _ptrc_glNamedBufferSubData = (void (CODEGEN_FUNCPTR *)(GLuint, GLintptr, GLsizeiptr, const void *))IntGetProcAddress("glNamedBufferSubData"); - if(!_ptrc_glNamedBufferSubData) numFailed++; - _ptrc_glNamedFramebufferDrawBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glNamedFramebufferDrawBuffer"); - if(!_ptrc_glNamedFramebufferDrawBuffer) numFailed++; - _ptrc_glNamedFramebufferDrawBuffers = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, const GLenum *))IntGetProcAddress("glNamedFramebufferDrawBuffers"); - if(!_ptrc_glNamedFramebufferDrawBuffers) numFailed++; - _ptrc_glNamedFramebufferParameteri = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint))IntGetProcAddress("glNamedFramebufferParameteri"); - if(!_ptrc_glNamedFramebufferParameteri) numFailed++; - _ptrc_glNamedFramebufferReadBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum))IntGetProcAddress("glNamedFramebufferReadBuffer"); - if(!_ptrc_glNamedFramebufferReadBuffer) numFailed++; - _ptrc_glNamedFramebufferRenderbuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLenum, GLuint))IntGetProcAddress("glNamedFramebufferRenderbuffer"); - if(!_ptrc_glNamedFramebufferRenderbuffer) numFailed++; - _ptrc_glNamedFramebufferTexture = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLint))IntGetProcAddress("glNamedFramebufferTexture"); - if(!_ptrc_glNamedFramebufferTexture) numFailed++; - _ptrc_glNamedFramebufferTextureLayer = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLint, GLint))IntGetProcAddress("glNamedFramebufferTextureLayer"); - if(!_ptrc_glNamedFramebufferTextureLayer) numFailed++; - _ptrc_glNamedRenderbufferStorage = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLsizei, GLsizei))IntGetProcAddress("glNamedRenderbufferStorage"); - if(!_ptrc_glNamedRenderbufferStorage) numFailed++; - _ptrc_glNamedRenderbufferStorageMultisample = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei, GLsizei))IntGetProcAddress("glNamedRenderbufferStorageMultisample"); - if(!_ptrc_glNamedRenderbufferStorageMultisample) numFailed++; - _ptrc_glReadnPixels = (void (CODEGEN_FUNCPTR *)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *))IntGetProcAddress("glReadnPixels"); - if(!_ptrc_glReadnPixels) numFailed++; - _ptrc_glTextureBarrier = (void (CODEGEN_FUNCPTR *)(void))IntGetProcAddress("glTextureBarrier"); - if(!_ptrc_glTextureBarrier) numFailed++; - _ptrc_glTextureBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint))IntGetProcAddress("glTextureBuffer"); - if(!_ptrc_glTextureBuffer) numFailed++; - _ptrc_glTextureBufferRange = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glTextureBufferRange"); - if(!_ptrc_glTextureBufferRange) numFailed++; - _ptrc_glTextureParameterIiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLint *))IntGetProcAddress("glTextureParameterIiv"); - if(!_ptrc_glTextureParameterIiv) numFailed++; - _ptrc_glTextureParameterIuiv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLuint *))IntGetProcAddress("glTextureParameterIuiv"); - if(!_ptrc_glTextureParameterIuiv) numFailed++; - _ptrc_glTextureParameterf = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLfloat))IntGetProcAddress("glTextureParameterf"); - if(!_ptrc_glTextureParameterf) numFailed++; - _ptrc_glTextureParameterfv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLfloat *))IntGetProcAddress("glTextureParameterfv"); - if(!_ptrc_glTextureParameterfv) numFailed++; - _ptrc_glTextureParameteri = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, GLint))IntGetProcAddress("glTextureParameteri"); - if(!_ptrc_glTextureParameteri) numFailed++; - _ptrc_glTextureParameteriv = (void (CODEGEN_FUNCPTR *)(GLuint, GLenum, const GLint *))IntGetProcAddress("glTextureParameteriv"); - if(!_ptrc_glTextureParameteriv) numFailed++; - _ptrc_glTextureStorage1D = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei))IntGetProcAddress("glTextureStorage1D"); - if(!_ptrc_glTextureStorage1D) numFailed++; - _ptrc_glTextureStorage2D = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei, GLsizei))IntGetProcAddress("glTextureStorage2D"); - if(!_ptrc_glTextureStorage2D) numFailed++; - _ptrc_glTextureStorage2DMultisample = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTextureStorage2DMultisample"); - if(!_ptrc_glTextureStorage2DMultisample) numFailed++; - _ptrc_glTextureStorage3D = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei))IntGetProcAddress("glTextureStorage3D"); - if(!_ptrc_glTextureStorage3D) numFailed++; - _ptrc_glTextureStorage3DMultisample = (void (CODEGEN_FUNCPTR *)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean))IntGetProcAddress("glTextureStorage3DMultisample"); - if(!_ptrc_glTextureStorage3DMultisample) numFailed++; - _ptrc_glTextureSubImage1D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTextureSubImage1D"); - if(!_ptrc_glTextureSubImage1D) numFailed++; - _ptrc_glTextureSubImage2D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTextureSubImage2D"); - if(!_ptrc_glTextureSubImage2D) numFailed++; - _ptrc_glTextureSubImage3D = (void (CODEGEN_FUNCPTR *)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *))IntGetProcAddress("glTextureSubImage3D"); - if(!_ptrc_glTextureSubImage3D) numFailed++; - _ptrc_glTransformFeedbackBufferBase = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glTransformFeedbackBufferBase"); - if(!_ptrc_glTransformFeedbackBufferBase) numFailed++; - _ptrc_glTransformFeedbackBufferRange = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, GLintptr, GLsizeiptr))IntGetProcAddress("glTransformFeedbackBufferRange"); - if(!_ptrc_glTransformFeedbackBufferRange) numFailed++; - _ptrc_glUnmapNamedBuffer = (GLboolean (CODEGEN_FUNCPTR *)(GLuint))IntGetProcAddress("glUnmapNamedBuffer"); - if(!_ptrc_glUnmapNamedBuffer) numFailed++; - _ptrc_glVertexArrayAttribBinding = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glVertexArrayAttribBinding"); - if(!_ptrc_glVertexArrayAttribBinding) numFailed++; - _ptrc_glVertexArrayAttribFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint))IntGetProcAddress("glVertexArrayAttribFormat"); - if(!_ptrc_glVertexArrayAttribFormat) numFailed++; - _ptrc_glVertexArrayAttribIFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLint, GLenum, GLuint))IntGetProcAddress("glVertexArrayAttribIFormat"); - if(!_ptrc_glVertexArrayAttribIFormat) numFailed++; - _ptrc_glVertexArrayAttribLFormat = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLint, GLenum, GLuint))IntGetProcAddress("glVertexArrayAttribLFormat"); - if(!_ptrc_glVertexArrayAttribLFormat) numFailed++; - _ptrc_glVertexArrayBindingDivisor = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint))IntGetProcAddress("glVertexArrayBindingDivisor"); - if(!_ptrc_glVertexArrayBindingDivisor) numFailed++; - _ptrc_glVertexArrayElementBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint))IntGetProcAddress("glVertexArrayElementBuffer"); - if(!_ptrc_glVertexArrayElementBuffer) numFailed++; - _ptrc_glVertexArrayVertexBuffer = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLuint, GLintptr, GLsizei))IntGetProcAddress("glVertexArrayVertexBuffer"); - if(!_ptrc_glVertexArrayVertexBuffer) numFailed++; - _ptrc_glVertexArrayVertexBuffers = (void (CODEGEN_FUNCPTR *)(GLuint, GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizei *))IntGetProcAddress("glVertexArrayVertexBuffers"); - if(!_ptrc_glVertexArrayVertexBuffers) numFailed++; - return numFailed; -} - -typedef int (*PFN_LOADFUNCPOINTERS)(void); -typedef struct ogl_StrToExtMap_s -{ - char *extensionName; - int *extensionVariable; - PFN_LOADFUNCPOINTERS LoadExtension; -} ogl_StrToExtMap; - -static ogl_StrToExtMap ExtensionMap[10] = { - {"GL_ARB_buffer_storage", &ogl_ext_ARB_buffer_storage, Load_ARB_buffer_storage}, - {"GL_ARB_shader_storage_buffer_object", &ogl_ext_ARB_shader_storage_buffer_object, Load_ARB_shader_storage_buffer_object}, - {"GL_ARB_texture_compression", &ogl_ext_ARB_texture_compression, Load_ARB_texture_compression}, - {"GL_ARB_texture_rectangle", &ogl_ext_ARB_texture_rectangle, NULL}, - {"GL_EXT_framebuffer_object", &ogl_ext_EXT_framebuffer_object, Load_EXT_framebuffer_object}, - {"GL_EXT_texture_compression_s3tc", &ogl_ext_EXT_texture_compression_s3tc, NULL}, - {"GL_EXT_texture_filter_anisotropic", &ogl_ext_EXT_texture_filter_anisotropic, NULL}, - {"GL_EXT_texture_sRGB", &ogl_ext_EXT_texture_sRGB, NULL}, - {"GL_KHR_debug", &ogl_ext_KHR_debug, Load_KHR_debug}, - {"GL_ARB_invalidate_subdata", &ogl_ext_ARB_invalidate_subdata, Load_ARB_invalidate_subdata}, -}; - -static int g_extensionMapSize = 10; - -static ogl_StrToExtMap *FindExtEntry(const char *extensionName) -{ - int loop; - ogl_StrToExtMap *currLoc = ExtensionMap; - for(loop = 0; loop < g_extensionMapSize; ++loop, ++currLoc) - { - if(strcmp(extensionName, currLoc->extensionName) == 0) - return currLoc; - } - - return NULL; -} - -static void ClearExtensionVars(void) -{ - ogl_ext_ARB_buffer_storage = ogl_LOAD_FAILED; - ogl_ext_ARB_shader_storage_buffer_object = ogl_LOAD_FAILED; - ogl_ext_ARB_texture_compression = ogl_LOAD_FAILED; - ogl_ext_ARB_texture_rectangle = ogl_LOAD_FAILED; - ogl_ext_EXT_framebuffer_object = ogl_LOAD_FAILED; - ogl_ext_EXT_texture_compression_s3tc = ogl_LOAD_FAILED; - ogl_ext_EXT_texture_filter_anisotropic = ogl_LOAD_FAILED; - ogl_ext_EXT_texture_sRGB = ogl_LOAD_FAILED; - ogl_ext_KHR_debug = ogl_LOAD_FAILED; - ogl_ext_ARB_invalidate_subdata = ogl_LOAD_FAILED; -} - - -static void LoadExtByName(const char *extensionName) -{ - ogl_StrToExtMap *entry = NULL; - entry = FindExtEntry(extensionName); - if(entry) - { - if(entry->LoadExtension) - { - int numFailed = entry->LoadExtension(); - if(numFailed == 0) - { - *(entry->extensionVariable) = ogl_LOAD_SUCCEEDED; - } - else - { - *(entry->extensionVariable) = ogl_LOAD_SUCCEEDED + numFailed; - } - } - else - { - *(entry->extensionVariable) = ogl_LOAD_SUCCEEDED; - } - } -} - -/* BEGINNING OF MANUAL CHANGES, DO NOT REMOVE! */ - -static void ProcExtsFromExtString(const char *strExtList) -{ - size_t iExtListLen = strlen(strExtList); - const char *strExtListEnd = strExtList + iExtListLen; - const char *strCurrPos = strExtList; - char strWorkBuff[256]; - - while (*strCurrPos) - { - /*Get the extension at our position.*/ - int iStrLen = 0; - const char *strEndStr = strchr(strCurrPos, ' '); - int iStop = 0; - if (strEndStr == NULL) - { - strEndStr = strExtListEnd; - iStop = 1; - } - - iStrLen = (int)((ptrdiff_t)strEndStr - (ptrdiff_t)strCurrPos); - - if (iStrLen > 255) - return; - - strncpy(strWorkBuff, strCurrPos, iStrLen); - strWorkBuff[iStrLen] = '\0'; - - LoadExtByName(strWorkBuff); - - strCurrPos = strEndStr + 1; - if (iStop) break; - } -} - -static int ProcExtsFromExtList(void) -{ - GLint iLoop; - GLint iNumExtensions = 0; - - if (_ptrc_glGetStringi == NULL) return 0; - - _ptrc_glGetIntegerv(GL_NUM_EXTENSIONS, &iNumExtensions); - - for(iLoop = 0; iLoop < iNumExtensions; iLoop++) - { - const char *strExtensionName = (const char *)_ptrc_glGetStringi(GL_EXTENSIONS, iLoop); - LoadExtByName(strExtensionName); - } - - return iNumExtensions; -} - -int ogl_LoadFunctions() -{ - int numFailed = 0; - ClearExtensionVars(); - - _ptrc_glGetIntegerv = (void (CODEGEN_FUNCPTR *)(GLenum, GLint *))IntGetProcAddress("glGetIntegerv"); - if(!_ptrc_glGetIntegerv) return ogl_LOAD_FAILED; - _ptrc_glGetStringi = (const GLubyte * (CODEGEN_FUNCPTR *)(GLenum, GLuint))IntGetProcAddress("glGetStringi"); - - if (0 == ProcExtsFromExtList()) - { - _ptrc_glGetString = (const GLubyte * (CODEGEN_FUNCPTR *)(GLenum))IntGetProcAddress("glGetString"); - if (!_ptrc_glGetString) return ogl_LOAD_FAILED; - - ProcExtsFromExtString((const char *)_ptrc_glGetString(GL_EXTENSIONS)); - } - - numFailed = Load_Version_4_5(); - - if(numFailed == 0) - return ogl_LOAD_SUCCEEDED; - else - return ogl_LOAD_SUCCEEDED + numFailed; -} - -/* END OF MANUAL CHANGES, DO NOT REMOVE! */ - -static int g_major_version = 0; -static int g_minor_version = 0; - -static void GetGLVersion(void) -{ - glGetIntegerv(GL_MAJOR_VERSION, &g_major_version); - glGetIntegerv(GL_MINOR_VERSION, &g_minor_version); -} - -int ogl_GetMajorVersion(void) -{ - if(g_major_version == 0) - GetGLVersion(); - return g_major_version; -} - -int ogl_GetMinorVersion(void) -{ - if(g_major_version == 0) /*Yes, check the major version to get the minor one.*/ - GetGLVersion(); - return g_minor_version; -} - -int ogl_IsVersionGEQ(int majorVersion, int minorVersion) -{ - if(g_major_version == 0) - GetGLVersion(); - - if(majorVersion < g_major_version) return 1; - if(majorVersion > g_major_version) return 0; - if(minorVersion <= g_minor_version) return 1; - return 0; -} - diff --git a/src/common/rendering/gl_load/gl_load.h b/src/common/rendering/gl_load/gl_load.h deleted file mode 100644 index 4748d6816..000000000 --- a/src/common/rendering/gl_load/gl_load.h +++ /dev/null @@ -1,4223 +0,0 @@ -#ifndef POINTER_C_GENERATED_HEADER_OPENGL_H -#define POINTER_C_GENERATED_HEADER_OPENGL_H - -#if defined(__glew_h__) || defined(__GLEW_H__) -#error Attempt to include auto-generated header after including glew.h -#endif -#if defined(__gl_h_) || defined(__GL_H__) -#error Attempt to include auto-generated header after including gl.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error Attempt to include auto-generated header after including glext.h -#endif -#if defined(__gltypes_h_) -#error Attempt to include auto-generated header after gltypes.h -#endif -#if defined(__gl_ATI_h_) -#error Attempt to include auto-generated header after including glATI.h -#endif - -#define __glew_h__ -#define __GLEW_H__ -#define __gl_h_ -#define __GL_H__ -#define __glext_h_ -#define __GLEXT_H_ -#define __gltypes_h_ -#define __gl_ATI_h_ - -/* BEGINNING OF MANUAL CHANGES, DO NOT REMOVE! */ -#ifndef APIENTRY - #if defined(_WIN32) - //#include - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif -#endif /*APIENTRY*/ - -#ifndef CODEGEN_FUNCPTR - #define CODEGEN_REMOVE_FUNCPTR - #if defined(_WIN32) - #define CODEGEN_FUNCPTR __stdcall - #else - #define CODEGEN_FUNCPTR - #endif -#endif /*CODEGEN_FUNCPTR*/ - -#ifndef GLAPI - #define GLAPI extern -#endif -/* END OF MANUAL CHANGES, DO NOT REMOVE! */ - - -#ifndef GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS -#define GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS - - -#endif /*GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS*/ - - -#include -#include - - typedef unsigned int GLenum; - typedef unsigned char GLboolean; - typedef unsigned int GLbitfield; - typedef void GLvoid; - typedef signed char GLbyte; - typedef short GLshort; - typedef int GLint; - typedef unsigned char GLubyte; - typedef unsigned short GLushort; - typedef unsigned int GLuint; - typedef int GLsizei; - typedef float GLfloat; - typedef float GLclampf; - typedef double GLdouble; - typedef double GLclampd; - typedef char GLchar; - typedef char GLcharARB; - #ifdef __APPLE__ -typedef void *GLhandleARB; -#else -typedef unsigned int GLhandleARB; -#endif - typedef unsigned short GLhalfARB; - typedef unsigned short GLhalf; - typedef GLint GLfixed; - typedef ptrdiff_t GLintptr; - typedef ptrdiff_t GLsizeiptr; - typedef int64_t GLint64; - typedef uint64_t GLuint64; - typedef ptrdiff_t GLintptrARB; - typedef ptrdiff_t GLsizeiptrARB; - typedef int64_t GLint64EXT; - typedef uint64_t GLuint64EXT; - typedef struct __GLsync *GLsync; - struct _cl_context; - struct _cl_event; - typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); - typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); - typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); - typedef unsigned short GLhalfNV; - typedef GLintptr GLvdpauSurfaceNV; - -#ifdef __cplusplus -extern "C" { -#endif /*__cplusplus*/ - -extern int ogl_ext_ARB_buffer_storage; -extern int ogl_ext_ARB_shader_storage_buffer_object; -extern int ogl_ext_ARB_texture_compression; -extern int ogl_ext_ARB_texture_rectangle; -extern int ogl_ext_EXT_framebuffer_object; -extern int ogl_ext_EXT_texture_compression_s3tc; -extern int ogl_ext_EXT_texture_filter_anisotropic; -extern int ogl_ext_EXT_texture_sRGB; -extern int ogl_ext_KHR_debug; -extern int ogl_ext_ARB_invalidate_subdata; - -#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F -#define GL_BUFFER_STORAGE_FLAGS 0x8220 -#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 -#define GL_CLIENT_STORAGE_BIT 0x0200 -#define GL_DYNAMIC_STORAGE_BIT 0x0100 -#define GL_MAP_COHERENT_BIT 0x0080 -#define GL_MAP_PERSISTENT_BIT 0x0040 -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 - -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 -#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 -#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC -#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB -#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA -#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 -#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE -#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD -#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 -#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 -#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 -#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 -#define GL_SHADER_STORAGE_BUFFER 0x90D2 -#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 -#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF -#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 -#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 - -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF - -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 - -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#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_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_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 - -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 - -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE - -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#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 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB_EXT 0x8C40 - -#define GL_BUFFER 0x82E0 -#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 -#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 -#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D -#define GL_DEBUG_LOGGED_MESSAGES 0x9145 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 -#define GL_DEBUG_OUTPUT 0x92E0 -#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 -#define GL_DEBUG_SEVERITY_HIGH 0x9146 -#define GL_DEBUG_SEVERITY_LOW 0x9148 -#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 -#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B -#define GL_DEBUG_SOURCE_API 0x8246 -#define GL_DEBUG_SOURCE_APPLICATION 0x824A -#define GL_DEBUG_SOURCE_OTHER 0x824B -#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D -#define GL_DEBUG_TYPE_ERROR 0x824C -#define GL_DEBUG_TYPE_MARKER 0x8268 -#define GL_DEBUG_TYPE_OTHER 0x8251 -#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 -#define GL_DEBUG_TYPE_POP_GROUP 0x826A -#define GL_DEBUG_TYPE_PORTABILITY 0x824F -#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E -#define GL_DISPLAY_LIST 0x82E7 -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C -#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 -#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 -#define GL_MAX_LABEL_LENGTH 0x82E8 -#define GL_PROGRAM 0x82E2 -#define GL_PROGRAM_PIPELINE 0x82E4 -#define GL_QUERY 0x82E3 -#define GL_SAMPLER 0x82E6 -#define GL_SHADER 0x82E1 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_VERTEX_ARRAY 0x8074 - -#define GL_2D 0x0600 -#define GL_2_BYTES 0x1407 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_3_BYTES 0x1408 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_4_BYTES 0x1409 -#define GL_ACCUM 0x0100 -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ADD 0x0104 -#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF -#define GL_ALPHA 0x1906 -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_ALPHA_BITS 0x0D55 -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_ALWAYS 0x0207 -#define GL_AMBIENT 0x1200 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_AND 0x1501 -#define GL_AND_INVERTED 0x1504 -#define GL_AND_REVERSE 0x1502 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_AUX_BUFFERS 0x0C00 -#define GL_BACK 0x0405 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_BITMAP 0x1A00 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_BLEND 0x0BE2 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLUE 0x1905 -#define GL_BLUE_BIAS 0x0D1B -#define GL_BLUE_BITS 0x0D54 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BYTE 0x1400 -#define GL_C3F_V3F 0x2A24 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_CCW 0x0901 -#define GL_CLAMP 0x2900 -#define GL_CLEAR 0x1500 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#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 -#define GL_COEFF 0x0A00 -#define GL_COLOR 0x1800 -#define GL_COLOR_ARRAY 0x8076 -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_INDEX 0x1900 -#define GL_COLOR_INDEXES 0x1603 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_COPY 0x1503 -#define GL_COPY_INVERTED 0x150C -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_CURRENT_BIT 0x00000001 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#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_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CW 0x0900 -#define GL_DECAL 0x2101 -#define GL_DECR 0x1E03 -#define GL_DEPTH 0x1801 -#define GL_DEPTH_BIAS 0x0D1F -#define GL_DEPTH_BITS 0x0D56 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DIFFUSE 0x1201 -#define GL_DITHER 0x0BD0 -#define GL_DOMAIN 0x0A02 -#define GL_DONT_CARE 0x1100 -#define GL_DOUBLE 0x140A -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_DST_ALPHA 0x0304 -#define GL_DST_COLOR 0x0306 -#define GL_EDGE_FLAG 0x0B43 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_EMISSION 0x1600 -#define GL_ENABLE_BIT 0x00002000 -#define GL_EQUAL 0x0202 -#define GL_EQUIV 0x1509 -#define GL_EVAL_BIT 0x00010000 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_EXTENSIONS 0x1F03 -#define GL_EYE_LINEAR 0x2400 -#define GL_EYE_PLANE 0x2502 -#define GL_FALSE 0 -#define GL_FASTEST 0x1101 -#define GL_FEEDBACK 0x1C01 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_FILL 0x1B02 -#define GL_FLAT 0x1D00 -#define GL_FLOAT 0x1406 -#define GL_FOG 0x0B60 -#define GL_FOG_BIT 0x00000080 -#define GL_FOG_COLOR 0x0B66 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_END 0x0B64 -#define GL_FOG_HINT 0x0C54 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_START 0x0B63 -#define GL_FRONT 0x0404 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_FRONT_FACE 0x0B46 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_GEQUAL 0x0206 -#define GL_GREATER 0x0204 -#define GL_GREEN 0x1904 -#define GL_GREEN_BIAS 0x0D19 -#define GL_GREEN_BITS 0x0D53 -#define GL_GREEN_SCALE 0x0D18 -#define GL_HINT_BIT 0x00008000 -#define GL_INCR 0x1E02 -#define GL_INDEX_ARRAY 0x8077 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_BITS 0x0D51 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_INDEX_MODE 0x0C30 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_INT 0x1404 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_OPERATION 0x0502 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVERT 0x150A -#define GL_KEEP 0x1E00 -#define GL_LEFT 0x0406 -#define GL_LEQUAL 0x0203 -#define GL_LESS 0x0201 -#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_LIGHTING 0x0B50 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LINE 0x1B01 -#define GL_LINEAR 0x2601 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINES 0x0001 -#define GL_LINE_BIT 0x00000004 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LINE_STRIP 0x0003 -#define GL_LINE_TOKEN 0x0702 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_BIT 0x00020000 -#define GL_LIST_INDEX 0x0B33 -#define GL_LIST_MODE 0x0B30 -#define GL_LOAD 0x0101 -#define GL_LOGIC_OP 0x0BF1 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#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_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#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_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MODELVIEW 0x1700 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_MODULATE 0x2100 -#define GL_MULT 0x0103 -#define GL_N3F_V3F 0x2A25 -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_NAND 0x150E -#define GL_NEAREST 0x2600 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEVER 0x0200 -#define GL_NICEST 0x1102 -#define GL_NONE 0 -#define GL_NOOP 0x1505 -#define GL_NOR 0x1508 -#define GL_NORMALIZE 0x0BA1 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NOTEQUAL 0x0205 -#define GL_NO_ERROR 0 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_OBJECT_PLANE 0x2501 -#define GL_ONE 1 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_OR 0x1507 -#define GL_ORDER 0x0A01 -#define GL_OR_INVERTED 0x150D -#define GL_OR_REVERSE 0x150B -#define GL_OUT_OF_MEMORY 0x0505 -#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_PASS_THROUGH_TOKEN 0x0700 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_POINT 0x1B00 -#define GL_POINTS 0x0000 -#define GL_POINT_BIT 0x00000002 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_POINT_TOKEN 0x0701 -#define GL_POLYGON 0x0009 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_POSITION 0x1203 -#define GL_PROJECTION 0x1701 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_Q 0x2003 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_R 0x2002 -#define GL_R3_G3_B2 0x2A10 -#define GL_READ_BUFFER 0x0C02 -#define GL_RED 0x1903 -#define GL_RED_BIAS 0x0D15 -#define GL_RED_BITS 0x0D52 -#define GL_RED_SCALE 0x0D14 -#define GL_RENDER 0x1C00 -#define GL_RENDERER 0x1F01 -#define GL_RENDER_MODE 0x0C40 -#define GL_REPEAT 0x2901 -#define GL_REPLACE 0x1E01 -#define GL_RETURN 0x0102 -#define GL_RGB 0x1907 -#define GL_RGB10 0x8052 -#define GL_RGB10_A2 0x8059 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB5_A1 0x8057 -#define GL_RGB8 0x8051 -#define GL_RGBA 0x1908 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGBA8 0x8058 -#define GL_RGBA_MODE 0x0C31 -#define GL_RIGHT 0x0407 -#define GL_S 0x2000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_SELECT 0x1C02 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -#define GL_SET 0x150F -#define GL_SHADE_MODEL 0x0B54 -#define GL_SHININESS 0x1601 -#define GL_SHORT 0x1402 -#define GL_SMOOTH 0x1D01 -#define GL_SPECULAR 0x1202 -#define GL_SPHERE_MAP 0x2402 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SRC_ALPHA 0x0302 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_SRC_COLOR 0x0300 -/*Copied GL_STACK_OVERFLOW From: KHR_debug*/ -/*Copied GL_STACK_UNDERFLOW From: KHR_debug*/ -#define GL_STENCIL 0x1802 -#define GL_STENCIL_BITS 0x0D57 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_INDEX 0x1901 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STEREO 0x0C33 -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_T 0x2001 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_C4F_N3F_V4F 0x2A2D -#define GL_T4F_V4F 0x2A28 -#define GL_TEXTURE 0x1702 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_BORDER 0x1005 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_COMPONENTS 0x1003 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_ENV 0x2300 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRUE 1 -#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_UNSIGNED_BYTE 0x1401 -#define GL_UNSIGNED_INT 0x1405 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_VENDOR 0x1F00 -#define GL_VERSION 0x1F02 -/*Copied GL_VERTEX_ARRAY From: KHR_debug*/ -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VIEWPORT 0x0BA2 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_XOR 0x1506 -#define GL_ZERO 0 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 - -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_RESCALE_NORMAL 0x803A -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_TEXTURE_3D 0x806F -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#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_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 - -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_ADD_SIGNED 0x8574 -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_COMBINE 0x8570 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_CONSTANT 0x8576 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#define GL_INTERPOLATE 0x8575 -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_MULTISAMPLE 0x809D -#define GL_MULTISAMPLE_BIT 0x20000000 -#define GL_NORMAL_MAP 0x8511 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_OPERAND2_RGB 0x8592 -#define GL_PREVIOUS 0x8578 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_REFLECTION_MAP 0x8512 -#define GL_RGB_SCALE 0x8573 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_SOURCE2_RGB 0x8582 -#define GL_SUBTRACT 0x84E7 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#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_TEXTURE2 0x84C2 -#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_TEXTURE3 0x84C3 -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#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_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 - -#define GL_BLEND_COLOR 0x8005 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_COLOR_SUM 0x8458 -#define GL_COMPARE_R_TO_TEXTURE 0x884E -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_CONSTANT_COLOR 0x8001 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_DECR_WRAP 0x8508 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_FOG_COORDINATE 0x8451 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_FUNC_SUBTRACT 0x800A -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_INCR_WRAP 0x8507 -#define GL_MAX 0x8008 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_MIN 0x8007 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 - -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_CURRENT_FOG_COORD 0x8453 -#define GL_CURRENT_QUERY 0x8865 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_FOG_COORD 0x8451 -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_FOG_COORD_ARRAY 0x8457 -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D -#define GL_FOG_COORD_ARRAY_POINTER 0x8456 -#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORD_ARRAY_TYPE 0x8454 -#define GL_FOG_COORD_SRC 0x8450 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_READ_ONLY 0x88B8 -#define GL_READ_WRITE 0x88BA -#define GL_SAMPLES_PASSED 0x8914 -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_SRC0_ALPHA 0x8588 -#define GL_SRC0_RGB 0x8580 -#define GL_SRC1_ALPHA 0x8589 -#define GL_SRC1_RGB 0x8581 -#define GL_SRC2_ALPHA 0x858A -#define GL_SRC2_RGB 0x8582 -#define GL_STATIC_COPY 0x88E6 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STREAM_COPY 0x88E2 -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_WRITE_ONLY 0x88B9 - -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_COORD_REPLACE 0x8862 -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_DELETE_STATUS 0x8B80 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#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_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_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_LINK_STATUS 0x8B82 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_POINT_SPRITE 0x8861 -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_TYPE 0x8B4F -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_FUNC 0x8800 -#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_UPPER_LEFT 0x8CA2 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_SHADER 0x8B31 - -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#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_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SRGB_ALPHA 0x8C42 - -#define GL_ALPHA_INTEGER 0x8D97 -#define GL_BGRA_INTEGER 0x8D9B -#define GL_BGR_INTEGER 0x8D9A -#define GL_BLUE_INTEGER 0x8D96 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_CLAMP_VERTEX_COLOR 0x891A -#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_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#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_ATTACHMENT2 0x8CE2 -#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_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT30 0x8CFE -#define GL_COLOR_ATTACHMENT31 0x8CFF -#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_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_RG 0x8226 -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE -#define GL_CONTEXT_FLAGS 0x821E -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FIXED_ONLY 0x891D -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_FRAMEBUFFER 0x8D40 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_SRGB 0x8DB9 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_GREEN_INTEGER 0x8D95 -#define GL_HALF_FLOAT 0x140B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_MAJOR_VERSION 0x821B -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -/*Copied GL_MAP_READ_BIT From: ARB_buffer_storage*/ -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -/*Copied GL_MAP_WRITE_BIT From: ARB_buffer_storage*/ -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MAX_CLIP_DISTANCES 0x0D32 -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_MINOR_VERSION 0x821C -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_NUM_EXTENSIONS 0x821D -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_WAIT 0x8E13 -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_R16 0x822A -#define GL_R16F 0x822D -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32F 0x822E -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_R8 0x8229 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RED_INTEGER 0x8D94 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RG 0x8227 -#define GL_RG16 0x822C -#define GL_RG16F 0x822F -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32F 0x8230 -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_RG8 0x822B -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RGB16F 0x881B -#define GL_RGB16I 0x8D89 -#define GL_RGB16UI 0x8D77 -#define GL_RGB32F 0x8815 -#define GL_RGB32I 0x8D83 -#define GL_RGB32UI 0x8D71 -#define GL_RGB8I 0x8D8F -#define GL_RGB8UI 0x8D7D -#define GL_RGB9_E5 0x8C3D -#define GL_RGBA16F 0x881A -#define GL_RGBA16I 0x8D88 -#define GL_RGBA16UI 0x8D76 -#define GL_RGBA32F 0x8814 -#define GL_RGBA32I 0x8D82 -#define GL_RGBA32UI 0x8D70 -#define GL_RGBA8I 0x8D8E -#define GL_RGBA8UI 0x8D7C -#define GL_RGBA_INTEGER 0x8D99 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RG_INTEGER 0x8228 -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD - -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_INVALID_INDEX 0xFFFFFFFF -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_R16_SNORM 0x8F98 -#define GL_R8_SNORM 0x8F94 -#define GL_RG16_SNORM 0x8F99 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA16_SNORM 0x8F9B -#define GL_RGBA8_SNORM 0x8F97 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 - -#define GL_ALREADY_SIGNALED 0x911A -#define GL_CONDITION_SATISFIED 0x911C -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_PROFILE_MASK 0x9126 -#define GL_DEPTH_CLAMP 0x864F -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_INTEGER_SAMPLES 0x9110 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_OBJECT_TYPE 0x9112 -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_PROVOKING_VERTEX 0x8E4F -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SIGNALED 0x9119 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_SYNC_STATUS 0x9114 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_UNSIGNALED 0x9118 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_WAIT_FAILED 0x911D - -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_INT_2_10_10_10_REV 0x8D9F -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_RGB10_A2UI 0x906F -#define GL_SAMPLER_BINDING 0x8919 -#define GL_SRC1_COLOR 0x88F9 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_TIMESTAMP 0x8E28 -#define GL_TIME_ELAPSED 0x88BF -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE - -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT2x3 0x8F49 -#define GL_DOUBLE_MAT2x4 0x8F4A -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT3x2 0x8F4B -#define GL_DOUBLE_MAT3x4 0x8F4C -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_MAT4x2 0x8F4D -#define GL_DOUBLE_MAT4x3 0x8F4E -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_ISOLINES 0x8E7A -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_MAX_VERTEX_STREAMS 0x8E71 -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_PATCHES 0x000E -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_PATCH_VERTICES 0x8E72 -#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_SAMPLE_SHADING 0x8C36 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F - -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_ALL_SHADER_BITS 0xFFFFFFFF -#define GL_FIXED 0x140C -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_HIGH_INT 0x8DF5 -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_LOW_FLOAT 0x8DF0 -#define GL_LOW_INT 0x8DF3 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VIEWPORTS 0x825B -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_RGB565 0x8D62 -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_UNDEFINED_VERTEX 0x8260 -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C - -#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 -#define GL_ALL_BARRIER_BITS 0xFFFFFFFF -#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 -#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 -#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 -#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 -#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 -#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA -#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_VERTEX_SHADER 0x92C7 -#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 -#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 -#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 -#define GL_COMMAND_BARRIER_BIT 0x00000040 -#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D -#define GL_COPY_READ_BUFFER_BINDING 0x8F36 -#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 -#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 -#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 -#define GL_IMAGE_1D 0x904C -#define GL_IMAGE_1D_ARRAY 0x9052 -#define GL_IMAGE_2D 0x904D -#define GL_IMAGE_2D_ARRAY 0x9053 -#define GL_IMAGE_2D_MULTISAMPLE 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 -#define GL_IMAGE_2D_RECT 0x904F -#define GL_IMAGE_3D 0x904E -#define GL_IMAGE_BINDING_ACCESS 0x8F3E -#define GL_IMAGE_BINDING_FORMAT 0x906E -#define GL_IMAGE_BINDING_LAYER 0x8F3D -#define GL_IMAGE_BINDING_LAYERED 0x8F3C -#define GL_IMAGE_BINDING_LEVEL 0x8F3B -#define GL_IMAGE_BINDING_NAME 0x8F3A -#define GL_IMAGE_BUFFER 0x9051 -#define GL_IMAGE_CUBE 0x9050 -#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 -#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 -#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 -#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 -#define GL_INT_IMAGE_1D 0x9057 -#define GL_INT_IMAGE_1D_ARRAY 0x905D -#define GL_INT_IMAGE_2D 0x9058 -#define GL_INT_IMAGE_2D_ARRAY 0x905E -#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 -#define GL_INT_IMAGE_2D_RECT 0x905A -#define GL_INT_IMAGE_3D 0x9059 -#define GL_INT_IMAGE_BUFFER 0x905C -#define GL_INT_IMAGE_CUBE 0x905B -#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F -#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC -#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 -#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 -#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 -#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF -/*Copied GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 -#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 -#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE -#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 -#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF -#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD -#define GL_MAX_IMAGE_SAMPLES 0x906D -#define GL_MAX_IMAGE_UNITS 0x8F38 -#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 -#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD -#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB -#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 -#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE -#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC -#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 -#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC -#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA -#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC -#define GL_NUM_SAMPLE_COUNTS 0x9380 -#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D -#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C -#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E -#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B -#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 -#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 -#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F -#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 -#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 -#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA -#define GL_UNIFORM_BARRIER_BIT 0x00000004 -#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 -#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 -#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A -#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 -#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB -#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 -#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 -#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C -#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 -#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 -#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 - -#define GL_ACTIVE_RESOURCES 0x92F5 -#define GL_ACTIVE_VARIABLES 0x9305 -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_ARRAY_SIZE 0x92FB -#define GL_ARRAY_STRIDE 0x92FE -#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED -#define GL_AUTO_GENERATE_MIPMAP 0x8295 -#define GL_BLOCK_INDEX 0x92FD -/*Copied GL_BUFFER From: KHR_debug*/ -#define GL_BUFFER_BINDING 0x9302 -#define GL_BUFFER_DATA_SIZE 0x9303 -#define GL_BUFFER_VARIABLE 0x92E5 -#define GL_CAVEAT_SUPPORT 0x82B8 -#define GL_CLEAR_BUFFER 0x82B4 -#define GL_COLOR_COMPONENTS 0x8283 -#define GL_COLOR_ENCODING 0x8296 -#define GL_COLOR_RENDERABLE 0x8286 -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPUTE_SHADER 0x91B9 -#define GL_COMPUTE_SHADER_BIT 0x00000020 -#define GL_COMPUTE_SUBROUTINE 0x92ED -#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 -#define GL_COMPUTE_TEXTURE 0x82A0 -#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 -/*Copied GL_CONTEXT_FLAG_DEBUG_BIT From: KHR_debug*/ -/*Copied GL_DEBUG_CALLBACK_FUNCTION From: KHR_debug*/ -/*Copied GL_DEBUG_CALLBACK_USER_PARAM From: KHR_debug*/ -/*Copied GL_DEBUG_GROUP_STACK_DEPTH From: KHR_debug*/ -/*Copied GL_DEBUG_LOGGED_MESSAGES From: KHR_debug*/ -/*Copied GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH From: KHR_debug*/ -/*Copied GL_DEBUG_OUTPUT From: KHR_debug*/ -/*Copied GL_DEBUG_OUTPUT_SYNCHRONOUS From: KHR_debug*/ -/*Copied GL_DEBUG_SEVERITY_HIGH From: KHR_debug*/ -/*Copied GL_DEBUG_SEVERITY_LOW From: KHR_debug*/ -/*Copied GL_DEBUG_SEVERITY_MEDIUM From: KHR_debug*/ -/*Copied GL_DEBUG_SEVERITY_NOTIFICATION From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_API From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_APPLICATION From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_OTHER From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_SHADER_COMPILER From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_THIRD_PARTY From: KHR_debug*/ -/*Copied GL_DEBUG_SOURCE_WINDOW_SYSTEM From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_ERROR From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_MARKER From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_OTHER From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_PERFORMANCE From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_POP_GROUP From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_PORTABILITY From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_PUSH_GROUP From: KHR_debug*/ -/*Copied GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR From: KHR_debug*/ -#define GL_DEPTH_COMPONENTS 0x8284 -#define GL_DEPTH_RENDERABLE 0x8287 -#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA -#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE -#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF -#define GL_FILTER 0x829A -#define GL_FRAGMENT_SUBROUTINE 0x92EC -#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 -#define GL_FRAGMENT_TEXTURE 0x829F -#define GL_FRAMEBUFFER_BLEND 0x828B -#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 -#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 -#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 -#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 -#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 -#define GL_FRAMEBUFFER_RENDERABLE 0x8289 -#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A -#define GL_FULL_SUPPORT 0x82B7 -#define GL_GEOMETRY_SUBROUTINE 0x92EB -#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 -#define GL_GEOMETRY_TEXTURE 0x829E -#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 -#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 -#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 -#define GL_IMAGE_CLASS_11_11_10 0x82C2 -#define GL_IMAGE_CLASS_1_X_16 0x82BE -#define GL_IMAGE_CLASS_1_X_32 0x82BB -#define GL_IMAGE_CLASS_1_X_8 0x82C1 -#define GL_IMAGE_CLASS_2_X_16 0x82BD -#define GL_IMAGE_CLASS_2_X_32 0x82BA -#define GL_IMAGE_CLASS_2_X_8 0x82C0 -#define GL_IMAGE_CLASS_4_X_16 0x82BC -#define GL_IMAGE_CLASS_4_X_32 0x82B9 -#define GL_IMAGE_CLASS_4_X_8 0x82BF -#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 -#define GL_IMAGE_PIXEL_FORMAT 0x82A9 -#define GL_IMAGE_PIXEL_TYPE 0x82AA -#define GL_IMAGE_TEXEL_SIZE 0x82A7 -#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 -#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B -#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 -#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A -#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 -#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C -#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 -#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 -#define GL_INTERNALFORMAT_PREFERRED 0x8270 -#define GL_INTERNALFORMAT_RED_SIZE 0x8271 -#define GL_INTERNALFORMAT_RED_TYPE 0x8278 -#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 -#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 -#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D -#define GL_INTERNALFORMAT_SUPPORTED 0x826F -#define GL_IS_PER_PATCH 0x92E7 -#define GL_IS_ROW_MAJOR 0x9300 -#define GL_LOCATION 0x930E -#define GL_LOCATION_INDEX 0x930F -#define GL_MANUAL_GENERATE_MIPMAP 0x8294 -#define GL_MATRIX_STRIDE 0x92FF -#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 -#define GL_MAX_COMBINED_DIMENSIONS 0x8282 -/*Copied GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES From: ARB_shader_storage_buffer_object*/ -/*Copied GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 -#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 -#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD -/*Copied GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 -#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC -#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB -#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 -#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE -#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB -#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF -/*Copied GL_MAX_DEBUG_GROUP_STACK_DEPTH From: KHR_debug*/ -/*Copied GL_MAX_DEBUG_LOGGED_MESSAGES From: KHR_debug*/ -/*Copied GL_MAX_DEBUG_MESSAGE_LENGTH From: KHR_debug*/ -#define GL_MAX_DEPTH 0x8280 -#define GL_MAX_ELEMENT_INDEX 0x8D6B -/*Copied GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 -#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 -#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 -#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 -/*Copied GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_HEIGHT 0x827F -/*Copied GL_MAX_LABEL_LENGTH From: KHR_debug*/ -#define GL_MAX_LAYERS 0x8281 -#define GL_MAX_NAME_LENGTH 0x92F6 -#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 -#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 -/*Copied GL_MAX_SHADER_STORAGE_BLOCK_SIZE From: ARB_shader_storage_buffer_object*/ -/*Copied GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS From: ARB_shader_storage_buffer_object*/ -/*Copied GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -/*Copied GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_UNIFORM_LOCATIONS 0x826E -#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA -#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 -/*Copied GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS From: ARB_shader_storage_buffer_object*/ -#define GL_MAX_WIDTH 0x827E -#define GL_MIPMAP 0x8293 -#define GL_NAME_LENGTH 0x92F9 -#define GL_NUM_ACTIVE_VARIABLES 0x9304 -#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 -#define GL_OFFSET 0x92FC -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -/*Copied GL_PROGRAM From: KHR_debug*/ -#define GL_PROGRAM_INPUT 0x92E3 -#define GL_PROGRAM_OUTPUT 0x92E4 -/*Copied GL_PROGRAM_PIPELINE From: KHR_debug*/ -/*Copied GL_QUERY From: KHR_debug*/ -#define GL_READ_PIXELS 0x828C -#define GL_READ_PIXELS_FORMAT 0x828D -#define GL_READ_PIXELS_TYPE 0x828E -#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B -#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A -#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 -#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 -#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 -#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 -/*Copied GL_SAMPLER From: KHR_debug*/ -/*Copied GL_SHADER From: KHR_debug*/ -#define GL_SHADER_IMAGE_ATOMIC 0x82A6 -#define GL_SHADER_IMAGE_LOAD 0x82A4 -#define GL_SHADER_IMAGE_STORE 0x82A5 -/*Copied GL_SHADER_STORAGE_BARRIER_BIT From: ARB_shader_storage_buffer_object*/ -#define GL_SHADER_STORAGE_BLOCK 0x92E6 -/*Copied GL_SHADER_STORAGE_BUFFER From: ARB_shader_storage_buffer_object*/ -/*Copied GL_SHADER_STORAGE_BUFFER_BINDING From: ARB_shader_storage_buffer_object*/ -/*Copied GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT From: ARB_shader_storage_buffer_object*/ -/*Copied GL_SHADER_STORAGE_BUFFER_SIZE From: ARB_shader_storage_buffer_object*/ -/*Copied GL_SHADER_STORAGE_BUFFER_START From: ARB_shader_storage_buffer_object*/ -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC -#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD -#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF -#define GL_SRGB_READ 0x8297 -#define GL_SRGB_WRITE 0x8298 -#define GL_STENCIL_COMPONENTS 0x8285 -#define GL_STENCIL_RENDERABLE 0x8288 -#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 -#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF -#define GL_TESS_CONTROL_TEXTURE 0x829C -#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA -#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 -#define GL_TESS_EVALUATION_TEXTURE 0x829D -#define GL_TEXTURE_BUFFER_OFFSET 0x919D -#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F -#define GL_TEXTURE_BUFFER_SIZE 0x919E -#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 -#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 -#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 -#define GL_TEXTURE_GATHER 0x82A2 -#define GL_TEXTURE_GATHER_SHADOW 0x82A3 -#define GL_TEXTURE_IMAGE_FORMAT 0x828F -#define GL_TEXTURE_IMAGE_TYPE 0x8290 -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF -#define GL_TEXTURE_SHADOW 0x82A1 -#define GL_TEXTURE_VIEW 0x82B5 -#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD -#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB -#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE -#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC -#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C -#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D -#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 -#define GL_TYPE 0x92FA -#define GL_UNIFORM 0x92E1 -#define GL_UNIFORM_BLOCK 0x92E2 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC -#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E -#define GL_VERTEX_ATTRIB_BINDING 0x82D4 -#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 -#define GL_VERTEX_BINDING_BUFFER 0x8F4F -#define GL_VERTEX_BINDING_DIVISOR 0x82D6 -#define GL_VERTEX_BINDING_OFFSET 0x82D7 -#define GL_VERTEX_BINDING_STRIDE 0x82D8 -#define GL_VERTEX_SUBROUTINE 0x92E8 -#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE -#define GL_VERTEX_TEXTURE 0x829B -#define GL_VIEW_CLASS_128_BITS 0x82C4 -#define GL_VIEW_CLASS_16_BITS 0x82CA -#define GL_VIEW_CLASS_24_BITS 0x82C9 -#define GL_VIEW_CLASS_32_BITS 0x82C8 -#define GL_VIEW_CLASS_48_BITS 0x82C7 -#define GL_VIEW_CLASS_64_BITS 0x82C6 -#define GL_VIEW_CLASS_8_BITS 0x82CB -#define GL_VIEW_CLASS_96_BITS 0x82C5 -#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 -#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 -#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 -#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 -#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_COMPATIBILITY_CLASS 0x82B6 - -/*Copied GL_BUFFER_IMMUTABLE_STORAGE From: ARB_buffer_storage*/ -/*Copied GL_BUFFER_STORAGE_FLAGS From: ARB_buffer_storage*/ -#define GL_CLEAR_TEXTURE 0x9365 -/*Copied GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT From: ARB_buffer_storage*/ -/*Copied GL_CLIENT_STORAGE_BIT From: ARB_buffer_storage*/ -/*Copied GL_DYNAMIC_STORAGE_BIT From: ARB_buffer_storage*/ -#define GL_LOCATION_COMPONENT 0x934A -/*Copied GL_MAP_COHERENT_BIT From: ARB_buffer_storage*/ -/*Copied GL_MAP_PERSISTENT_BIT From: ARB_buffer_storage*/ -#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 -#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 -#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 -#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_TEXTURE_BUFFER_BINDING 0x8C2A -#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B -#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C - -#define GL_CLIP_DEPTH_MODE 0x935D -#define GL_CLIP_ORIGIN 0x935C -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 -#define GL_CONTEXT_LOST 0x0507 -#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB -#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC -#define GL_GUILTY_CONTEXT_RESET 0x8253 -#define GL_INNOCENT_CONTEXT_RESET 0x8254 -#define GL_LOSE_CONTEXT_ON_RESET 0x8252 -#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA -#define GL_MAX_CULL_DISTANCES 0x82F9 -#define GL_NEGATIVE_ONE_TO_ONE 0x935E -#define GL_NO_RESET_NOTIFICATION 0x8261 -#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A -#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 -#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 -#define GL_QUERY_TARGET 0x82EA -#define GL_QUERY_WAIT_INVERTED 0x8E17 -#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 -#define GL_TEXTURE_TARGET 0x1006 -#define GL_UNKNOWN_CONTEXT_RESET 0x8255 -#define GL_ZERO_TO_ONE 0x935F - -#ifndef GL_ARB_buffer_storage -#define GL_ARB_buffer_storage 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glBufferStorage)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags); -#define glBufferStorage _ptrc_glBufferStorage -#endif /*GL_ARB_buffer_storage*/ - -#ifndef GL_ARB_shader_storage_buffer_object -#define GL_ARB_shader_storage_buffer_object 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -#define glShaderStorageBlockBinding _ptrc_glShaderStorageBlockBinding -#endif /*GL_ARB_shader_storage_buffer_object*/ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage1DARB _ptrc_glCompressedTexImage1DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage2DARB _ptrc_glCompressedTexImage2DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage3DARB _ptrc_glCompressedTexImage3DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage1DARB _ptrc_glCompressedTexSubImage1DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage2DARB _ptrc_glCompressedTexSubImage2DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage3DARB _ptrc_glCompressedTexSubImage3DARB -extern void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTexImageARB)(GLenum target, GLint level, void * img); -#define glGetCompressedTexImageARB _ptrc_glGetCompressedTexImageARB -#endif /*GL_ARB_texture_compression*/ - - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glBindFramebufferEXT)(GLenum target, GLuint framebuffer); -#define glBindFramebufferEXT _ptrc_glBindFramebufferEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glBindRenderbufferEXT)(GLenum target, GLuint renderbuffer); -#define glBindRenderbufferEXT _ptrc_glBindRenderbufferEXT -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckFramebufferStatusEXT)(GLenum target); -#define glCheckFramebufferStatusEXT _ptrc_glCheckFramebufferStatusEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); -#define glDeleteFramebuffersEXT _ptrc_glDeleteFramebuffersEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); -#define glDeleteRenderbuffersEXT _ptrc_glDeleteRenderbuffersEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -#define glFramebufferRenderbufferEXT _ptrc_glFramebufferRenderbufferEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -#define glFramebufferTexture1DEXT _ptrc_glFramebufferTexture1DEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -#define glFramebufferTexture2DEXT _ptrc_glFramebufferTexture2DEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#define glFramebufferTexture3DEXT _ptrc_glFramebufferTexture3DEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glGenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); -#define glGenFramebuffersEXT _ptrc_glGenFramebuffersEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glGenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); -#define glGenRenderbuffersEXT _ptrc_glGenRenderbuffersEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glGenerateMipmapEXT)(GLenum target); -#define glGenerateMipmapEXT _ptrc_glGenerateMipmapEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); -#define glGetFramebufferAttachmentParameterivEXT _ptrc_glGetFramebufferAttachmentParameterivEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glGetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); -#define glGetRenderbufferParameterivEXT _ptrc_glGetRenderbufferParameterivEXT -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsFramebufferEXT)(GLuint framebuffer); -#define glIsFramebufferEXT _ptrc_glIsFramebufferEXT -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsRenderbufferEXT)(GLuint renderbuffer); -#define glIsRenderbufferEXT _ptrc_glIsRenderbufferEXT -extern void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -#define glRenderbufferStorageEXT _ptrc_glRenderbufferStorageEXT -#endif /*GL_EXT_framebuffer_object*/ - - - - -#ifndef GL_KHR_debug -#define GL_KHR_debug 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageCallback)(GLDEBUGPROC callback, const void * userParam); -#define glDebugMessageCallback _ptrc_glDebugMessageCallback -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); -#define glDebugMessageControl _ptrc_glDebugMessageControl -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); -#define glDebugMessageInsert _ptrc_glDebugMessageInsert -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); -#define glGetDebugMessageLog _ptrc_glGetDebugMessageLog -extern void (CODEGEN_FUNCPTR *_ptrc_glGetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); -#define glGetObjectLabel _ptrc_glGetObjectLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glGetObjectPtrLabel)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); -#define glGetObjectPtrLabel _ptrc_glGetObjectPtrLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPointerv)(GLenum pname, void ** params); -#define glGetPointerv _ptrc_glGetPointerv -extern void (CODEGEN_FUNCPTR *_ptrc_glObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); -#define glObjectLabel _ptrc_glObjectLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glObjectPtrLabel)(const void * ptr, GLsizei length, const GLchar * label); -#define glObjectPtrLabel _ptrc_glObjectPtrLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glPopDebugGroup)(void); -#define glPopDebugGroup _ptrc_glPopDebugGroup -extern void (CODEGEN_FUNCPTR *_ptrc_glPushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); -#define glPushDebugGroup _ptrc_glPushDebugGroup -#endif /*GL_KHR_debug*/ - -#ifndef GL_ARB_invalidate_subdata -#define GL_ARB_invalidate_subdata 1 -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferData)(GLuint buffer); -#define glInvalidateBufferData _ptrc_glInvalidateBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); -#define glInvalidateBufferSubData _ptrc_glInvalidateBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); -#define glInvalidateFramebuffer _ptrc_glInvalidateFramebuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); -#define glInvalidateSubFramebuffer _ptrc_glInvalidateSubFramebuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexImage)(GLuint texture, GLint level); -#define glInvalidateTexImage _ptrc_glInvalidateTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -#define glInvalidateTexSubImage _ptrc_glInvalidateTexSubImage -#endif /*GL_ARB_invalidate_subdata*/ - -extern void (CODEGEN_FUNCPTR *_ptrc_glAccum)(GLenum op, GLfloat value); -#define glAccum _ptrc_glAccum -extern void (CODEGEN_FUNCPTR *_ptrc_glAlphaFunc)(GLenum func, GLfloat ref); -#define glAlphaFunc _ptrc_glAlphaFunc -extern void (CODEGEN_FUNCPTR *_ptrc_glBegin)(GLenum mode); -#define glBegin _ptrc_glBegin -extern void (CODEGEN_FUNCPTR *_ptrc_glBitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); -#define glBitmap _ptrc_glBitmap -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendFunc)(GLenum sfactor, GLenum dfactor); -#define glBlendFunc _ptrc_glBlendFunc -extern void (CODEGEN_FUNCPTR *_ptrc_glCallList)(GLuint list); -#define glCallList _ptrc_glCallList -extern void (CODEGEN_FUNCPTR *_ptrc_glCallLists)(GLsizei n, GLenum type, const void * lists); -#define glCallLists _ptrc_glCallLists -extern void (CODEGEN_FUNCPTR *_ptrc_glClear)(GLbitfield mask); -#define glClear _ptrc_glClear -extern void (CODEGEN_FUNCPTR *_ptrc_glClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#define glClearAccum _ptrc_glClearAccum -extern void (CODEGEN_FUNCPTR *_ptrc_glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#define glClearColor _ptrc_glClearColor -extern void (CODEGEN_FUNCPTR *_ptrc_glClearDepth)(GLdouble depth); -#define glClearDepth _ptrc_glClearDepth -extern void (CODEGEN_FUNCPTR *_ptrc_glClearIndex)(GLfloat c); -#define glClearIndex _ptrc_glClearIndex -extern void (CODEGEN_FUNCPTR *_ptrc_glClearStencil)(GLint s); -#define glClearStencil _ptrc_glClearStencil -extern void (CODEGEN_FUNCPTR *_ptrc_glClipPlane)(GLenum plane, const GLdouble * equation); -#define glClipPlane _ptrc_glClipPlane -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3b)(GLbyte red, GLbyte green, GLbyte blue); -#define glColor3b _ptrc_glColor3b -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3bv)(const GLbyte * v); -#define glColor3bv _ptrc_glColor3bv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3d)(GLdouble red, GLdouble green, GLdouble blue); -#define glColor3d _ptrc_glColor3d -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3dv)(const GLdouble * v); -#define glColor3dv _ptrc_glColor3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3f)(GLfloat red, GLfloat green, GLfloat blue); -#define glColor3f _ptrc_glColor3f -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3fv)(const GLfloat * v); -#define glColor3fv _ptrc_glColor3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3i)(GLint red, GLint green, GLint blue); -#define glColor3i _ptrc_glColor3i -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3iv)(const GLint * v); -#define glColor3iv _ptrc_glColor3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3s)(GLshort red, GLshort green, GLshort blue); -#define glColor3s _ptrc_glColor3s -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3sv)(const GLshort * v); -#define glColor3sv _ptrc_glColor3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3ub)(GLubyte red, GLubyte green, GLubyte blue); -#define glColor3ub _ptrc_glColor3ub -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3ubv)(const GLubyte * v); -#define glColor3ubv _ptrc_glColor3ubv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3ui)(GLuint red, GLuint green, GLuint blue); -#define glColor3ui _ptrc_glColor3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3uiv)(const GLuint * v); -#define glColor3uiv _ptrc_glColor3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3us)(GLushort red, GLushort green, GLushort blue); -#define glColor3us _ptrc_glColor3us -extern void (CODEGEN_FUNCPTR *_ptrc_glColor3usv)(const GLushort * v); -#define glColor3usv _ptrc_glColor3usv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -#define glColor4b _ptrc_glColor4b -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4bv)(const GLbyte * v); -#define glColor4bv _ptrc_glColor4bv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -#define glColor4d _ptrc_glColor4d -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4dv)(const GLdouble * v); -#define glColor4dv _ptrc_glColor4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#define glColor4f _ptrc_glColor4f -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4fv)(const GLfloat * v); -#define glColor4fv _ptrc_glColor4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4i)(GLint red, GLint green, GLint blue, GLint alpha); -#define glColor4i _ptrc_glColor4i -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4iv)(const GLint * v); -#define glColor4iv _ptrc_glColor4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha); -#define glColor4s _ptrc_glColor4s -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4sv)(const GLshort * v); -#define glColor4sv _ptrc_glColor4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -#define glColor4ub _ptrc_glColor4ub -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4ubv)(const GLubyte * v); -#define glColor4ubv _ptrc_glColor4ubv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); -#define glColor4ui _ptrc_glColor4ui -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4uiv)(const GLuint * v); -#define glColor4uiv _ptrc_glColor4uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha); -#define glColor4us _ptrc_glColor4us -extern void (CODEGEN_FUNCPTR *_ptrc_glColor4usv)(const GLushort * v); -#define glColor4usv _ptrc_glColor4usv -extern void (CODEGEN_FUNCPTR *_ptrc_glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -#define glColorMask _ptrc_glColorMask -extern void (CODEGEN_FUNCPTR *_ptrc_glColorMaterial)(GLenum face, GLenum mode); -#define glColorMaterial _ptrc_glColorMaterial -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -#define glCopyPixels _ptrc_glCopyPixels -extern void (CODEGEN_FUNCPTR *_ptrc_glCullFace)(GLenum mode); -#define glCullFace _ptrc_glCullFace -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteLists)(GLuint list, GLsizei range); -#define glDeleteLists _ptrc_glDeleteLists -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthFunc)(GLenum func); -#define glDepthFunc _ptrc_glDepthFunc -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthMask)(GLboolean flag); -#define glDepthMask _ptrc_glDepthMask -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthRange)(GLdouble ren_near, GLdouble ren_far); -#define glDepthRange _ptrc_glDepthRange -extern void (CODEGEN_FUNCPTR *_ptrc_glDisable)(GLenum cap); -#define glDisable _ptrc_glDisable -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawBuffer)(GLenum buf); -#define glDrawBuffer _ptrc_glDrawBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); -#define glDrawPixels _ptrc_glDrawPixels -extern void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlag)(GLboolean flag); -#define glEdgeFlag _ptrc_glEdgeFlag -extern void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlagv)(const GLboolean * flag); -#define glEdgeFlagv _ptrc_glEdgeFlagv -extern void (CODEGEN_FUNCPTR *_ptrc_glEnable)(GLenum cap); -#define glEnable _ptrc_glEnable -extern void (CODEGEN_FUNCPTR *_ptrc_glEnd)(void); -#define glEnd _ptrc_glEnd -extern void (CODEGEN_FUNCPTR *_ptrc_glEndList)(void); -#define glEndList _ptrc_glEndList -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1d)(GLdouble u); -#define glEvalCoord1d _ptrc_glEvalCoord1d -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1dv)(const GLdouble * u); -#define glEvalCoord1dv _ptrc_glEvalCoord1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1f)(GLfloat u); -#define glEvalCoord1f _ptrc_glEvalCoord1f -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord1fv)(const GLfloat * u); -#define glEvalCoord1fv _ptrc_glEvalCoord1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2d)(GLdouble u, GLdouble v); -#define glEvalCoord2d _ptrc_glEvalCoord2d -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2dv)(const GLdouble * u); -#define glEvalCoord2dv _ptrc_glEvalCoord2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2f)(GLfloat u, GLfloat v); -#define glEvalCoord2f _ptrc_glEvalCoord2f -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalCoord2fv)(const GLfloat * u); -#define glEvalCoord2fv _ptrc_glEvalCoord2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalMesh1)(GLenum mode, GLint i1, GLint i2); -#define glEvalMesh1 _ptrc_glEvalMesh1 -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -#define glEvalMesh2 _ptrc_glEvalMesh2 -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalPoint1)(GLint i); -#define glEvalPoint1 _ptrc_glEvalPoint1 -extern void (CODEGEN_FUNCPTR *_ptrc_glEvalPoint2)(GLint i, GLint j); -#define glEvalPoint2 _ptrc_glEvalPoint2 -extern void (CODEGEN_FUNCPTR *_ptrc_glFeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer); -#define glFeedbackBuffer _ptrc_glFeedbackBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glFinish)(void); -#define glFinish _ptrc_glFinish -extern void (CODEGEN_FUNCPTR *_ptrc_glFlush)(void); -#define glFlush _ptrc_glFlush -extern void (CODEGEN_FUNCPTR *_ptrc_glFogf)(GLenum pname, GLfloat param); -#define glFogf _ptrc_glFogf -extern void (CODEGEN_FUNCPTR *_ptrc_glFogfv)(GLenum pname, const GLfloat * params); -#define glFogfv _ptrc_glFogfv -extern void (CODEGEN_FUNCPTR *_ptrc_glFogi)(GLenum pname, GLint param); -#define glFogi _ptrc_glFogi -extern void (CODEGEN_FUNCPTR *_ptrc_glFogiv)(GLenum pname, const GLint * params); -#define glFogiv _ptrc_glFogiv -extern void (CODEGEN_FUNCPTR *_ptrc_glFrontFace)(GLenum mode); -#define glFrontFace _ptrc_glFrontFace -extern void (CODEGEN_FUNCPTR *_ptrc_glFrustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -#define glFrustum _ptrc_glFrustum -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGenLists)(GLsizei range); -#define glGenLists _ptrc_glGenLists -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBooleanv)(GLenum pname, GLboolean * data); -#define glGetBooleanv _ptrc_glGetBooleanv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetClipPlane)(GLenum plane, GLdouble * equation); -#define glGetClipPlane _ptrc_glGetClipPlane -extern void (CODEGEN_FUNCPTR *_ptrc_glGetDoublev)(GLenum pname, GLdouble * data); -#define glGetDoublev _ptrc_glGetDoublev -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glGetError)(void); -#define glGetError _ptrc_glGetError -extern void (CODEGEN_FUNCPTR *_ptrc_glGetFloatv)(GLenum pname, GLfloat * data); -#define glGetFloatv _ptrc_glGetFloatv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetIntegerv)(GLenum pname, GLint * data); -#define glGetIntegerv _ptrc_glGetIntegerv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetLightfv)(GLenum light, GLenum pname, GLfloat * params); -#define glGetLightfv _ptrc_glGetLightfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetLightiv)(GLenum light, GLenum pname, GLint * params); -#define glGetLightiv _ptrc_glGetLightiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMapdv)(GLenum target, GLenum query, GLdouble * v); -#define glGetMapdv _ptrc_glGetMapdv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMapfv)(GLenum target, GLenum query, GLfloat * v); -#define glGetMapfv _ptrc_glGetMapfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMapiv)(GLenum target, GLenum query, GLint * v); -#define glGetMapiv _ptrc_glGetMapiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMaterialfv)(GLenum face, GLenum pname, GLfloat * params); -#define glGetMaterialfv _ptrc_glGetMaterialfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMaterialiv)(GLenum face, GLenum pname, GLint * params); -#define glGetMaterialiv _ptrc_glGetMaterialiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapfv)(GLenum map, GLfloat * values); -#define glGetPixelMapfv _ptrc_glGetPixelMapfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapuiv)(GLenum map, GLuint * values); -#define glGetPixelMapuiv _ptrc_glGetPixelMapuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPixelMapusv)(GLenum map, GLushort * values); -#define glGetPixelMapusv _ptrc_glGetPixelMapusv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPolygonStipple)(GLubyte * mask); -#define glGetPolygonStipple _ptrc_glGetPolygonStipple -extern const GLubyte * (CODEGEN_FUNCPTR *_ptrc_glGetString)(GLenum name); -#define glGetString _ptrc_glGetString -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params); -#define glGetTexEnvfv _ptrc_glGetTexEnvfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexEnviv)(GLenum target, GLenum pname, GLint * params); -#define glGetTexEnviv _ptrc_glGetTexEnviv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexGendv)(GLenum coord, GLenum pname, GLdouble * params); -#define glGetTexGendv _ptrc_glGetTexGendv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params); -#define glGetTexGenfv _ptrc_glGetTexGenfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexGeniv)(GLenum coord, GLenum pname, GLint * params); -#define glGetTexGeniv _ptrc_glGetTexGeniv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels); -#define glGetTexImage _ptrc_glGetTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params); -#define glGetTexLevelParameterfv _ptrc_glGetTexLevelParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params); -#define glGetTexLevelParameteriv _ptrc_glGetTexLevelParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params); -#define glGetTexParameterfv _ptrc_glGetTexParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameteriv)(GLenum target, GLenum pname, GLint * params); -#define glGetTexParameteriv _ptrc_glGetTexParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glHint)(GLenum target, GLenum mode); -#define glHint _ptrc_glHint -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexMask)(GLuint mask); -#define glIndexMask _ptrc_glIndexMask -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexd)(GLdouble c); -#define glIndexd _ptrc_glIndexd -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexdv)(const GLdouble * c); -#define glIndexdv _ptrc_glIndexdv -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexf)(GLfloat c); -#define glIndexf _ptrc_glIndexf -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexfv)(const GLfloat * c); -#define glIndexfv _ptrc_glIndexfv -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexi)(GLint c); -#define glIndexi _ptrc_glIndexi -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexiv)(const GLint * c); -#define glIndexiv _ptrc_glIndexiv -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexs)(GLshort c); -#define glIndexs _ptrc_glIndexs -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexsv)(const GLshort * c); -#define glIndexsv _ptrc_glIndexsv -extern void (CODEGEN_FUNCPTR *_ptrc_glInitNames)(void); -#define glInitNames _ptrc_glInitNames -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsEnabled)(GLenum cap); -#define glIsEnabled _ptrc_glIsEnabled -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsList)(GLuint list); -#define glIsList _ptrc_glIsList -extern void (CODEGEN_FUNCPTR *_ptrc_glLightModelf)(GLenum pname, GLfloat param); -#define glLightModelf _ptrc_glLightModelf -extern void (CODEGEN_FUNCPTR *_ptrc_glLightModelfv)(GLenum pname, const GLfloat * params); -#define glLightModelfv _ptrc_glLightModelfv -extern void (CODEGEN_FUNCPTR *_ptrc_glLightModeli)(GLenum pname, GLint param); -#define glLightModeli _ptrc_glLightModeli -extern void (CODEGEN_FUNCPTR *_ptrc_glLightModeliv)(GLenum pname, const GLint * params); -#define glLightModeliv _ptrc_glLightModeliv -extern void (CODEGEN_FUNCPTR *_ptrc_glLightf)(GLenum light, GLenum pname, GLfloat param); -#define glLightf _ptrc_glLightf -extern void (CODEGEN_FUNCPTR *_ptrc_glLightfv)(GLenum light, GLenum pname, const GLfloat * params); -#define glLightfv _ptrc_glLightfv -extern void (CODEGEN_FUNCPTR *_ptrc_glLighti)(GLenum light, GLenum pname, GLint param); -#define glLighti _ptrc_glLighti -extern void (CODEGEN_FUNCPTR *_ptrc_glLightiv)(GLenum light, GLenum pname, const GLint * params); -#define glLightiv _ptrc_glLightiv -extern void (CODEGEN_FUNCPTR *_ptrc_glLineStipple)(GLint factor, GLushort pattern); -#define glLineStipple _ptrc_glLineStipple -extern void (CODEGEN_FUNCPTR *_ptrc_glLineWidth)(GLfloat width); -#define glLineWidth _ptrc_glLineWidth -extern void (CODEGEN_FUNCPTR *_ptrc_glListBase)(GLuint base); -#define glListBase _ptrc_glListBase -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadIdentity)(void); -#define glLoadIdentity _ptrc_glLoadIdentity -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadMatrixd)(const GLdouble * m); -#define glLoadMatrixd _ptrc_glLoadMatrixd -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadMatrixf)(const GLfloat * m); -#define glLoadMatrixf _ptrc_glLoadMatrixf -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadName)(GLuint name); -#define glLoadName _ptrc_glLoadName -extern void (CODEGEN_FUNCPTR *_ptrc_glLogicOp)(GLenum opcode); -#define glLogicOp _ptrc_glLogicOp -extern void (CODEGEN_FUNCPTR *_ptrc_glMap1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); -#define glMap1d _ptrc_glMap1d -extern void (CODEGEN_FUNCPTR *_ptrc_glMap1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); -#define glMap1f _ptrc_glMap1f -extern void (CODEGEN_FUNCPTR *_ptrc_glMap2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); -#define glMap2d _ptrc_glMap2d -extern void (CODEGEN_FUNCPTR *_ptrc_glMap2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); -#define glMap2f _ptrc_glMap2f -extern void (CODEGEN_FUNCPTR *_ptrc_glMapGrid1d)(GLint un, GLdouble u1, GLdouble u2); -#define glMapGrid1d _ptrc_glMapGrid1d -extern void (CODEGEN_FUNCPTR *_ptrc_glMapGrid1f)(GLint un, GLfloat u1, GLfloat u2); -#define glMapGrid1f _ptrc_glMapGrid1f -extern void (CODEGEN_FUNCPTR *_ptrc_glMapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -#define glMapGrid2d _ptrc_glMapGrid2d -extern void (CODEGEN_FUNCPTR *_ptrc_glMapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -#define glMapGrid2f _ptrc_glMapGrid2f -extern void (CODEGEN_FUNCPTR *_ptrc_glMaterialf)(GLenum face, GLenum pname, GLfloat param); -#define glMaterialf _ptrc_glMaterialf -extern void (CODEGEN_FUNCPTR *_ptrc_glMaterialfv)(GLenum face, GLenum pname, const GLfloat * params); -#define glMaterialfv _ptrc_glMaterialfv -extern void (CODEGEN_FUNCPTR *_ptrc_glMateriali)(GLenum face, GLenum pname, GLint param); -#define glMateriali _ptrc_glMateriali -extern void (CODEGEN_FUNCPTR *_ptrc_glMaterialiv)(GLenum face, GLenum pname, const GLint * params); -#define glMaterialiv _ptrc_glMaterialiv -extern void (CODEGEN_FUNCPTR *_ptrc_glMatrixMode)(GLenum mode); -#define glMatrixMode _ptrc_glMatrixMode -extern void (CODEGEN_FUNCPTR *_ptrc_glMultMatrixd)(const GLdouble * m); -#define glMultMatrixd _ptrc_glMultMatrixd -extern void (CODEGEN_FUNCPTR *_ptrc_glMultMatrixf)(const GLfloat * m); -#define glMultMatrixf _ptrc_glMultMatrixf -extern void (CODEGEN_FUNCPTR *_ptrc_glNewList)(GLuint list, GLenum mode); -#define glNewList _ptrc_glNewList -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3b)(GLbyte nx, GLbyte ny, GLbyte nz); -#define glNormal3b _ptrc_glNormal3b -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3bv)(const GLbyte * v); -#define glNormal3bv _ptrc_glNormal3bv -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3d)(GLdouble nx, GLdouble ny, GLdouble nz); -#define glNormal3d _ptrc_glNormal3d -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3dv)(const GLdouble * v); -#define glNormal3dv _ptrc_glNormal3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3f)(GLfloat nx, GLfloat ny, GLfloat nz); -#define glNormal3f _ptrc_glNormal3f -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3fv)(const GLfloat * v); -#define glNormal3fv _ptrc_glNormal3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3i)(GLint nx, GLint ny, GLint nz); -#define glNormal3i _ptrc_glNormal3i -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3iv)(const GLint * v); -#define glNormal3iv _ptrc_glNormal3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3s)(GLshort nx, GLshort ny, GLshort nz); -#define glNormal3s _ptrc_glNormal3s -extern void (CODEGEN_FUNCPTR *_ptrc_glNormal3sv)(const GLshort * v); -#define glNormal3sv _ptrc_glNormal3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glOrtho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -#define glOrtho _ptrc_glOrtho -extern void (CODEGEN_FUNCPTR *_ptrc_glPassThrough)(GLfloat token); -#define glPassThrough _ptrc_glPassThrough -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values); -#define glPixelMapfv _ptrc_glPixelMapfv -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values); -#define glPixelMapuiv _ptrc_glPixelMapuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values); -#define glPixelMapusv _ptrc_glPixelMapusv -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelStoref)(GLenum pname, GLfloat param); -#define glPixelStoref _ptrc_glPixelStoref -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelStorei)(GLenum pname, GLint param); -#define glPixelStorei _ptrc_glPixelStorei -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelTransferf)(GLenum pname, GLfloat param); -#define glPixelTransferf _ptrc_glPixelTransferf -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelTransferi)(GLenum pname, GLint param); -#define glPixelTransferi _ptrc_glPixelTransferi -extern void (CODEGEN_FUNCPTR *_ptrc_glPixelZoom)(GLfloat xfactor, GLfloat yfactor); -#define glPixelZoom _ptrc_glPixelZoom -extern void (CODEGEN_FUNCPTR *_ptrc_glPointSize)(GLfloat size); -#define glPointSize _ptrc_glPointSize -extern void (CODEGEN_FUNCPTR *_ptrc_glPolygonMode)(GLenum face, GLenum mode); -#define glPolygonMode _ptrc_glPolygonMode -extern void (CODEGEN_FUNCPTR *_ptrc_glPolygonStipple)(const GLubyte * mask); -#define glPolygonStipple _ptrc_glPolygonStipple -extern void (CODEGEN_FUNCPTR *_ptrc_glPopAttrib)(void); -#define glPopAttrib _ptrc_glPopAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glPopMatrix)(void); -#define glPopMatrix _ptrc_glPopMatrix -extern void (CODEGEN_FUNCPTR *_ptrc_glPopName)(void); -#define glPopName _ptrc_glPopName -extern void (CODEGEN_FUNCPTR *_ptrc_glPushAttrib)(GLbitfield mask); -#define glPushAttrib _ptrc_glPushAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glPushMatrix)(void); -#define glPushMatrix _ptrc_glPushMatrix -extern void (CODEGEN_FUNCPTR *_ptrc_glPushName)(GLuint name); -#define glPushName _ptrc_glPushName -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2d)(GLdouble x, GLdouble y); -#define glRasterPos2d _ptrc_glRasterPos2d -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2dv)(const GLdouble * v); -#define glRasterPos2dv _ptrc_glRasterPos2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2f)(GLfloat x, GLfloat y); -#define glRasterPos2f _ptrc_glRasterPos2f -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2fv)(const GLfloat * v); -#define glRasterPos2fv _ptrc_glRasterPos2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2i)(GLint x, GLint y); -#define glRasterPos2i _ptrc_glRasterPos2i -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2iv)(const GLint * v); -#define glRasterPos2iv _ptrc_glRasterPos2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2s)(GLshort x, GLshort y); -#define glRasterPos2s _ptrc_glRasterPos2s -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos2sv)(const GLshort * v); -#define glRasterPos2sv _ptrc_glRasterPos2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3d)(GLdouble x, GLdouble y, GLdouble z); -#define glRasterPos3d _ptrc_glRasterPos3d -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3dv)(const GLdouble * v); -#define glRasterPos3dv _ptrc_glRasterPos3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3f)(GLfloat x, GLfloat y, GLfloat z); -#define glRasterPos3f _ptrc_glRasterPos3f -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3fv)(const GLfloat * v); -#define glRasterPos3fv _ptrc_glRasterPos3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3i)(GLint x, GLint y, GLint z); -#define glRasterPos3i _ptrc_glRasterPos3i -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3iv)(const GLint * v); -#define glRasterPos3iv _ptrc_glRasterPos3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3s)(GLshort x, GLshort y, GLshort z); -#define glRasterPos3s _ptrc_glRasterPos3s -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos3sv)(const GLshort * v); -#define glRasterPos3sv _ptrc_glRasterPos3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); -#define glRasterPos4d _ptrc_glRasterPos4d -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4dv)(const GLdouble * v); -#define glRasterPos4dv _ptrc_glRasterPos4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -#define glRasterPos4f _ptrc_glRasterPos4f -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4fv)(const GLfloat * v); -#define glRasterPos4fv _ptrc_glRasterPos4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4i)(GLint x, GLint y, GLint z, GLint w); -#define glRasterPos4i _ptrc_glRasterPos4i -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4iv)(const GLint * v); -#define glRasterPos4iv _ptrc_glRasterPos4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w); -#define glRasterPos4s _ptrc_glRasterPos4s -extern void (CODEGEN_FUNCPTR *_ptrc_glRasterPos4sv)(const GLshort * v); -#define glRasterPos4sv _ptrc_glRasterPos4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glReadBuffer)(GLenum src); -#define glReadBuffer _ptrc_glReadBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); -#define glReadPixels _ptrc_glReadPixels -extern void (CODEGEN_FUNCPTR *_ptrc_glRectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -#define glRectd _ptrc_glRectd -extern void (CODEGEN_FUNCPTR *_ptrc_glRectdv)(const GLdouble * v1, const GLdouble * v2); -#define glRectdv _ptrc_glRectdv -extern void (CODEGEN_FUNCPTR *_ptrc_glRectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -#define glRectf _ptrc_glRectf -extern void (CODEGEN_FUNCPTR *_ptrc_glRectfv)(const GLfloat * v1, const GLfloat * v2); -#define glRectfv _ptrc_glRectfv -extern void (CODEGEN_FUNCPTR *_ptrc_glRecti)(GLint x1, GLint y1, GLint x2, GLint y2); -#define glRecti _ptrc_glRecti -extern void (CODEGEN_FUNCPTR *_ptrc_glRectiv)(const GLint * v1, const GLint * v2); -#define glRectiv _ptrc_glRectiv -extern void (CODEGEN_FUNCPTR *_ptrc_glRects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); -#define glRects _ptrc_glRects -extern void (CODEGEN_FUNCPTR *_ptrc_glRectsv)(const GLshort * v1, const GLshort * v2); -#define glRectsv _ptrc_glRectsv -extern GLint (CODEGEN_FUNCPTR *_ptrc_glRenderMode)(GLenum mode); -#define glRenderMode _ptrc_glRenderMode -extern void (CODEGEN_FUNCPTR *_ptrc_glRotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -#define glRotated _ptrc_glRotated -extern void (CODEGEN_FUNCPTR *_ptrc_glRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -#define glRotatef _ptrc_glRotatef -extern void (CODEGEN_FUNCPTR *_ptrc_glScaled)(GLdouble x, GLdouble y, GLdouble z); -#define glScaled _ptrc_glScaled -extern void (CODEGEN_FUNCPTR *_ptrc_glScalef)(GLfloat x, GLfloat y, GLfloat z); -#define glScalef _ptrc_glScalef -extern void (CODEGEN_FUNCPTR *_ptrc_glScissor)(GLint x, GLint y, GLsizei width, GLsizei height); -#define glScissor _ptrc_glScissor -extern void (CODEGEN_FUNCPTR *_ptrc_glSelectBuffer)(GLsizei size, GLuint * buffer); -#define glSelectBuffer _ptrc_glSelectBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glShadeModel)(GLenum mode); -#define glShadeModel _ptrc_glShadeModel -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilFunc)(GLenum func, GLint ref, GLuint mask); -#define glStencilFunc _ptrc_glStencilFunc -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilMask)(GLuint mask); -#define glStencilMask _ptrc_glStencilMask -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass); -#define glStencilOp _ptrc_glStencilOp -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1d)(GLdouble s); -#define glTexCoord1d _ptrc_glTexCoord1d -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1dv)(const GLdouble * v); -#define glTexCoord1dv _ptrc_glTexCoord1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1f)(GLfloat s); -#define glTexCoord1f _ptrc_glTexCoord1f -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1fv)(const GLfloat * v); -#define glTexCoord1fv _ptrc_glTexCoord1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1i)(GLint s); -#define glTexCoord1i _ptrc_glTexCoord1i -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1iv)(const GLint * v); -#define glTexCoord1iv _ptrc_glTexCoord1iv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1s)(GLshort s); -#define glTexCoord1s _ptrc_glTexCoord1s -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord1sv)(const GLshort * v); -#define glTexCoord1sv _ptrc_glTexCoord1sv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2d)(GLdouble s, GLdouble t); -#define glTexCoord2d _ptrc_glTexCoord2d -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2dv)(const GLdouble * v); -#define glTexCoord2dv _ptrc_glTexCoord2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2f)(GLfloat s, GLfloat t); -#define glTexCoord2f _ptrc_glTexCoord2f -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2fv)(const GLfloat * v); -#define glTexCoord2fv _ptrc_glTexCoord2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2i)(GLint s, GLint t); -#define glTexCoord2i _ptrc_glTexCoord2i -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2iv)(const GLint * v); -#define glTexCoord2iv _ptrc_glTexCoord2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2s)(GLshort s, GLshort t); -#define glTexCoord2s _ptrc_glTexCoord2s -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord2sv)(const GLshort * v); -#define glTexCoord2sv _ptrc_glTexCoord2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3d)(GLdouble s, GLdouble t, GLdouble r); -#define glTexCoord3d _ptrc_glTexCoord3d -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3dv)(const GLdouble * v); -#define glTexCoord3dv _ptrc_glTexCoord3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3f)(GLfloat s, GLfloat t, GLfloat r); -#define glTexCoord3f _ptrc_glTexCoord3f -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3fv)(const GLfloat * v); -#define glTexCoord3fv _ptrc_glTexCoord3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3i)(GLint s, GLint t, GLint r); -#define glTexCoord3i _ptrc_glTexCoord3i -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3iv)(const GLint * v); -#define glTexCoord3iv _ptrc_glTexCoord3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3s)(GLshort s, GLshort t, GLshort r); -#define glTexCoord3s _ptrc_glTexCoord3s -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord3sv)(const GLshort * v); -#define glTexCoord3sv _ptrc_glTexCoord3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); -#define glTexCoord4d _ptrc_glTexCoord4d -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4dv)(const GLdouble * v); -#define glTexCoord4dv _ptrc_glTexCoord4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); -#define glTexCoord4f _ptrc_glTexCoord4f -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4fv)(const GLfloat * v); -#define glTexCoord4fv _ptrc_glTexCoord4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4i)(GLint s, GLint t, GLint r, GLint q); -#define glTexCoord4i _ptrc_glTexCoord4i -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4iv)(const GLint * v); -#define glTexCoord4iv _ptrc_glTexCoord4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q); -#define glTexCoord4s _ptrc_glTexCoord4s -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoord4sv)(const GLshort * v); -#define glTexCoord4sv _ptrc_glTexCoord4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexEnvf)(GLenum target, GLenum pname, GLfloat param); -#define glTexEnvf _ptrc_glTexEnvf -extern void (CODEGEN_FUNCPTR *_ptrc_glTexEnvfv)(GLenum target, GLenum pname, const GLfloat * params); -#define glTexEnvfv _ptrc_glTexEnvfv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexEnvi)(GLenum target, GLenum pname, GLint param); -#define glTexEnvi _ptrc_glTexEnvi -extern void (CODEGEN_FUNCPTR *_ptrc_glTexEnviv)(GLenum target, GLenum pname, const GLint * params); -#define glTexEnviv _ptrc_glTexEnviv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGend)(GLenum coord, GLenum pname, GLdouble param); -#define glTexGend _ptrc_glTexGend -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGendv)(GLenum coord, GLenum pname, const GLdouble * params); -#define glTexGendv _ptrc_glTexGendv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGenf)(GLenum coord, GLenum pname, GLfloat param); -#define glTexGenf _ptrc_glTexGenf -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGenfv)(GLenum coord, GLenum pname, const GLfloat * params); -#define glTexGenfv _ptrc_glTexGenfv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGeni)(GLenum coord, GLenum pname, GLint param); -#define glTexGeni _ptrc_glTexGeni -extern void (CODEGEN_FUNCPTR *_ptrc_glTexGeniv)(GLenum coord, GLenum pname, const GLint * params); -#define glTexGeniv _ptrc_glTexGeniv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels); -#define glTexImage1D _ptrc_glTexImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); -#define glTexImage2D _ptrc_glTexImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameterf)(GLenum target, GLenum pname, GLfloat param); -#define glTexParameterf _ptrc_glTexParameterf -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameterfv)(GLenum target, GLenum pname, const GLfloat * params); -#define glTexParameterfv _ptrc_glTexParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameteri)(GLenum target, GLenum pname, GLint param); -#define glTexParameteri _ptrc_glTexParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameteriv)(GLenum target, GLenum pname, const GLint * params); -#define glTexParameteriv _ptrc_glTexParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glTranslated)(GLdouble x, GLdouble y, GLdouble z); -#define glTranslated _ptrc_glTranslated -extern void (CODEGEN_FUNCPTR *_ptrc_glTranslatef)(GLfloat x, GLfloat y, GLfloat z); -#define glTranslatef _ptrc_glTranslatef -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2d)(GLdouble x, GLdouble y); -#define glVertex2d _ptrc_glVertex2d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2dv)(const GLdouble * v); -#define glVertex2dv _ptrc_glVertex2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2f)(GLfloat x, GLfloat y); -#define glVertex2f _ptrc_glVertex2f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2fv)(const GLfloat * v); -#define glVertex2fv _ptrc_glVertex2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2i)(GLint x, GLint y); -#define glVertex2i _ptrc_glVertex2i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2iv)(const GLint * v); -#define glVertex2iv _ptrc_glVertex2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2s)(GLshort x, GLshort y); -#define glVertex2s _ptrc_glVertex2s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex2sv)(const GLshort * v); -#define glVertex2sv _ptrc_glVertex2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3d)(GLdouble x, GLdouble y, GLdouble z); -#define glVertex3d _ptrc_glVertex3d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3dv)(const GLdouble * v); -#define glVertex3dv _ptrc_glVertex3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3f)(GLfloat x, GLfloat y, GLfloat z); -#define glVertex3f _ptrc_glVertex3f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3fv)(const GLfloat * v); -#define glVertex3fv _ptrc_glVertex3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3i)(GLint x, GLint y, GLint z); -#define glVertex3i _ptrc_glVertex3i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3iv)(const GLint * v); -#define glVertex3iv _ptrc_glVertex3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3s)(GLshort x, GLshort y, GLshort z); -#define glVertex3s _ptrc_glVertex3s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex3sv)(const GLshort * v); -#define glVertex3sv _ptrc_glVertex3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); -#define glVertex4d _ptrc_glVertex4d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4dv)(const GLdouble * v); -#define glVertex4dv _ptrc_glVertex4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -#define glVertex4f _ptrc_glVertex4f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4fv)(const GLfloat * v); -#define glVertex4fv _ptrc_glVertex4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4i)(GLint x, GLint y, GLint z, GLint w); -#define glVertex4i _ptrc_glVertex4i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4iv)(const GLint * v); -#define glVertex4iv _ptrc_glVertex4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4s)(GLshort x, GLshort y, GLshort z, GLshort w); -#define glVertex4s _ptrc_glVertex4s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertex4sv)(const GLshort * v); -#define glVertex4sv _ptrc_glVertex4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glViewport)(GLint x, GLint y, GLsizei width, GLsizei height); -#define glViewport _ptrc_glViewport - -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glAreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences); -#define glAreTexturesResident _ptrc_glAreTexturesResident -extern void (CODEGEN_FUNCPTR *_ptrc_glArrayElement)(GLint i); -#define glArrayElement _ptrc_glArrayElement -extern void (CODEGEN_FUNCPTR *_ptrc_glBindTexture)(GLenum target, GLuint texture); -#define glBindTexture _ptrc_glBindTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glColorPointer _ptrc_glColorPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -#define glCopyTexImage1D _ptrc_glCopyTexImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -#define glCopyTexImage2D _ptrc_glCopyTexImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -#define glCopyTexSubImage1D _ptrc_glCopyTexSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#define glCopyTexSubImage2D _ptrc_glCopyTexSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteTextures)(GLsizei n, const GLuint * textures); -#define glDeleteTextures _ptrc_glDeleteTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glDisableClientState)(GLenum ren_array); -#define glDisableClientState _ptrc_glDisableClientState -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawArrays)(GLenum mode, GLint first, GLsizei count); -#define glDrawArrays _ptrc_glDrawArrays -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElements)(GLenum mode, GLsizei count, GLenum type, const void * indices); -#define glDrawElements _ptrc_glDrawElements -extern void (CODEGEN_FUNCPTR *_ptrc_glEdgeFlagPointer)(GLsizei stride, const void * pointer); -#define glEdgeFlagPointer _ptrc_glEdgeFlagPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glEnableClientState)(GLenum ren_array); -#define glEnableClientState _ptrc_glEnableClientState -extern void (CODEGEN_FUNCPTR *_ptrc_glGenTextures)(GLsizei n, GLuint * textures); -#define glGenTextures _ptrc_glGenTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glGetPointerv)(GLenum pname, void ** params); -#define glGetPointerv _ptrc_glGetPointerv -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexPointer)(GLenum type, GLsizei stride, const void * pointer); -#define glIndexPointer _ptrc_glIndexPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexub)(GLubyte c); -#define glIndexub _ptrc_glIndexub -extern void (CODEGEN_FUNCPTR *_ptrc_glIndexubv)(const GLubyte * c); -#define glIndexubv _ptrc_glIndexubv -extern void (CODEGEN_FUNCPTR *_ptrc_glInterleavedArrays)(GLenum format, GLsizei stride, const void * pointer); -#define glInterleavedArrays _ptrc_glInterleavedArrays -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsTexture)(GLuint texture); -#define glIsTexture _ptrc_glIsTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glNormalPointer)(GLenum type, GLsizei stride, const void * pointer); -#define glNormalPointer _ptrc_glNormalPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glPolygonOffset)(GLfloat factor, GLfloat units); -#define glPolygonOffset _ptrc_glPolygonOffset -extern void (CODEGEN_FUNCPTR *_ptrc_glPopClientAttrib)(void); -#define glPopClientAttrib _ptrc_glPopClientAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glPrioritizeTextures)(GLsizei n, const GLuint * textures, const GLfloat * priorities); -#define glPrioritizeTextures _ptrc_glPrioritizeTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glPushClientAttrib)(GLbitfield mask); -#define glPushClientAttrib _ptrc_glPushClientAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glTexCoordPointer _ptrc_glTexCoordPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); -#define glTexSubImage1D _ptrc_glTexSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); -#define glTexSubImage2D _ptrc_glTexSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glVertexPointer _ptrc_glVertexPointer - -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#define glCopyTexSubImage3D _ptrc_glCopyTexSubImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices); -#define glDrawRangeElements _ptrc_glDrawRangeElements -extern void (CODEGEN_FUNCPTR *_ptrc_glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels); -#define glTexImage3D _ptrc_glTexImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); -#define glTexSubImage3D _ptrc_glTexSubImage3D - -extern void (CODEGEN_FUNCPTR *_ptrc_glActiveTexture)(GLenum texture); -#define glActiveTexture _ptrc_glActiveTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glClientActiveTexture)(GLenum texture); -#define glClientActiveTexture _ptrc_glClientActiveTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage1D _ptrc_glCompressedTexImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage2D _ptrc_glCompressedTexImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data); -#define glCompressedTexImage3D _ptrc_glCompressedTexImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage1D _ptrc_glCompressedTexSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage2D _ptrc_glCompressedTexSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTexSubImage3D _ptrc_glCompressedTexSubImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTexImage)(GLenum target, GLint level, void * img); -#define glGetCompressedTexImage _ptrc_glGetCompressedTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadTransposeMatrixd)(const GLdouble * m); -#define glLoadTransposeMatrixd _ptrc_glLoadTransposeMatrixd -extern void (CODEGEN_FUNCPTR *_ptrc_glLoadTransposeMatrixf)(const GLfloat * m); -#define glLoadTransposeMatrixf _ptrc_glLoadTransposeMatrixf -extern void (CODEGEN_FUNCPTR *_ptrc_glMultTransposeMatrixd)(const GLdouble * m); -#define glMultTransposeMatrixd _ptrc_glMultTransposeMatrixd -extern void (CODEGEN_FUNCPTR *_ptrc_glMultTransposeMatrixf)(const GLfloat * m); -#define glMultTransposeMatrixf _ptrc_glMultTransposeMatrixf -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1d)(GLenum target, GLdouble s); -#define glMultiTexCoord1d _ptrc_glMultiTexCoord1d -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1dv)(GLenum target, const GLdouble * v); -#define glMultiTexCoord1dv _ptrc_glMultiTexCoord1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1f)(GLenum target, GLfloat s); -#define glMultiTexCoord1f _ptrc_glMultiTexCoord1f -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1fv)(GLenum target, const GLfloat * v); -#define glMultiTexCoord1fv _ptrc_glMultiTexCoord1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1i)(GLenum target, GLint s); -#define glMultiTexCoord1i _ptrc_glMultiTexCoord1i -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1iv)(GLenum target, const GLint * v); -#define glMultiTexCoord1iv _ptrc_glMultiTexCoord1iv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1s)(GLenum target, GLshort s); -#define glMultiTexCoord1s _ptrc_glMultiTexCoord1s -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord1sv)(GLenum target, const GLshort * v); -#define glMultiTexCoord1sv _ptrc_glMultiTexCoord1sv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t); -#define glMultiTexCoord2d _ptrc_glMultiTexCoord2d -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2dv)(GLenum target, const GLdouble * v); -#define glMultiTexCoord2dv _ptrc_glMultiTexCoord2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t); -#define glMultiTexCoord2f _ptrc_glMultiTexCoord2f -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2fv)(GLenum target, const GLfloat * v); -#define glMultiTexCoord2fv _ptrc_glMultiTexCoord2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2i)(GLenum target, GLint s, GLint t); -#define glMultiTexCoord2i _ptrc_glMultiTexCoord2i -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2iv)(GLenum target, const GLint * v); -#define glMultiTexCoord2iv _ptrc_glMultiTexCoord2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2s)(GLenum target, GLshort s, GLshort t); -#define glMultiTexCoord2s _ptrc_glMultiTexCoord2s -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord2sv)(GLenum target, const GLshort * v); -#define glMultiTexCoord2sv _ptrc_glMultiTexCoord2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r); -#define glMultiTexCoord3d _ptrc_glMultiTexCoord3d -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3dv)(GLenum target, const GLdouble * v); -#define glMultiTexCoord3dv _ptrc_glMultiTexCoord3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r); -#define glMultiTexCoord3f _ptrc_glMultiTexCoord3f -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3fv)(GLenum target, const GLfloat * v); -#define glMultiTexCoord3fv _ptrc_glMultiTexCoord3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r); -#define glMultiTexCoord3i _ptrc_glMultiTexCoord3i -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3iv)(GLenum target, const GLint * v); -#define glMultiTexCoord3iv _ptrc_glMultiTexCoord3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r); -#define glMultiTexCoord3s _ptrc_glMultiTexCoord3s -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord3sv)(GLenum target, const GLshort * v); -#define glMultiTexCoord3sv _ptrc_glMultiTexCoord3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -#define glMultiTexCoord4d _ptrc_glMultiTexCoord4d -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4dv)(GLenum target, const GLdouble * v); -#define glMultiTexCoord4dv _ptrc_glMultiTexCoord4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -#define glMultiTexCoord4f _ptrc_glMultiTexCoord4f -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4fv)(GLenum target, const GLfloat * v); -#define glMultiTexCoord4fv _ptrc_glMultiTexCoord4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q); -#define glMultiTexCoord4i _ptrc_glMultiTexCoord4i -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4iv)(GLenum target, const GLint * v); -#define glMultiTexCoord4iv _ptrc_glMultiTexCoord4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -#define glMultiTexCoord4s _ptrc_glMultiTexCoord4s -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiTexCoord4sv)(GLenum target, const GLshort * v); -#define glMultiTexCoord4sv _ptrc_glMultiTexCoord4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glSampleCoverage)(GLfloat value, GLboolean invert); -#define glSampleCoverage _ptrc_glSampleCoverage - -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -#define glBlendColor _ptrc_glBlendColor -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendEquation)(GLenum mode); -#define glBlendEquation _ptrc_glBlendEquation -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#define glBlendFuncSeparate _ptrc_glBlendFuncSeparate -extern void (CODEGEN_FUNCPTR *_ptrc_glFogCoordPointer)(GLenum type, GLsizei stride, const void * pointer); -#define glFogCoordPointer _ptrc_glFogCoordPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glFogCoordd)(GLdouble coord); -#define glFogCoordd _ptrc_glFogCoordd -extern void (CODEGEN_FUNCPTR *_ptrc_glFogCoorddv)(const GLdouble * coord); -#define glFogCoorddv _ptrc_glFogCoorddv -extern void (CODEGEN_FUNCPTR *_ptrc_glFogCoordf)(GLfloat coord); -#define glFogCoordf _ptrc_glFogCoordf -extern void (CODEGEN_FUNCPTR *_ptrc_glFogCoordfv)(const GLfloat * coord); -#define glFogCoordfv _ptrc_glFogCoordfv -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawArrays)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); -#define glMultiDrawArrays _ptrc_glMultiDrawArrays -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount); -#define glMultiDrawElements _ptrc_glMultiDrawElements -extern void (CODEGEN_FUNCPTR *_ptrc_glPointParameterf)(GLenum pname, GLfloat param); -#define glPointParameterf _ptrc_glPointParameterf -extern void (CODEGEN_FUNCPTR *_ptrc_glPointParameterfv)(GLenum pname, const GLfloat * params); -#define glPointParameterfv _ptrc_glPointParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glPointParameteri)(GLenum pname, GLint param); -#define glPointParameteri _ptrc_glPointParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glPointParameteriv)(GLenum pname, const GLint * params); -#define glPointParameteriv _ptrc_glPointParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue); -#define glSecondaryColor3b _ptrc_glSecondaryColor3b -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3bv)(const GLbyte * v); -#define glSecondaryColor3bv _ptrc_glSecondaryColor3bv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue); -#define glSecondaryColor3d _ptrc_glSecondaryColor3d -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3dv)(const GLdouble * v); -#define glSecondaryColor3dv _ptrc_glSecondaryColor3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue); -#define glSecondaryColor3f _ptrc_glSecondaryColor3f -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3fv)(const GLfloat * v); -#define glSecondaryColor3fv _ptrc_glSecondaryColor3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3i)(GLint red, GLint green, GLint blue); -#define glSecondaryColor3i _ptrc_glSecondaryColor3i -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3iv)(const GLint * v); -#define glSecondaryColor3iv _ptrc_glSecondaryColor3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3s)(GLshort red, GLshort green, GLshort blue); -#define glSecondaryColor3s _ptrc_glSecondaryColor3s -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3sv)(const GLshort * v); -#define glSecondaryColor3sv _ptrc_glSecondaryColor3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue); -#define glSecondaryColor3ub _ptrc_glSecondaryColor3ub -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ubv)(const GLubyte * v); -#define glSecondaryColor3ubv _ptrc_glSecondaryColor3ubv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3ui)(GLuint red, GLuint green, GLuint blue); -#define glSecondaryColor3ui _ptrc_glSecondaryColor3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3uiv)(const GLuint * v); -#define glSecondaryColor3uiv _ptrc_glSecondaryColor3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3us)(GLushort red, GLushort green, GLushort blue); -#define glSecondaryColor3us _ptrc_glSecondaryColor3us -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColor3usv)(const GLushort * v); -#define glSecondaryColor3usv _ptrc_glSecondaryColor3usv -extern void (CODEGEN_FUNCPTR *_ptrc_glSecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glSecondaryColorPointer _ptrc_glSecondaryColorPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2d)(GLdouble x, GLdouble y); -#define glWindowPos2d _ptrc_glWindowPos2d -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2dv)(const GLdouble * v); -#define glWindowPos2dv _ptrc_glWindowPos2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2f)(GLfloat x, GLfloat y); -#define glWindowPos2f _ptrc_glWindowPos2f -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2fv)(const GLfloat * v); -#define glWindowPos2fv _ptrc_glWindowPos2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2i)(GLint x, GLint y); -#define glWindowPos2i _ptrc_glWindowPos2i -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2iv)(const GLint * v); -#define glWindowPos2iv _ptrc_glWindowPos2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2s)(GLshort x, GLshort y); -#define glWindowPos2s _ptrc_glWindowPos2s -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos2sv)(const GLshort * v); -#define glWindowPos2sv _ptrc_glWindowPos2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3d)(GLdouble x, GLdouble y, GLdouble z); -#define glWindowPos3d _ptrc_glWindowPos3d -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3dv)(const GLdouble * v); -#define glWindowPos3dv _ptrc_glWindowPos3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3f)(GLfloat x, GLfloat y, GLfloat z); -#define glWindowPos3f _ptrc_glWindowPos3f -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3fv)(const GLfloat * v); -#define glWindowPos3fv _ptrc_glWindowPos3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3i)(GLint x, GLint y, GLint z); -#define glWindowPos3i _ptrc_glWindowPos3i -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3iv)(const GLint * v); -#define glWindowPos3iv _ptrc_glWindowPos3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3s)(GLshort x, GLshort y, GLshort z); -#define glWindowPos3s _ptrc_glWindowPos3s -extern void (CODEGEN_FUNCPTR *_ptrc_glWindowPos3sv)(const GLshort * v); -#define glWindowPos3sv _ptrc_glWindowPos3sv - -extern void (CODEGEN_FUNCPTR *_ptrc_glBeginQuery)(GLenum target, GLuint id); -#define glBeginQuery _ptrc_glBeginQuery -extern void (CODEGEN_FUNCPTR *_ptrc_glBindBuffer)(GLenum target, GLuint buffer); -#define glBindBuffer _ptrc_glBindBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glBufferData)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); -#define glBufferData _ptrc_glBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); -#define glBufferSubData _ptrc_glBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteBuffers)(GLsizei n, const GLuint * buffers); -#define glDeleteBuffers _ptrc_glDeleteBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteQueries)(GLsizei n, const GLuint * ids); -#define glDeleteQueries _ptrc_glDeleteQueries -extern void (CODEGEN_FUNCPTR *_ptrc_glEndQuery)(GLenum target); -#define glEndQuery _ptrc_glEndQuery -extern void (CODEGEN_FUNCPTR *_ptrc_glGenBuffers)(GLsizei n, GLuint * buffers); -#define glGenBuffers _ptrc_glGenBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glGenQueries)(GLsizei n, GLuint * ids); -#define glGenQueries _ptrc_glGenQueries -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBufferParameteriv)(GLenum target, GLenum pname, GLint * params); -#define glGetBufferParameteriv _ptrc_glGetBufferParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBufferPointerv)(GLenum target, GLenum pname, void ** params); -#define glGetBufferPointerv _ptrc_glGetBufferPointerv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void * data); -#define glGetBufferSubData _ptrc_glGetBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectiv)(GLuint id, GLenum pname, GLint * params); -#define glGetQueryObjectiv _ptrc_glGetQueryObjectiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params); -#define glGetQueryObjectuiv _ptrc_glGetQueryObjectuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryiv)(GLenum target, GLenum pname, GLint * params); -#define glGetQueryiv _ptrc_glGetQueryiv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsBuffer)(GLuint buffer); -#define glIsBuffer _ptrc_glIsBuffer -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsQuery)(GLuint id); -#define glIsQuery _ptrc_glIsQuery -extern void * (CODEGEN_FUNCPTR *_ptrc_glMapBuffer)(GLenum target, GLenum access); -#define glMapBuffer _ptrc_glMapBuffer -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glUnmapBuffer)(GLenum target); -#define glUnmapBuffer _ptrc_glUnmapBuffer - -extern void (CODEGEN_FUNCPTR *_ptrc_glAttachShader)(GLuint program, GLuint shader); -#define glAttachShader _ptrc_glAttachShader -extern void (CODEGEN_FUNCPTR *_ptrc_glBindAttribLocation)(GLuint program, GLuint index, const GLchar * name); -#define glBindAttribLocation _ptrc_glBindAttribLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); -#define glBlendEquationSeparate _ptrc_glBlendEquationSeparate -extern void (CODEGEN_FUNCPTR *_ptrc_glCompileShader)(GLuint shader); -#define glCompileShader _ptrc_glCompileShader -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateProgram)(void); -#define glCreateProgram _ptrc_glCreateProgram -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateShader)(GLenum type); -#define glCreateShader _ptrc_glCreateShader -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteProgram)(GLuint program); -#define glDeleteProgram _ptrc_glDeleteProgram -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteShader)(GLuint shader); -#define glDeleteShader _ptrc_glDeleteShader -extern void (CODEGEN_FUNCPTR *_ptrc_glDetachShader)(GLuint program, GLuint shader); -#define glDetachShader _ptrc_glDetachShader -extern void (CODEGEN_FUNCPTR *_ptrc_glDisableVertexAttribArray)(GLuint index); -#define glDisableVertexAttribArray _ptrc_glDisableVertexAttribArray -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawBuffers)(GLsizei n, const GLenum * bufs); -#define glDrawBuffers _ptrc_glDrawBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glEnableVertexAttribArray)(GLuint index); -#define glEnableVertexAttribArray _ptrc_glEnableVertexAttribArray -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); -#define glGetActiveAttrib _ptrc_glGetActiveAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); -#define glGetActiveUniform _ptrc_glGetActiveUniform -extern void (CODEGEN_FUNCPTR *_ptrc_glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); -#define glGetAttachedShaders _ptrc_glGetAttachedShaders -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetAttribLocation)(GLuint program, const GLchar * name); -#define glGetAttribLocation _ptrc_glGetAttribLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); -#define glGetProgramInfoLog _ptrc_glGetProgramInfoLog -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramiv)(GLuint program, GLenum pname, GLint * params); -#define glGetProgramiv _ptrc_glGetProgramiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); -#define glGetShaderInfoLog _ptrc_glGetShaderInfoLog -extern void (CODEGEN_FUNCPTR *_ptrc_glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); -#define glGetShaderSource _ptrc_glGetShaderSource -extern void (CODEGEN_FUNCPTR *_ptrc_glGetShaderiv)(GLuint shader, GLenum pname, GLint * params); -#define glGetShaderiv _ptrc_glGetShaderiv -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetUniformLocation)(GLuint program, const GLchar * name); -#define glGetUniformLocation _ptrc_glGetUniformLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformfv)(GLuint program, GLint location, GLfloat * params); -#define glGetUniformfv _ptrc_glGetUniformfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformiv)(GLuint program, GLint location, GLint * params); -#define glGetUniformiv _ptrc_glGetUniformiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribPointerv)(GLuint index, GLenum pname, void ** pointer); -#define glGetVertexAttribPointerv _ptrc_glGetVertexAttribPointerv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params); -#define glGetVertexAttribdv _ptrc_glGetVertexAttribdv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params); -#define glGetVertexAttribfv _ptrc_glGetVertexAttribfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribiv)(GLuint index, GLenum pname, GLint * params); -#define glGetVertexAttribiv _ptrc_glGetVertexAttribiv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsProgram)(GLuint program); -#define glIsProgram _ptrc_glIsProgram -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsShader)(GLuint shader); -#define glIsShader _ptrc_glIsShader -extern void (CODEGEN_FUNCPTR *_ptrc_glLinkProgram)(GLuint program); -#define glLinkProgram _ptrc_glLinkProgram -extern void (CODEGEN_FUNCPTR *_ptrc_glShaderSource)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); -#define glShaderSource _ptrc_glShaderSource -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); -#define glStencilFuncSeparate _ptrc_glStencilFuncSeparate -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilMaskSeparate)(GLenum face, GLuint mask); -#define glStencilMaskSeparate _ptrc_glStencilMaskSeparate -extern void (CODEGEN_FUNCPTR *_ptrc_glStencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -#define glStencilOpSeparate _ptrc_glStencilOpSeparate -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1f)(GLint location, GLfloat v0); -#define glUniform1f _ptrc_glUniform1f -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1fv)(GLint location, GLsizei count, const GLfloat * value); -#define glUniform1fv _ptrc_glUniform1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1i)(GLint location, GLint v0); -#define glUniform1i _ptrc_glUniform1i -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1iv)(GLint location, GLsizei count, const GLint * value); -#define glUniform1iv _ptrc_glUniform1iv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2f)(GLint location, GLfloat v0, GLfloat v1); -#define glUniform2f _ptrc_glUniform2f -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2fv)(GLint location, GLsizei count, const GLfloat * value); -#define glUniform2fv _ptrc_glUniform2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2i)(GLint location, GLint v0, GLint v1); -#define glUniform2i _ptrc_glUniform2i -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2iv)(GLint location, GLsizei count, const GLint * value); -#define glUniform2iv _ptrc_glUniform2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -#define glUniform3f _ptrc_glUniform3f -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3fv)(GLint location, GLsizei count, const GLfloat * value); -#define glUniform3fv _ptrc_glUniform3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2); -#define glUniform3i _ptrc_glUniform3i -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3iv)(GLint location, GLsizei count, const GLint * value); -#define glUniform3iv _ptrc_glUniform3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -#define glUniform4f _ptrc_glUniform4f -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4fv)(GLint location, GLsizei count, const GLfloat * value); -#define glUniform4fv _ptrc_glUniform4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -#define glUniform4i _ptrc_glUniform4i -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4iv)(GLint location, GLsizei count, const GLint * value); -#define glUniform4iv _ptrc_glUniform4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix2fv _ptrc_glUniformMatrix2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix3fv _ptrc_glUniformMatrix3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix4fv _ptrc_glUniformMatrix4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUseProgram)(GLuint program); -#define glUseProgram _ptrc_glUseProgram -extern void (CODEGEN_FUNCPTR *_ptrc_glValidateProgram)(GLuint program); -#define glValidateProgram _ptrc_glValidateProgram -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1d)(GLuint index, GLdouble x); -#define glVertexAttrib1d _ptrc_glVertexAttrib1d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1dv)(GLuint index, const GLdouble * v); -#define glVertexAttrib1dv _ptrc_glVertexAttrib1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1f)(GLuint index, GLfloat x); -#define glVertexAttrib1f _ptrc_glVertexAttrib1f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1fv)(GLuint index, const GLfloat * v); -#define glVertexAttrib1fv _ptrc_glVertexAttrib1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1s)(GLuint index, GLshort x); -#define glVertexAttrib1s _ptrc_glVertexAttrib1s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib1sv)(GLuint index, const GLshort * v); -#define glVertexAttrib1sv _ptrc_glVertexAttrib1sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); -#define glVertexAttrib2d _ptrc_glVertexAttrib2d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2dv)(GLuint index, const GLdouble * v); -#define glVertexAttrib2dv _ptrc_glVertexAttrib2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); -#define glVertexAttrib2f _ptrc_glVertexAttrib2f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2fv)(GLuint index, const GLfloat * v); -#define glVertexAttrib2fv _ptrc_glVertexAttrib2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2s)(GLuint index, GLshort x, GLshort y); -#define glVertexAttrib2s _ptrc_glVertexAttrib2s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib2sv)(GLuint index, const GLshort * v); -#define glVertexAttrib2sv _ptrc_glVertexAttrib2sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -#define glVertexAttrib3d _ptrc_glVertexAttrib3d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3dv)(GLuint index, const GLdouble * v); -#define glVertexAttrib3dv _ptrc_glVertexAttrib3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -#define glVertexAttrib3f _ptrc_glVertexAttrib3f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3fv)(GLuint index, const GLfloat * v); -#define glVertexAttrib3fv _ptrc_glVertexAttrib3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z); -#define glVertexAttrib3s _ptrc_glVertexAttrib3s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib3sv)(GLuint index, const GLshort * v); -#define glVertexAttrib3sv _ptrc_glVertexAttrib3sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nbv)(GLuint index, const GLbyte * v); -#define glVertexAttrib4Nbv _ptrc_glVertexAttrib4Nbv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Niv)(GLuint index, const GLint * v); -#define glVertexAttrib4Niv _ptrc_glVertexAttrib4Niv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nsv)(GLuint index, const GLshort * v); -#define glVertexAttrib4Nsv _ptrc_glVertexAttrib4Nsv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -#define glVertexAttrib4Nub _ptrc_glVertexAttrib4Nub -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nubv)(GLuint index, const GLubyte * v); -#define glVertexAttrib4Nubv _ptrc_glVertexAttrib4Nubv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nuiv)(GLuint index, const GLuint * v); -#define glVertexAttrib4Nuiv _ptrc_glVertexAttrib4Nuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4Nusv)(GLuint index, const GLushort * v); -#define glVertexAttrib4Nusv _ptrc_glVertexAttrib4Nusv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4bv)(GLuint index, const GLbyte * v); -#define glVertexAttrib4bv _ptrc_glVertexAttrib4bv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -#define glVertexAttrib4d _ptrc_glVertexAttrib4d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4dv)(GLuint index, const GLdouble * v); -#define glVertexAttrib4dv _ptrc_glVertexAttrib4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -#define glVertexAttrib4f _ptrc_glVertexAttrib4f -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4fv)(GLuint index, const GLfloat * v); -#define glVertexAttrib4fv _ptrc_glVertexAttrib4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4iv)(GLuint index, const GLint * v); -#define glVertexAttrib4iv _ptrc_glVertexAttrib4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -#define glVertexAttrib4s _ptrc_glVertexAttrib4s -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4sv)(GLuint index, const GLshort * v); -#define glVertexAttrib4sv _ptrc_glVertexAttrib4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4ubv)(GLuint index, const GLubyte * v); -#define glVertexAttrib4ubv _ptrc_glVertexAttrib4ubv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4uiv)(GLuint index, const GLuint * v); -#define glVertexAttrib4uiv _ptrc_glVertexAttrib4uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttrib4usv)(GLuint index, const GLushort * v); -#define glVertexAttrib4usv _ptrc_glVertexAttrib4usv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); -#define glVertexAttribPointer _ptrc_glVertexAttribPointer - -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix2x3fv _ptrc_glUniformMatrix2x3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix2x4fv _ptrc_glUniformMatrix2x4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix3x2fv _ptrc_glUniformMatrix3x2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix3x4fv _ptrc_glUniformMatrix3x4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix4x2fv _ptrc_glUniformMatrix4x2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glUniformMatrix4x3fv _ptrc_glUniformMatrix4x3fv - -extern void (CODEGEN_FUNCPTR *_ptrc_glBeginConditionalRender)(GLuint id, GLenum mode); -#define glBeginConditionalRender _ptrc_glBeginConditionalRender -extern void (CODEGEN_FUNCPTR *_ptrc_glBeginTransformFeedback)(GLenum primitiveMode); -#define glBeginTransformFeedback _ptrc_glBeginTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glBindBufferBase)(GLenum target, GLuint index, GLuint buffer); -#define glBindBufferBase _ptrc_glBindBufferBase -extern void (CODEGEN_FUNCPTR *_ptrc_glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -#define glBindBufferRange _ptrc_glBindBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glBindFragDataLocation)(GLuint program, GLuint color, const GLchar * name); -#define glBindFragDataLocation _ptrc_glBindFragDataLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glBindFramebuffer)(GLenum target, GLuint framebuffer); -#define glBindFramebuffer _ptrc_glBindFramebuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glBindRenderbuffer)(GLenum target, GLuint renderbuffer); -#define glBindRenderbuffer _ptrc_glBindRenderbuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glBindVertexArray)(GLuint ren_array); -#define glBindVertexArray _ptrc_glBindVertexArray -extern void (CODEGEN_FUNCPTR *_ptrc_glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#define glBlitFramebuffer _ptrc_glBlitFramebuffer -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckFramebufferStatus)(GLenum target); -#define glCheckFramebufferStatus _ptrc_glCheckFramebufferStatus -extern void (CODEGEN_FUNCPTR *_ptrc_glClampColor)(GLenum target, GLenum clamp); -#define glClampColor _ptrc_glClampColor -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -#define glClearBufferfi _ptrc_glClearBufferfi -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value); -#define glClearBufferfv _ptrc_glClearBufferfv -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value); -#define glClearBufferiv _ptrc_glClearBufferiv -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value); -#define glClearBufferuiv _ptrc_glClearBufferuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -#define glColorMaski _ptrc_glColorMaski -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteFramebuffers)(GLsizei n, const GLuint * framebuffers); -#define glDeleteFramebuffers _ptrc_glDeleteFramebuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers); -#define glDeleteRenderbuffers _ptrc_glDeleteRenderbuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteVertexArrays)(GLsizei n, const GLuint * arrays); -#define glDeleteVertexArrays _ptrc_glDeleteVertexArrays -extern void (CODEGEN_FUNCPTR *_ptrc_glDisablei)(GLenum target, GLuint index); -#define glDisablei _ptrc_glDisablei -extern void (CODEGEN_FUNCPTR *_ptrc_glEnablei)(GLenum target, GLuint index); -#define glEnablei _ptrc_glEnablei -extern void (CODEGEN_FUNCPTR *_ptrc_glEndConditionalRender)(void); -#define glEndConditionalRender _ptrc_glEndConditionalRender -extern void (CODEGEN_FUNCPTR *_ptrc_glEndTransformFeedback)(void); -#define glEndTransformFeedback _ptrc_glEndTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); -#define glFlushMappedBufferRange _ptrc_glFlushMappedBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -#define glFramebufferRenderbuffer _ptrc_glFramebufferRenderbuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -#define glFramebufferTexture1D _ptrc_glFramebufferTexture1D -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -#define glFramebufferTexture2D _ptrc_glFramebufferTexture2D -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#define glFramebufferTexture3D _ptrc_glFramebufferTexture3D -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -#define glFramebufferTextureLayer _ptrc_glFramebufferTextureLayer -extern void (CODEGEN_FUNCPTR *_ptrc_glGenFramebuffers)(GLsizei n, GLuint * framebuffers); -#define glGenFramebuffers _ptrc_glGenFramebuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glGenRenderbuffers)(GLsizei n, GLuint * renderbuffers); -#define glGenRenderbuffers _ptrc_glGenRenderbuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glGenVertexArrays)(GLsizei n, GLuint * arrays); -#define glGenVertexArrays _ptrc_glGenVertexArrays -extern void (CODEGEN_FUNCPTR *_ptrc_glGenerateMipmap)(GLenum target); -#define glGenerateMipmap _ptrc_glGenerateMipmap -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBooleani_v)(GLenum target, GLuint index, GLboolean * data); -#define glGetBooleani_v _ptrc_glGetBooleani_v -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetFragDataLocation)(GLuint program, const GLchar * name); -#define glGetFragDataLocation _ptrc_glGetFragDataLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params); -#define glGetFramebufferAttachmentParameteriv _ptrc_glGetFramebufferAttachmentParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetIntegeri_v)(GLenum target, GLuint index, GLint * data); -#define glGetIntegeri_v _ptrc_glGetIntegeri_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params); -#define glGetRenderbufferParameteriv _ptrc_glGetRenderbufferParameteriv -extern const GLubyte * (CODEGEN_FUNCPTR *_ptrc_glGetStringi)(GLenum name, GLuint index); -#define glGetStringi _ptrc_glGetStringi -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterIiv)(GLenum target, GLenum pname, GLint * params); -#define glGetTexParameterIiv _ptrc_glGetTexParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params); -#define glGetTexParameterIuiv _ptrc_glGetTexParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); -#define glGetTransformFeedbackVarying _ptrc_glGetTransformFeedbackVarying -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformuiv)(GLuint program, GLint location, GLuint * params); -#define glGetUniformuiv _ptrc_glGetUniformuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params); -#define glGetVertexAttribIiv _ptrc_glGetVertexAttribIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params); -#define glGetVertexAttribIuiv _ptrc_glGetVertexAttribIuiv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsEnabledi)(GLenum target, GLuint index); -#define glIsEnabledi _ptrc_glIsEnabledi -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsFramebuffer)(GLuint framebuffer); -#define glIsFramebuffer _ptrc_glIsFramebuffer -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsRenderbuffer)(GLuint renderbuffer); -#define glIsRenderbuffer _ptrc_glIsRenderbuffer -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsVertexArray)(GLuint ren_array); -#define glIsVertexArray _ptrc_glIsVertexArray -extern void * (CODEGEN_FUNCPTR *_ptrc_glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -#define glMapBufferRange _ptrc_glMapBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -#define glRenderbufferStorage _ptrc_glRenderbufferStorage -extern void (CODEGEN_FUNCPTR *_ptrc_glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#define glRenderbufferStorageMultisample _ptrc_glRenderbufferStorageMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameterIiv)(GLenum target, GLenum pname, const GLint * params); -#define glTexParameterIiv _ptrc_glTexParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glTexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params); -#define glTexParameterIuiv _ptrc_glTexParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); -#define glTransformFeedbackVaryings _ptrc_glTransformFeedbackVaryings -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1ui)(GLint location, GLuint v0); -#define glUniform1ui _ptrc_glUniform1ui -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1uiv)(GLint location, GLsizei count, const GLuint * value); -#define glUniform1uiv _ptrc_glUniform1uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2ui)(GLint location, GLuint v0, GLuint v1); -#define glUniform2ui _ptrc_glUniform2ui -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2uiv)(GLint location, GLsizei count, const GLuint * value); -#define glUniform2uiv _ptrc_glUniform2uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); -#define glUniform3ui _ptrc_glUniform3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3uiv)(GLint location, GLsizei count, const GLuint * value); -#define glUniform3uiv _ptrc_glUniform3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -#define glUniform4ui _ptrc_glUniform4ui -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4uiv)(GLint location, GLsizei count, const GLuint * value); -#define glUniform4uiv _ptrc_glUniform4uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1i)(GLuint index, GLint x); -#define glVertexAttribI1i _ptrc_glVertexAttribI1i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1iv)(GLuint index, const GLint * v); -#define glVertexAttribI1iv _ptrc_glVertexAttribI1iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1ui)(GLuint index, GLuint x); -#define glVertexAttribI1ui _ptrc_glVertexAttribI1ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI1uiv)(GLuint index, const GLuint * v); -#define glVertexAttribI1uiv _ptrc_glVertexAttribI1uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2i)(GLuint index, GLint x, GLint y); -#define glVertexAttribI2i _ptrc_glVertexAttribI2i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2iv)(GLuint index, const GLint * v); -#define glVertexAttribI2iv _ptrc_glVertexAttribI2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2ui)(GLuint index, GLuint x, GLuint y); -#define glVertexAttribI2ui _ptrc_glVertexAttribI2ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI2uiv)(GLuint index, const GLuint * v); -#define glVertexAttribI2uiv _ptrc_glVertexAttribI2uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); -#define glVertexAttribI3i _ptrc_glVertexAttribI3i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3iv)(GLuint index, const GLint * v); -#define glVertexAttribI3iv _ptrc_glVertexAttribI3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); -#define glVertexAttribI3ui _ptrc_glVertexAttribI3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI3uiv)(GLuint index, const GLuint * v); -#define glVertexAttribI3uiv _ptrc_glVertexAttribI3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4bv)(GLuint index, const GLbyte * v); -#define glVertexAttribI4bv _ptrc_glVertexAttribI4bv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); -#define glVertexAttribI4i _ptrc_glVertexAttribI4i -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4iv)(GLuint index, const GLint * v); -#define glVertexAttribI4iv _ptrc_glVertexAttribI4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4sv)(GLuint index, const GLshort * v); -#define glVertexAttribI4sv _ptrc_glVertexAttribI4sv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4ubv)(GLuint index, const GLubyte * v); -#define glVertexAttribI4ubv _ptrc_glVertexAttribI4ubv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -#define glVertexAttribI4ui _ptrc_glVertexAttribI4ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4uiv)(GLuint index, const GLuint * v); -#define glVertexAttribI4uiv _ptrc_glVertexAttribI4uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribI4usv)(GLuint index, const GLushort * v); -#define glVertexAttribI4usv _ptrc_glVertexAttribI4usv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glVertexAttribIPointer _ptrc_glVertexAttribIPointer - -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -#define glCopyBufferSubData _ptrc_glCopyBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -#define glDrawArraysInstanced _ptrc_glDrawArraysInstanced -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount); -#define glDrawElementsInstanced _ptrc_glDrawElementsInstanced -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName); -#define glGetActiveUniformBlockName _ptrc_glGetActiveUniformBlockName -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params); -#define glGetActiveUniformBlockiv _ptrc_glGetActiveUniformBlockiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName); -#define glGetActiveUniformName _ptrc_glGetActiveUniformName -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params); -#define glGetActiveUniformsiv _ptrc_glGetActiveUniformsiv -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGetUniformBlockIndex)(GLuint program, const GLchar * uniformBlockName); -#define glGetUniformBlockIndex _ptrc_glGetUniformBlockIndex -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices); -#define glGetUniformIndices _ptrc_glGetUniformIndices -extern void (CODEGEN_FUNCPTR *_ptrc_glPrimitiveRestartIndex)(GLuint index); -#define glPrimitiveRestartIndex _ptrc_glPrimitiveRestartIndex -extern void (CODEGEN_FUNCPTR *_ptrc_glTexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); -#define glTexBuffer _ptrc_glTexBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -#define glUniformBlockBinding _ptrc_glUniformBlockBinding - -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); -#define glClientWaitSync _ptrc_glClientWaitSync -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteSync)(GLsync sync); -#define glDeleteSync _ptrc_glDeleteSync -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex); -#define glDrawElementsBaseVertex _ptrc_glDrawElementsBaseVertex -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex); -#define glDrawElementsInstancedBaseVertex _ptrc_glDrawElementsInstancedBaseVertex -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex); -#define glDrawRangeElementsBaseVertex _ptrc_glDrawRangeElementsBaseVertex -extern GLsync (CODEGEN_FUNCPTR *_ptrc_glFenceSync)(GLenum condition, GLbitfield flags); -#define glFenceSync _ptrc_glFenceSync -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); -#define glFramebufferTexture _ptrc_glFramebufferTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params); -#define glGetBufferParameteri64v _ptrc_glGetBufferParameteri64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetInteger64i_v)(GLenum target, GLuint index, GLint64 * data); -#define glGetInteger64i_v _ptrc_glGetInteger64i_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetInteger64v)(GLenum pname, GLint64 * data); -#define glGetInteger64v _ptrc_glGetInteger64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetMultisamplefv)(GLenum pname, GLuint index, GLfloat * val); -#define glGetMultisamplefv _ptrc_glGetMultisamplefv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); -#define glGetSynciv _ptrc_glGetSynciv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsSync)(GLsync sync); -#define glIsSync _ptrc_glIsSync -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex); -#define glMultiDrawElementsBaseVertex _ptrc_glMultiDrawElementsBaseVertex -extern void (CODEGEN_FUNCPTR *_ptrc_glProvokingVertex)(GLenum mode); -#define glProvokingVertex _ptrc_glProvokingVertex -extern void (CODEGEN_FUNCPTR *_ptrc_glSampleMaski)(GLuint maskNumber, GLbitfield mask); -#define glSampleMaski _ptrc_glSampleMaski -extern void (CODEGEN_FUNCPTR *_ptrc_glTexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -#define glTexImage2DMultisample _ptrc_glTexImage2DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -#define glTexImage3DMultisample _ptrc_glTexImage3DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); -#define glWaitSync _ptrc_glWaitSync - -extern void (CODEGEN_FUNCPTR *_ptrc_glBindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); -#define glBindFragDataLocationIndexed _ptrc_glBindFragDataLocationIndexed -extern void (CODEGEN_FUNCPTR *_ptrc_glBindSampler)(GLuint unit, GLuint sampler); -#define glBindSampler _ptrc_glBindSampler -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteSamplers)(GLsizei count, const GLuint * samplers); -#define glDeleteSamplers _ptrc_glDeleteSamplers -extern void (CODEGEN_FUNCPTR *_ptrc_glGenSamplers)(GLsizei count, GLuint * samplers); -#define glGenSamplers _ptrc_glGenSamplers -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetFragDataIndex)(GLuint program, const GLchar * name); -#define glGetFragDataIndex _ptrc_glGetFragDataIndex -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 * params); -#define glGetQueryObjecti64v _ptrc_glGetQueryObjecti64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 * params); -#define glGetQueryObjectui64v _ptrc_glGetQueryObjectui64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params); -#define glGetSamplerParameterIiv _ptrc_glGetSamplerParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params); -#define glGetSamplerParameterIuiv _ptrc_glGetSamplerParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params); -#define glGetSamplerParameterfv _ptrc_glGetSamplerParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params); -#define glGetSamplerParameteriv _ptrc_glGetSamplerParameteriv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsSampler)(GLuint sampler); -#define glIsSampler _ptrc_glIsSampler -extern void (CODEGEN_FUNCPTR *_ptrc_glQueryCounter)(GLuint id, GLenum target); -#define glQueryCounter _ptrc_glQueryCounter -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * param); -#define glSamplerParameterIiv _ptrc_glSamplerParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * param); -#define glSamplerParameterIuiv _ptrc_glSamplerParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); -#define glSamplerParameterf _ptrc_glSamplerParameterf -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * param); -#define glSamplerParameterfv _ptrc_glSamplerParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param); -#define glSamplerParameteri _ptrc_glSamplerParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * param); -#define glSamplerParameteriv _ptrc_glSamplerParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribDivisor)(GLuint index, GLuint divisor); -#define glVertexAttribDivisor _ptrc_glVertexAttribDivisor -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -#define glVertexAttribP1ui _ptrc_glVertexAttribP1ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); -#define glVertexAttribP1uiv _ptrc_glVertexAttribP1uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -#define glVertexAttribP2ui _ptrc_glVertexAttribP2ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); -#define glVertexAttribP2uiv _ptrc_glVertexAttribP2uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -#define glVertexAttribP3ui _ptrc_glVertexAttribP3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); -#define glVertexAttribP3uiv _ptrc_glVertexAttribP3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -#define glVertexAttribP4ui _ptrc_glVertexAttribP4ui -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); -#define glVertexAttribP4uiv _ptrc_glVertexAttribP4uiv - -extern void (CODEGEN_FUNCPTR *_ptrc_glBeginQueryIndexed)(GLenum target, GLuint index, GLuint id); -#define glBeginQueryIndexed _ptrc_glBeginQueryIndexed -extern void (CODEGEN_FUNCPTR *_ptrc_glBindTransformFeedback)(GLenum target, GLuint id); -#define glBindTransformFeedback _ptrc_glBindTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); -#define glBlendEquationSeparatei _ptrc_glBlendEquationSeparatei -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendEquationi)(GLuint buf, GLenum mode); -#define glBlendEquationi _ptrc_glBlendEquationi -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -#define glBlendFuncSeparatei _ptrc_glBlendFuncSeparatei -extern void (CODEGEN_FUNCPTR *_ptrc_glBlendFunci)(GLuint buf, GLenum src, GLenum dst); -#define glBlendFunci _ptrc_glBlendFunci -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); -#define glDeleteTransformFeedbacks _ptrc_glDeleteTransformFeedbacks -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysIndirect)(GLenum mode, const void * indirect); -#define glDrawArraysIndirect _ptrc_glDrawArraysIndirect -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect); -#define glDrawElementsIndirect _ptrc_glDrawElementsIndirect -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedback)(GLenum mode, GLuint id); -#define glDrawTransformFeedback _ptrc_glDrawTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream); -#define glDrawTransformFeedbackStream _ptrc_glDrawTransformFeedbackStream -extern void (CODEGEN_FUNCPTR *_ptrc_glEndQueryIndexed)(GLenum target, GLuint index); -#define glEndQueryIndexed _ptrc_glEndQueryIndexed -extern void (CODEGEN_FUNCPTR *_ptrc_glGenTransformFeedbacks)(GLsizei n, GLuint * ids); -#define glGenTransformFeedbacks _ptrc_glGenTransformFeedbacks -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name); -#define glGetActiveSubroutineName _ptrc_glGetActiveSubroutineName -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name); -#define glGetActiveSubroutineUniformName _ptrc_glGetActiveSubroutineUniformName -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values); -#define glGetActiveSubroutineUniformiv _ptrc_glGetActiveSubroutineUniformiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint * values); -#define glGetProgramStageiv _ptrc_glGetProgramStageiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint * params); -#define glGetQueryIndexediv _ptrc_glGetQueryIndexediv -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar * name); -#define glGetSubroutineIndex _ptrc_glGetSubroutineIndex -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar * name); -#define glGetSubroutineUniformLocation _ptrc_glGetSubroutineUniformLocation -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint * params); -#define glGetUniformSubroutineuiv _ptrc_glGetUniformSubroutineuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetUniformdv)(GLuint program, GLint location, GLdouble * params); -#define glGetUniformdv _ptrc_glGetUniformdv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsTransformFeedback)(GLuint id); -#define glIsTransformFeedback _ptrc_glIsTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glMinSampleShading)(GLfloat value); -#define glMinSampleShading _ptrc_glMinSampleShading -extern void (CODEGEN_FUNCPTR *_ptrc_glPatchParameterfv)(GLenum pname, const GLfloat * values); -#define glPatchParameterfv _ptrc_glPatchParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glPatchParameteri)(GLenum pname, GLint value); -#define glPatchParameteri _ptrc_glPatchParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glPauseTransformFeedback)(void); -#define glPauseTransformFeedback _ptrc_glPauseTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glResumeTransformFeedback)(void); -#define glResumeTransformFeedback _ptrc_glResumeTransformFeedback -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1d)(GLint location, GLdouble x); -#define glUniform1d _ptrc_glUniform1d -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform1dv)(GLint location, GLsizei count, const GLdouble * value); -#define glUniform1dv _ptrc_glUniform1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2d)(GLint location, GLdouble x, GLdouble y); -#define glUniform2d _ptrc_glUniform2d -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform2dv)(GLint location, GLsizei count, const GLdouble * value); -#define glUniform2dv _ptrc_glUniform2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z); -#define glUniform3d _ptrc_glUniform3d -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform3dv)(GLint location, GLsizei count, const GLdouble * value); -#define glUniform3dv _ptrc_glUniform3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -#define glUniform4d _ptrc_glUniform4d -extern void (CODEGEN_FUNCPTR *_ptrc_glUniform4dv)(GLint location, GLsizei count, const GLdouble * value); -#define glUniform4dv _ptrc_glUniform4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix2dv _ptrc_glUniformMatrix2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix2x3dv _ptrc_glUniformMatrix2x3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix2x4dv _ptrc_glUniformMatrix2x4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix3dv _ptrc_glUniformMatrix3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix3x2dv _ptrc_glUniformMatrix3x2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix3x4dv _ptrc_glUniformMatrix3x4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix4dv _ptrc_glUniformMatrix4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix4x2dv _ptrc_glUniformMatrix4x2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glUniformMatrix4x3dv _ptrc_glUniformMatrix4x3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glUniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint * indices); -#define glUniformSubroutinesuiv _ptrc_glUniformSubroutinesuiv - -extern void (CODEGEN_FUNCPTR *_ptrc_glActiveShaderProgram)(GLuint pipeline, GLuint program); -#define glActiveShaderProgram _ptrc_glActiveShaderProgram -extern void (CODEGEN_FUNCPTR *_ptrc_glBindProgramPipeline)(GLuint pipeline); -#define glBindProgramPipeline _ptrc_glBindProgramPipeline -extern void (CODEGEN_FUNCPTR *_ptrc_glClearDepthf)(GLfloat d); -#define glClearDepthf _ptrc_glClearDepthf -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glCreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const* strings); -#define glCreateShaderProgramv _ptrc_glCreateShaderProgramv -extern void (CODEGEN_FUNCPTR *_ptrc_glDeleteProgramPipelines)(GLsizei n, const GLuint * pipelines); -#define glDeleteProgramPipelines _ptrc_glDeleteProgramPipelines -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble * v); -#define glDepthRangeArrayv _ptrc_glDepthRangeArrayv -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f); -#define glDepthRangeIndexed _ptrc_glDepthRangeIndexed -extern void (CODEGEN_FUNCPTR *_ptrc_glDepthRangef)(GLfloat n, GLfloat f); -#define glDepthRangef _ptrc_glDepthRangef -extern void (CODEGEN_FUNCPTR *_ptrc_glGenProgramPipelines)(GLsizei n, GLuint * pipelines); -#define glGenProgramPipelines _ptrc_glGenProgramPipelines -extern void (CODEGEN_FUNCPTR *_ptrc_glGetDoublei_v)(GLenum target, GLuint index, GLdouble * data); -#define glGetDoublei_v _ptrc_glGetDoublei_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetFloati_v)(GLenum target, GLuint index, GLfloat * data); -#define glGetFloati_v _ptrc_glGetFloati_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary); -#define glGetProgramBinary _ptrc_glGetProgramBinary -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog); -#define glGetProgramPipelineInfoLog _ptrc_glGetProgramPipelineInfoLog -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint * params); -#define glGetProgramPipelineiv _ptrc_glGetProgramPipelineiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); -#define glGetShaderPrecisionFormat _ptrc_glGetShaderPrecisionFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble * params); -#define glGetVertexAttribLdv _ptrc_glGetVertexAttribLdv -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glIsProgramPipeline)(GLuint pipeline); -#define glIsProgramPipeline _ptrc_glIsProgramPipeline -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramBinary)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length); -#define glProgramBinary _ptrc_glProgramBinary -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramParameteri)(GLuint program, GLenum pname, GLint value); -#define glProgramParameteri _ptrc_glProgramParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1d)(GLuint program, GLint location, GLdouble v0); -#define glProgramUniform1d _ptrc_glProgramUniform1d -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value); -#define glProgramUniform1dv _ptrc_glProgramUniform1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1f)(GLuint program, GLint location, GLfloat v0); -#define glProgramUniform1f _ptrc_glProgramUniform1f -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); -#define glProgramUniform1fv _ptrc_glProgramUniform1fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1i)(GLuint program, GLint location, GLint v0); -#define glProgramUniform1i _ptrc_glProgramUniform1i -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint * value); -#define glProgramUniform1iv _ptrc_glProgramUniform1iv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1ui)(GLuint program, GLint location, GLuint v0); -#define glProgramUniform1ui _ptrc_glProgramUniform1ui -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); -#define glProgramUniform1uiv _ptrc_glProgramUniform1uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1); -#define glProgramUniform2d _ptrc_glProgramUniform2d -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value); -#define glProgramUniform2dv _ptrc_glProgramUniform2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1); -#define glProgramUniform2f _ptrc_glProgramUniform2f -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); -#define glProgramUniform2fv _ptrc_glProgramUniform2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1); -#define glProgramUniform2i _ptrc_glProgramUniform2i -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint * value); -#define glProgramUniform2iv _ptrc_glProgramUniform2iv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1); -#define glProgramUniform2ui _ptrc_glProgramUniform2ui -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); -#define glProgramUniform2uiv _ptrc_glProgramUniform2uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -#define glProgramUniform3d _ptrc_glProgramUniform3d -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value); -#define glProgramUniform3dv _ptrc_glProgramUniform3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -#define glProgramUniform3f _ptrc_glProgramUniform3f -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); -#define glProgramUniform3fv _ptrc_glProgramUniform3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -#define glProgramUniform3i _ptrc_glProgramUniform3i -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint * value); -#define glProgramUniform3iv _ptrc_glProgramUniform3iv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -#define glProgramUniform3ui _ptrc_glProgramUniform3ui -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); -#define glProgramUniform3uiv _ptrc_glProgramUniform3uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -#define glProgramUniform4d _ptrc_glProgramUniform4d -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value); -#define glProgramUniform4dv _ptrc_glProgramUniform4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -#define glProgramUniform4f _ptrc_glProgramUniform4f -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); -#define glProgramUniform4fv _ptrc_glProgramUniform4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -#define glProgramUniform4i _ptrc_glProgramUniform4i -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint * value); -#define glProgramUniform4iv _ptrc_glProgramUniform4iv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -#define glProgramUniform4ui _ptrc_glProgramUniform4ui -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); -#define glProgramUniform4uiv _ptrc_glProgramUniform4uiv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix2dv _ptrc_glProgramUniformMatrix2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix2fv _ptrc_glProgramUniformMatrix2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix2x3dv _ptrc_glProgramUniformMatrix2x3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix2x3fv _ptrc_glProgramUniformMatrix2x3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix2x4dv _ptrc_glProgramUniformMatrix2x4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix2x4fv _ptrc_glProgramUniformMatrix2x4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix3dv _ptrc_glProgramUniformMatrix3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix3fv _ptrc_glProgramUniformMatrix3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix3x2dv _ptrc_glProgramUniformMatrix3x2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix3x2fv _ptrc_glProgramUniformMatrix3x2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix3x4dv _ptrc_glProgramUniformMatrix3x4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix3x4fv _ptrc_glProgramUniformMatrix3x4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix4dv _ptrc_glProgramUniformMatrix4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix4fv _ptrc_glProgramUniformMatrix4fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix4x2dv _ptrc_glProgramUniformMatrix4x2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix4x2fv _ptrc_glProgramUniformMatrix4x2fv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); -#define glProgramUniformMatrix4x3dv _ptrc_glProgramUniformMatrix4x3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); -#define glProgramUniformMatrix4x3fv _ptrc_glProgramUniformMatrix4x3fv -extern void (CODEGEN_FUNCPTR *_ptrc_glReleaseShaderCompiler)(void); -#define glReleaseShaderCompiler _ptrc_glReleaseShaderCompiler -extern void (CODEGEN_FUNCPTR *_ptrc_glScissorArrayv)(GLuint first, GLsizei count, const GLint * v); -#define glScissorArrayv _ptrc_glScissorArrayv -extern void (CODEGEN_FUNCPTR *_ptrc_glScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -#define glScissorIndexed _ptrc_glScissorIndexed -extern void (CODEGEN_FUNCPTR *_ptrc_glScissorIndexedv)(GLuint index, const GLint * v); -#define glScissorIndexedv _ptrc_glScissorIndexedv -extern void (CODEGEN_FUNCPTR *_ptrc_glShaderBinary)(GLsizei count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length); -#define glShaderBinary _ptrc_glShaderBinary -extern void (CODEGEN_FUNCPTR *_ptrc_glUseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); -#define glUseProgramStages _ptrc_glUseProgramStages -extern void (CODEGEN_FUNCPTR *_ptrc_glValidateProgramPipeline)(GLuint pipeline); -#define glValidateProgramPipeline _ptrc_glValidateProgramPipeline -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL1d)(GLuint index, GLdouble x); -#define glVertexAttribL1d _ptrc_glVertexAttribL1d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL1dv)(GLuint index, const GLdouble * v); -#define glVertexAttribL1dv _ptrc_glVertexAttribL1dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL2d)(GLuint index, GLdouble x, GLdouble y); -#define glVertexAttribL2d _ptrc_glVertexAttribL2d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL2dv)(GLuint index, const GLdouble * v); -#define glVertexAttribL2dv _ptrc_glVertexAttribL2dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -#define glVertexAttribL3d _ptrc_glVertexAttribL3d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL3dv)(GLuint index, const GLdouble * v); -#define glVertexAttribL3dv _ptrc_glVertexAttribL3dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -#define glVertexAttribL4d _ptrc_glVertexAttribL4d -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribL4dv)(GLuint index, const GLdouble * v); -#define glVertexAttribL4dv _ptrc_glVertexAttribL4dv -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); -#define glVertexAttribLPointer _ptrc_glVertexAttribLPointer -extern void (CODEGEN_FUNCPTR *_ptrc_glViewportArrayv)(GLuint first, GLsizei count, const GLfloat * v); -#define glViewportArrayv _ptrc_glViewportArrayv -extern void (CODEGEN_FUNCPTR *_ptrc_glViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -#define glViewportIndexedf _ptrc_glViewportIndexedf -extern void (CODEGEN_FUNCPTR *_ptrc_glViewportIndexedfv)(GLuint index, const GLfloat * v); -#define glViewportIndexedfv _ptrc_glViewportIndexedfv - -extern void (CODEGEN_FUNCPTR *_ptrc_glBindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); -#define glBindImageTexture _ptrc_glBindImageTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -#define glDrawArraysInstancedBaseInstance _ptrc_glDrawArraysInstancedBaseInstance -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance); -#define glDrawElementsInstancedBaseInstance _ptrc_glDrawElementsInstancedBaseInstance -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -#define glDrawElementsInstancedBaseVertexBaseInstance _ptrc_glDrawElementsInstancedBaseVertexBaseInstance -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount); -#define glDrawTransformFeedbackInstanced _ptrc_glDrawTransformFeedbackInstanced -extern void (CODEGEN_FUNCPTR *_ptrc_glDrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -#define glDrawTransformFeedbackStreamInstanced _ptrc_glDrawTransformFeedbackStreamInstanced -extern void (CODEGEN_FUNCPTR *_ptrc_glGetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint * params); -#define glGetActiveAtomicCounterBufferiv _ptrc_glGetActiveAtomicCounterBufferiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params); -#define glGetInternalformativ _ptrc_glGetInternalformativ -extern void (CODEGEN_FUNCPTR *_ptrc_glMemoryBarrier)(GLbitfield barriers); -#define glMemoryBarrier _ptrc_glMemoryBarrier -extern void (CODEGEN_FUNCPTR *_ptrc_glTexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -#define glTexStorage1D _ptrc_glTexStorage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -#define glTexStorage2D _ptrc_glTexStorage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glTexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#define glTexStorage3D _ptrc_glTexStorage3D - -extern void (CODEGEN_FUNCPTR *_ptrc_glBindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -#define glBindVertexBuffer _ptrc_glBindVertexBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data); -#define glClearBufferData _ptrc_glClearBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data); -#define glClearBufferSubData _ptrc_glClearBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_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); -#define glCopyImageSubData _ptrc_glCopyImageSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageCallback)(GLDEBUGPROC callback, const void * userParam); -#define glDebugMessageCallback _ptrc_glDebugMessageCallback -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); -#define glDebugMessageControl _ptrc_glDebugMessageControl -extern void (CODEGEN_FUNCPTR *_ptrc_glDebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); -#define glDebugMessageInsert _ptrc_glDebugMessageInsert -extern void (CODEGEN_FUNCPTR *_ptrc_glDispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -#define glDispatchCompute _ptrc_glDispatchCompute -extern void (CODEGEN_FUNCPTR *_ptrc_glDispatchComputeIndirect)(GLintptr indirect); -#define glDispatchComputeIndirect _ptrc_glDispatchComputeIndirect -extern void (CODEGEN_FUNCPTR *_ptrc_glFramebufferParameteri)(GLenum target, GLenum pname, GLint param); -#define glFramebufferParameteri _ptrc_glFramebufferParameteri -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); -#define glGetDebugMessageLog _ptrc_glGetDebugMessageLog -extern void (CODEGEN_FUNCPTR *_ptrc_glGetFramebufferParameteriv)(GLenum target, GLenum pname, GLint * params); -#define glGetFramebufferParameteriv _ptrc_glGetFramebufferParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params); -#define glGetInternalformati64v _ptrc_glGetInternalformati64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); -#define glGetObjectLabel _ptrc_glGetObjectLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glGetObjectPtrLabel)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); -#define glGetObjectPtrLabel _ptrc_glGetObjectPtrLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint * params); -#define glGetProgramInterfaceiv _ptrc_glGetProgramInterfaceiv -extern GLuint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar * name); -#define glGetProgramResourceIndex _ptrc_glGetProgramResourceIndex -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar * name); -#define glGetProgramResourceLocation _ptrc_glGetProgramResourceLocation -extern GLint (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar * name); -#define glGetProgramResourceLocationIndex _ptrc_glGetProgramResourceLocationIndex -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name); -#define glGetProgramResourceName _ptrc_glGetProgramResourceName -extern void (CODEGEN_FUNCPTR *_ptrc_glGetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params); -#define glGetProgramResourceiv _ptrc_glGetProgramResourceiv -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferData)(GLuint buffer); -#define glInvalidateBufferData _ptrc_glInvalidateBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); -#define glInvalidateBufferSubData _ptrc_glInvalidateBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); -#define glInvalidateFramebuffer _ptrc_glInvalidateFramebuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); -#define glInvalidateSubFramebuffer _ptrc_glInvalidateSubFramebuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexImage)(GLuint texture, GLint level); -#define glInvalidateTexImage _ptrc_glInvalidateTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -#define glInvalidateTexSubImage _ptrc_glInvalidateTexSubImage -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawArraysIndirect)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride); -#define glMultiDrawArraysIndirect _ptrc_glMultiDrawArraysIndirect -extern void (CODEGEN_FUNCPTR *_ptrc_glMultiDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride); -#define glMultiDrawElementsIndirect _ptrc_glMultiDrawElementsIndirect -extern void (CODEGEN_FUNCPTR *_ptrc_glObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); -#define glObjectLabel _ptrc_glObjectLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glObjectPtrLabel)(const void * ptr, GLsizei length, const GLchar * label); -#define glObjectPtrLabel _ptrc_glObjectPtrLabel -extern void (CODEGEN_FUNCPTR *_ptrc_glPopDebugGroup)(void); -#define glPopDebugGroup _ptrc_glPopDebugGroup -extern void (CODEGEN_FUNCPTR *_ptrc_glPushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); -#define glPushDebugGroup _ptrc_glPushDebugGroup -extern void (CODEGEN_FUNCPTR *_ptrc_glShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -#define glShaderStorageBlockBinding _ptrc_glShaderStorageBlockBinding -extern void (CODEGEN_FUNCPTR *_ptrc_glTexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -#define glTexBufferRange _ptrc_glTexBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glTexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -#define glTexStorage2DMultisample _ptrc_glTexStorage2DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -#define glTexStorage3DMultisample _ptrc_glTexStorage3DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -#define glTextureView _ptrc_glTextureView -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribBinding)(GLuint attribindex, GLuint bindingindex); -#define glVertexAttribBinding _ptrc_glVertexAttribBinding -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -#define glVertexAttribFormat _ptrc_glVertexAttribFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -#define glVertexAttribIFormat _ptrc_glVertexAttribIFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -#define glVertexAttribLFormat _ptrc_glVertexAttribLFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexBindingDivisor)(GLuint bindingindex, GLuint divisor); -#define glVertexBindingDivisor _ptrc_glVertexBindingDivisor - -extern void (CODEGEN_FUNCPTR *_ptrc_glBindBuffersBase)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers); -#define glBindBuffersBase _ptrc_glBindBuffersBase -extern void (CODEGEN_FUNCPTR *_ptrc_glBindBuffersRange)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes); -#define glBindBuffersRange _ptrc_glBindBuffersRange -extern void (CODEGEN_FUNCPTR *_ptrc_glBindImageTextures)(GLuint first, GLsizei count, const GLuint * textures); -#define glBindImageTextures _ptrc_glBindImageTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glBindSamplers)(GLuint first, GLsizei count, const GLuint * samplers); -#define glBindSamplers _ptrc_glBindSamplers -extern void (CODEGEN_FUNCPTR *_ptrc_glBindTextures)(GLuint first, GLsizei count, const GLuint * textures); -#define glBindTextures _ptrc_glBindTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glBindVertexBuffers)(GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides); -#define glBindVertexBuffers _ptrc_glBindVertexBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glBufferStorage)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags); -#define glBufferStorage _ptrc_glBufferStorage -extern void (CODEGEN_FUNCPTR *_ptrc_glClearTexImage)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data); -#define glClearTexImage _ptrc_glClearTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glClearTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data); -#define glClearTexSubImage _ptrc_glClearTexSubImage - -extern void (CODEGEN_FUNCPTR *_ptrc_glBindTextureUnit)(GLuint unit, GLuint texture); -#define glBindTextureUnit _ptrc_glBindTextureUnit -extern void (CODEGEN_FUNCPTR *_ptrc_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); -#define glBlitNamedFramebuffer _ptrc_glBlitNamedFramebuffer -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glCheckNamedFramebufferStatus)(GLuint framebuffer, GLenum target); -#define glCheckNamedFramebufferStatus _ptrc_glCheckNamedFramebufferStatus -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedBufferData)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data); -#define glClearNamedBufferData _ptrc_glClearNamedBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedBufferSubData)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data); -#define glClearNamedBufferSubData _ptrc_glClearNamedBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferfi)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat depth, GLint stencil); -#define glClearNamedFramebufferfi _ptrc_glClearNamedFramebufferfi -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferfv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat * value); -#define glClearNamedFramebufferfv _ptrc_glClearNamedFramebufferfv -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint * value); -#define glClearNamedFramebufferiv _ptrc_glClearNamedFramebufferiv -extern void (CODEGEN_FUNCPTR *_ptrc_glClearNamedFramebufferuiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint * value); -#define glClearNamedFramebufferuiv _ptrc_glClearNamedFramebufferuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glClipControl)(GLenum origin, GLenum depth); -#define glClipControl _ptrc_glClipControl -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTextureSubImage1D _ptrc_glCompressedTextureSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTextureSubImage2D _ptrc_glCompressedTextureSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glCompressedTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); -#define glCompressedTextureSubImage3D _ptrc_glCompressedTextureSubImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyNamedBufferSubData)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -#define glCopyNamedBufferSubData _ptrc_glCopyNamedBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -#define glCopyTextureSubImage1D _ptrc_glCopyTextureSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#define glCopyTextureSubImage2D _ptrc_glCopyTextureSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glCopyTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#define glCopyTextureSubImage3D _ptrc_glCopyTextureSubImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateBuffers)(GLsizei n, GLuint * buffers); -#define glCreateBuffers _ptrc_glCreateBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateFramebuffers)(GLsizei n, GLuint * framebuffers); -#define glCreateFramebuffers _ptrc_glCreateFramebuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateProgramPipelines)(GLsizei n, GLuint * pipelines); -#define glCreateProgramPipelines _ptrc_glCreateProgramPipelines -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateQueries)(GLenum target, GLsizei n, GLuint * ids); -#define glCreateQueries _ptrc_glCreateQueries -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateRenderbuffers)(GLsizei n, GLuint * renderbuffers); -#define glCreateRenderbuffers _ptrc_glCreateRenderbuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateSamplers)(GLsizei n, GLuint * samplers); -#define glCreateSamplers _ptrc_glCreateSamplers -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateTextures)(GLenum target, GLsizei n, GLuint * textures); -#define glCreateTextures _ptrc_glCreateTextures -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateTransformFeedbacks)(GLsizei n, GLuint * ids); -#define glCreateTransformFeedbacks _ptrc_glCreateTransformFeedbacks -extern void (CODEGEN_FUNCPTR *_ptrc_glCreateVertexArrays)(GLsizei n, GLuint * arrays); -#define glCreateVertexArrays _ptrc_glCreateVertexArrays -extern void (CODEGEN_FUNCPTR *_ptrc_glDisableVertexArrayAttrib)(GLuint vaobj, GLuint index); -#define glDisableVertexArrayAttrib _ptrc_glDisableVertexArrayAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glEnableVertexArrayAttrib)(GLuint vaobj, GLuint index); -#define glEnableVertexArrayAttrib _ptrc_glEnableVertexArrayAttrib -extern void (CODEGEN_FUNCPTR *_ptrc_glFlushMappedNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length); -#define glFlushMappedNamedBufferRange _ptrc_glFlushMappedNamedBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glGenerateTextureMipmap)(GLuint texture); -#define glGenerateTextureMipmap _ptrc_glGenerateTextureMipmap -extern void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTextureImage)(GLuint texture, GLint level, GLsizei bufSize, void * pixels); -#define glGetCompressedTextureImage _ptrc_glGetCompressedTextureImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetCompressedTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels); -#define glGetCompressedTextureSubImage _ptrc_glGetCompressedTextureSubImage -extern GLenum (CODEGEN_FUNCPTR *_ptrc_glGetGraphicsResetStatus)(void); -#define glGetGraphicsResetStatus _ptrc_glGetGraphicsResetStatus -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferParameteri64v)(GLuint buffer, GLenum pname, GLint64 * params); -#define glGetNamedBufferParameteri64v _ptrc_glGetNamedBufferParameteri64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferParameteriv)(GLuint buffer, GLenum pname, GLint * params); -#define glGetNamedBufferParameteriv _ptrc_glGetNamedBufferParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferPointerv)(GLuint buffer, GLenum pname, void ** params); -#define glGetNamedBufferPointerv _ptrc_glGetNamedBufferPointerv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data); -#define glGetNamedBufferSubData _ptrc_glGetNamedBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedFramebufferAttachmentParameteriv)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params); -#define glGetNamedFramebufferAttachmentParameteriv _ptrc_glGetNamedFramebufferAttachmentParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedFramebufferParameteriv)(GLuint framebuffer, GLenum pname, GLint * param); -#define glGetNamedFramebufferParameteriv _ptrc_glGetNamedFramebufferParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetNamedRenderbufferParameteriv)(GLuint renderbuffer, GLenum pname, GLint * params); -#define glGetNamedRenderbufferParameteriv _ptrc_glGetNamedRenderbufferParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjecti64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -#define glGetQueryBufferObjecti64v _ptrc_glGetQueryBufferObjecti64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -#define glGetQueryBufferObjectiv _ptrc_glGetQueryBufferObjectiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectui64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -#define glGetQueryBufferObjectui64v _ptrc_glGetQueryBufferObjectui64v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetQueryBufferObjectuiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); -#define glGetQueryBufferObjectuiv _ptrc_glGetQueryBufferObjectuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureImage)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); -#define glGetTextureImage _ptrc_glGetTextureImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureLevelParameterfv)(GLuint texture, GLint level, GLenum pname, GLfloat * params); -#define glGetTextureLevelParameterfv _ptrc_glGetTextureLevelParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureLevelParameteriv)(GLuint texture, GLint level, GLenum pname, GLint * params); -#define glGetTextureLevelParameteriv _ptrc_glGetTextureLevelParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterIiv)(GLuint texture, GLenum pname, GLint * params); -#define glGetTextureParameterIiv _ptrc_glGetTextureParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterIuiv)(GLuint texture, GLenum pname, GLuint * params); -#define glGetTextureParameterIuiv _ptrc_glGetTextureParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameterfv)(GLuint texture, GLenum pname, GLfloat * params); -#define glGetTextureParameterfv _ptrc_glGetTextureParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTextureParameteriv)(GLuint texture, GLenum pname, GLint * params); -#define glGetTextureParameteriv _ptrc_glGetTextureParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_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); -#define glGetTextureSubImage _ptrc_glGetTextureSubImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbacki64_v)(GLuint xfb, GLenum pname, GLuint index, GLint64 * param); -#define glGetTransformFeedbacki64_v _ptrc_glGetTransformFeedbacki64_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbacki_v)(GLuint xfb, GLenum pname, GLuint index, GLint * param); -#define glGetTransformFeedbacki_v _ptrc_glGetTransformFeedbacki_v -extern void (CODEGEN_FUNCPTR *_ptrc_glGetTransformFeedbackiv)(GLuint xfb, GLenum pname, GLint * param); -#define glGetTransformFeedbackiv _ptrc_glGetTransformFeedbackiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayIndexed64iv)(GLuint vaobj, GLuint index, GLenum pname, GLint64 * param); -#define glGetVertexArrayIndexed64iv _ptrc_glGetVertexArrayIndexed64iv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayIndexediv)(GLuint vaobj, GLuint index, GLenum pname, GLint * param); -#define glGetVertexArrayIndexediv _ptrc_glGetVertexArrayIndexediv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetVertexArrayiv)(GLuint vaobj, GLenum pname, GLint * param); -#define glGetVertexArrayiv _ptrc_glGetVertexArrayiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnCompressedTexImage)(GLenum target, GLint lod, GLsizei bufSize, void * pixels); -#define glGetnCompressedTexImage _ptrc_glGetnCompressedTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); -#define glGetnTexImage _ptrc_glGetnTexImage -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformdv)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params); -#define glGetnUniformdv _ptrc_glGetnUniformdv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformfv)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params); -#define glGetnUniformfv _ptrc_glGetnUniformfv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformiv)(GLuint program, GLint location, GLsizei bufSize, GLint * params); -#define glGetnUniformiv _ptrc_glGetnUniformiv -extern void (CODEGEN_FUNCPTR *_ptrc_glGetnUniformuiv)(GLuint program, GLint location, GLsizei bufSize, GLuint * params); -#define glGetnUniformuiv _ptrc_glGetnUniformuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateNamedFramebufferData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments); -#define glInvalidateNamedFramebufferData _ptrc_glInvalidateNamedFramebufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glInvalidateNamedFramebufferSubData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); -#define glInvalidateNamedFramebufferSubData _ptrc_glInvalidateNamedFramebufferSubData -extern void * (CODEGEN_FUNCPTR *_ptrc_glMapNamedBuffer)(GLuint buffer, GLenum access); -#define glMapNamedBuffer _ptrc_glMapNamedBuffer -extern void * (CODEGEN_FUNCPTR *_ptrc_glMapNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); -#define glMapNamedBufferRange _ptrc_glMapNamedBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glMemoryBarrierByRegion)(GLbitfield barriers); -#define glMemoryBarrierByRegion _ptrc_glMemoryBarrierByRegion -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferData)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage); -#define glNamedBufferData _ptrc_glNamedBufferData -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferStorage)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags); -#define glNamedBufferStorage _ptrc_glNamedBufferStorage -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data); -#define glNamedBufferSubData _ptrc_glNamedBufferSubData -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferDrawBuffer)(GLuint framebuffer, GLenum buf); -#define glNamedFramebufferDrawBuffer _ptrc_glNamedFramebufferDrawBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferDrawBuffers)(GLuint framebuffer, GLsizei n, const GLenum * bufs); -#define glNamedFramebufferDrawBuffers _ptrc_glNamedFramebufferDrawBuffers -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferParameteri)(GLuint framebuffer, GLenum pname, GLint param); -#define glNamedFramebufferParameteri _ptrc_glNamedFramebufferParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferReadBuffer)(GLuint framebuffer, GLenum src); -#define glNamedFramebufferReadBuffer _ptrc_glNamedFramebufferReadBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferRenderbuffer)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -#define glNamedFramebufferRenderbuffer _ptrc_glNamedFramebufferRenderbuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferTexture)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -#define glNamedFramebufferTexture _ptrc_glNamedFramebufferTexture -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedFramebufferTextureLayer)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -#define glNamedFramebufferTextureLayer _ptrc_glNamedFramebufferTextureLayer -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedRenderbufferStorage)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -#define glNamedRenderbufferStorage _ptrc_glNamedRenderbufferStorage -extern void (CODEGEN_FUNCPTR *_ptrc_glNamedRenderbufferStorageMultisample)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#define glNamedRenderbufferStorageMultisample _ptrc_glNamedRenderbufferStorageMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glReadnPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data); -#define glReadnPixels _ptrc_glReadnPixels -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureBarrier)(void); -#define glTextureBarrier _ptrc_glTextureBarrier -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureBuffer)(GLuint texture, GLenum internalformat, GLuint buffer); -#define glTextureBuffer _ptrc_glTextureBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureBufferRange)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -#define glTextureBufferRange _ptrc_glTextureBufferRange -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterIiv)(GLuint texture, GLenum pname, const GLint * params); -#define glTextureParameterIiv _ptrc_glTextureParameterIiv -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterIuiv)(GLuint texture, GLenum pname, const GLuint * params); -#define glTextureParameterIuiv _ptrc_glTextureParameterIuiv -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterf)(GLuint texture, GLenum pname, GLfloat param); -#define glTextureParameterf _ptrc_glTextureParameterf -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameterfv)(GLuint texture, GLenum pname, const GLfloat * param); -#define glTextureParameterfv _ptrc_glTextureParameterfv -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameteri)(GLuint texture, GLenum pname, GLint param); -#define glTextureParameteri _ptrc_glTextureParameteri -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureParameteriv)(GLuint texture, GLenum pname, const GLint * param); -#define glTextureParameteriv _ptrc_glTextureParameteriv -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage1D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); -#define glTextureStorage1D _ptrc_glTextureStorage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage2D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -#define glTextureStorage2D _ptrc_glTextureStorage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage2DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -#define glTextureStorage2DMultisample _ptrc_glTextureStorage2DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage3D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#define glTextureStorage3D _ptrc_glTextureStorage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureStorage3DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -#define glTextureStorage3DMultisample _ptrc_glTextureStorage3DMultisample -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); -#define glTextureSubImage1D _ptrc_glTextureSubImage1D -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); -#define glTextureSubImage2D _ptrc_glTextureSubImage2D -extern void (CODEGEN_FUNCPTR *_ptrc_glTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); -#define glTextureSubImage3D _ptrc_glTextureSubImage3D -extern void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackBufferBase)(GLuint xfb, GLuint index, GLuint buffer); -#define glTransformFeedbackBufferBase _ptrc_glTransformFeedbackBufferBase -extern void (CODEGEN_FUNCPTR *_ptrc_glTransformFeedbackBufferRange)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -#define glTransformFeedbackBufferRange _ptrc_glTransformFeedbackBufferRange -extern GLboolean (CODEGEN_FUNCPTR *_ptrc_glUnmapNamedBuffer)(GLuint buffer); -#define glUnmapNamedBuffer _ptrc_glUnmapNamedBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribBinding)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); -#define glVertexArrayAttribBinding _ptrc_glVertexArrayAttribBinding -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -#define glVertexArrayAttribFormat _ptrc_glVertexArrayAttribFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribIFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -#define glVertexArrayAttribIFormat _ptrc_glVertexArrayAttribIFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayAttribLFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -#define glVertexArrayAttribLFormat _ptrc_glVertexArrayAttribLFormat -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayBindingDivisor)(GLuint vaobj, GLuint bindingindex, GLuint divisor); -#define glVertexArrayBindingDivisor _ptrc_glVertexArrayBindingDivisor -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayElementBuffer)(GLuint vaobj, GLuint buffer); -#define glVertexArrayElementBuffer _ptrc_glVertexArrayElementBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayVertexBuffer)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -#define glVertexArrayVertexBuffer _ptrc_glVertexArrayVertexBuffer -extern void (CODEGEN_FUNCPTR *_ptrc_glVertexArrayVertexBuffers)(GLuint vaobj, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides); -#define glVertexArrayVertexBuffers _ptrc_glVertexArrayVertexBuffers - -enum ogl_LoadStatus -{ - ogl_LOAD_FAILED = 0, - ogl_LOAD_SUCCEEDED = 1, -}; - -int ogl_LoadFunctions(); - -int ogl_GetMinorVersion(void); -int ogl_GetMajorVersion(void); -int ogl_IsVersionGEQ(int majorVersion, int minorVersion); - -#ifdef __cplusplus -} -#endif /*__cplusplus*/ - -#endif /*POINTER_C_GENERATED_HEADER_OPENGL_H*/ diff --git a/src/common/rendering/gl_load/gl_system.h b/src/common/rendering/gl_load/gl_system.h deleted file mode 100644 index 6b40d73c0..000000000 --- a/src/common/rendering/gl_load/gl_system.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef __GL_PCH_H -#define __GL_PCH_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) -#include -#endif -#include - -#include -#include -#include - -//GL headers -#include "gl_load/gl_load.h" - -#if defined(__APPLE__) - #include -#endif - - - -#ifdef _MSC_VER -#pragma warning(disable : 4244) // MIPS -#pragma warning(disable : 4136) // X86 -#pragma warning(disable : 4051) // ALPHA - -#pragma warning(disable : 4018) // signed/unsigned mismatch -#pragma warning(disable : 4305) // truncate from double to float -#endif - -#endif //__GL_PCH_H diff --git a/src/common/rendering/gles/glad/include/EGL/eglplatform.h b/src/common/rendering/gles/glad/include/EGL/eglplatform.h deleted file mode 100644 index d79f322e2..000000000 --- a/src/common/rendering/gles/glad/include/EGL/eglplatform.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef __eglplatform_h_ -#define __eglplatform_h_ - -/* -** Copyright (c) 2007-2013 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. -*/ - -/* Platform-specific types and definitions for egl.h - * $Revision: 23432 $ on $Date: 2013-10-09 00:57:24 -0700 (Wed, 09 Oct 2013) $ - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "EGL" component "Registry". - */ - -#include - -/* Macros used in EGL function prototype declarations. - * - * EGL functions should be prototyped as: - * - * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); - * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); - * - * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h - */ - -#ifndef EGLAPI -#define EGLAPI KHRONOS_APICALL -#endif - -#ifndef EGLAPIENTRY -#define EGLAPIENTRY KHRONOS_APIENTRY -#endif -#define EGLAPIENTRYP EGLAPIENTRY* - -/* The types NativeDisplayType, NativeWindowType, and NativePixmapType - * are aliases of window-system-dependent types, such as X Display * or - * Windows Device Context. They must be defined in platform-specific - * code below. The EGL-prefixed versions of Native*Type are the same - * types, renamed in EGL 1.3 so all types in the API start with "EGL". - * - * Khronos STRONGLY RECOMMENDS that you use the default definitions - * provided below, since these changes affect both binary and source - * portability of applications using EGL running on different EGL - * implementations. - */ - -#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN 1 -#endif -#include - -typedef HDC EGLNativeDisplayType; -typedef HBITMAP EGLNativePixmapType; -typedef HWND EGLNativeWindowType; - -#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ - -typedef int EGLNativeDisplayType; -typedef void *EGLNativeWindowType; -typedef void *EGLNativePixmapType; - -#elif defined(__ANDROID__) || defined(ANDROID) - -#include - -struct egl_native_pixmap_t; - -typedef struct ANativeWindow* EGLNativeWindowType; -typedef struct egl_native_pixmap_t* EGLNativePixmapType; -typedef void* EGLNativeDisplayType; - -#elif defined(__unix__) || defined(__APPLE__) - -/* X11 (tentative) */ -#include -#include - -typedef Display *EGLNativeDisplayType; -typedef Pixmap EGLNativePixmapType; -typedef Window EGLNativeWindowType; - -#else -#error "Platform not recognized" -#endif - -/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -typedef EGLNativeDisplayType NativeDisplayType; -typedef EGLNativePixmapType NativePixmapType; -typedef EGLNativeWindowType NativeWindowType; - - -/* Define EGLint. This must be a signed integral type large enough to contain - * all legal attribute names and values passed into and out of EGL, whether - * their type is boolean, bitmask, enumerant (symbolic constant), integer, - * handle, or other. While in general a 32-bit integer will suffice, if - * handles are 64 bit types, then EGLint should be defined as a signed 64-bit - * integer type. - */ -typedef khronos_int32_t EGLint; - -#endif /* __eglplatform_h */ diff --git a/src/common/rendering/gles/glad/include/KHR/khrplatform.h b/src/common/rendering/gles/glad/include/KHR/khrplatform.h deleted file mode 100644 index dd22d9270..000000000 --- a/src/common/rendering/gles/glad/include/KHR/khrplatform.h +++ /dev/null @@ -1,290 +0,0 @@ -#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 - -#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 _WIN64 -typedef signed long long int khronos_intptr_t; -typedef unsigned long long int khronos_uintptr_t; -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; -#else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -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/src/common/rendering/gles/glad/include/glad/glad.h b/src/common/rendering/gles/glad/include/glad/glad.h deleted file mode 100644 index 212864bc1..000000000 --- a/src/common/rendering/gles/glad/include/glad/glad.h +++ /dev/null @@ -1,874 +0,0 @@ -/* - - OpenGL ES loader generated by glad 0.1.34 on Fri Mar 19 17:04:24 2021. - - Language/Generator: C/C++ - Specification: gl - APIs: gles2=2.0 - Profile: compatibility - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --profile="compatibility" --api="gles2=2.0" --generator="c" --spec="gl" --extensions="" - Online: - https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gles2%3D2.0 -*/ - - -#ifndef __glad_h_ -#define __glad_h_ - -#ifdef __gl2_h_ -#error OpenGL ES 2 header already included, remove this include, glad already provides it -#endif -#define __gl2_h_ - -#ifdef __gl3_h_ -#error OpenGL ES 3 header already included, remove this include, glad already provides it -#endif -#define __gl3_h_ - -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) -#define APIENTRY __stdcall -#endif - -#ifndef APIENTRY -#define APIENTRY -#endif -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -struct gladGLversionStruct { - int major; - int minor; -}; - -typedef void* (* GLADloadproc)(const char *name); - -#ifndef GLAPI -# if defined(GLAD_GLAPI_EXPORT) -# if defined(_WIN32) || defined(__CYGWIN__) -# if defined(GLAD_GLAPI_EXPORT_BUILD) -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllexport)) extern -# else -# define GLAPI __declspec(dllexport) extern -# endif -# else -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllimport)) extern -# else -# define GLAPI __declspec(dllimport) extern -# endif -# endif -# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) -# define GLAPI __attribute__ ((visibility ("default"))) extern -# else -# define GLAPI extern -# endif -# else -# define GLAPI extern -# endif -#endif - -GLAPI struct gladGLversionStruct GLVersion; -GLAPI int gladLoadGLES2Loader(GLADloadproc); - -#include -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef void GLvoid; -typedef khronos_int8_t GLbyte; -typedef khronos_uint8_t GLubyte; -typedef khronos_int16_t GLshort; -typedef khronos_uint16_t GLushort; -typedef int GLint; -typedef unsigned int GLuint; -typedef khronos_int32_t GLclampx; -typedef int GLsizei; -typedef khronos_float_t GLfloat; -typedef khronos_float_t GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void *GLeglClientBufferEXT; -typedef void *GLeglImageOES; -typedef char GLchar; -typedef char GLcharARB; -#ifdef __APPLE__ -typedef void *GLhandleARB; -#else -typedef unsigned int GLhandleARB; -#endif -typedef khronos_uint16_t GLhalf; -typedef khronos_uint16_t GLhalfARB; -typedef khronos_int32_t GLfixed; -typedef khronos_intptr_t GLintptr; -typedef khronos_intptr_t GLintptrARB; -typedef khronos_ssize_t GLsizeiptr; -typedef khronos_ssize_t GLsizeiptrARB; -typedef khronos_int64_t GLint64; -typedef khronos_int64_t GLint64EXT; -typedef khronos_uint64_t GLuint64; -typedef khronos_uint64_t GLuint64EXT; -typedef struct __GLsync *GLsync; -struct _cl_context; -struct _cl_event; -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); -typedef unsigned short GLhalfNV; -typedef GLintptr GLvdpauSurfaceNV; -typedef void (APIENTRY *GLVULKANPROCNV)(void); -#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 -#ifndef GL_ES_VERSION_2_0 -#define GL_ES_VERSION_2_0 1 -GLAPI int GLAD_GL_ES_VERSION_2_0; -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); -GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; -#define glActiveTexture glad_glActiveTexture -typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; -#define glAttachShader glad_glAttachShader -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); -GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; -#define glBindAttribLocation glad_glBindAttribLocation -typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); -GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; -#define glBindBuffer glad_glBindBuffer -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); -GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; -#define glBindFramebuffer glad_glBindFramebuffer -typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); -GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; -#define glBindRenderbuffer glad_glBindRenderbuffer -typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); -GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; -#define glBindTexture glad_glBindTexture -typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; -#define glBlendColor glad_glBlendColor -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); -GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; -#define glBlendEquation glad_glBlendEquation -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); -GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; -#define glBlendEquationSeparate glad_glBlendEquationSeparate -typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); -GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; -#define glBlendFunc glad_glBlendFunc -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; -#define glBlendFuncSeparate glad_glBlendFuncSeparate -typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); -GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; -#define glBufferData glad_glBufferData -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); -GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; -#define glBufferSubData glad_glBufferSubData -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); -GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; -#define glCheckFramebufferStatus glad_glCheckFramebufferStatus -typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); -GLAPI PFNGLCLEARPROC glad_glClear; -#define glClear glad_glClear -typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; -#define glClearColor glad_glClearColor -typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); -GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; -#define glClearDepthf glad_glClearDepthf -typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); -GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; -#define glClearStencil glad_glClearStencil -typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI PFNGLCOLORMASKPROC glad_glColorMask; -#define glColorMask glad_glColorMask -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); -GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; -#define glCompileShader glad_glCompileShader -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; -#define glCompressedTexImage2D glad_glCompressedTexImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; -#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; -#define glCopyTexImage2D glad_glCopyTexImage2D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; -#define glCopyTexSubImage2D glad_glCopyTexSubImage2D -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); -GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; -#define glCreateProgram glad_glCreateProgram -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); -GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; -#define glCreateShader glad_glCreateShader -typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); -GLAPI PFNGLCULLFACEPROC glad_glCullFace; -#define glCullFace glad_glCullFace -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); -GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; -#define glDeleteBuffers glad_glDeleteBuffers -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); -GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; -#define glDeleteFramebuffers glad_glDeleteFramebuffers -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); -GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; -#define glDeleteProgram glad_glDeleteProgram -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); -GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; -#define glDeleteRenderbuffers glad_glDeleteRenderbuffers -typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); -GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; -#define glDeleteShader glad_glDeleteShader -typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); -GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; -#define glDeleteTextures glad_glDeleteTextures -typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); -GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; -#define glDepthFunc glad_glDepthFunc -typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); -GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; -#define glDepthMask glad_glDepthMask -typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); -GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; -#define glDepthRangef glad_glDepthRangef -typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; -#define glDetachShader glad_glDetachShader -typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); -GLAPI PFNGLDISABLEPROC glad_glDisable; -#define glDisable glad_glDisable -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; -#define glDisableVertexAttribArray glad_glDisableVertexAttribArray -typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); -GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; -#define glDrawArrays glad_glDrawArrays -typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); -GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; -#define glDrawElements glad_glDrawElements -typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); -GLAPI PFNGLENABLEPROC glad_glEnable; -#define glEnable glad_glEnable -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; -#define glEnableVertexAttribArray glad_glEnableVertexAttribArray -typedef void (APIENTRYP PFNGLFINISHPROC)(void); -GLAPI PFNGLFINISHPROC glad_glFinish; -#define glFinish glad_glFinish -typedef void (APIENTRYP PFNGLFLUSHPROC)(void); -GLAPI PFNGLFLUSHPROC glad_glFlush; -#define glFlush glad_glFlush -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; -#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; -#define glFramebufferTexture2D glad_glFramebufferTexture2D -typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); -GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; -#define glFrontFace glad_glFrontFace -typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); -GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; -#define glGenBuffers glad_glGenBuffers -typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); -GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; -#define glGenerateMipmap glad_glGenerateMipmap -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; -#define glGenFramebuffers glad_glGenFramebuffers -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; -#define glGenRenderbuffers glad_glGenRenderbuffers -typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); -GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; -#define glGenTextures glad_glGenTextures -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; -#define glGetActiveAttrib glad_glGetActiveAttrib -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; -#define glGetActiveUniform glad_glGetActiveUniform -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; -#define glGetAttachedShaders glad_glGetAttachedShaders -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; -#define glGetAttribLocation glad_glGetAttribLocation -typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); -GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; -#define glGetBooleanv glad_glGetBooleanv -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; -#define glGetBufferParameteriv glad_glGetBufferParameteriv -typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); -GLAPI PFNGLGETERRORPROC glad_glGetError; -#define glGetError glad_glGetError -typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); -GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; -#define glGetFloatv glad_glGetFloatv -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); -GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; -#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv -typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); -GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; -#define glGetIntegerv glad_glGetIntegerv -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; -#define glGetProgramiv glad_glGetProgramiv -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; -#define glGetProgramInfoLog glad_glGetProgramInfoLog -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; -#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv -typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); -GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; -#define glGetShaderiv glad_glGetShaderiv -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; -#define glGetShaderInfoLog glad_glGetShaderInfoLog -typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; -#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; -#define glGetShaderSource glad_glGetShaderSource -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); -GLAPI PFNGLGETSTRINGPROC glad_glGetString; -#define glGetString glad_glGetString -typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; -#define glGetTexParameterfv glad_glGetTexParameterfv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; -#define glGetTexParameteriv glad_glGetTexParameteriv -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); -GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; -#define glGetUniformfv glad_glGetUniformfv -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); -GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; -#define glGetUniformiv glad_glGetUniformiv -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; -#define glGetUniformLocation glad_glGetUniformLocation -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); -GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; -#define glGetVertexAttribfv glad_glGetVertexAttribfv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; -#define glGetVertexAttribiv glad_glGetVertexAttribiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); -GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; -#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv -typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); -GLAPI PFNGLHINTPROC glad_glHint; -#define glHint glad_glHint -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); -GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; -#define glIsBuffer glad_glIsBuffer -typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); -GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; -#define glIsEnabled glad_glIsEnabled -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); -GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; -#define glIsFramebuffer glad_glIsFramebuffer -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); -GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; -#define glIsProgram glad_glIsProgram -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); -GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; -#define glIsRenderbuffer glad_glIsRenderbuffer -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); -GLAPI PFNGLISSHADERPROC glad_glIsShader; -#define glIsShader glad_glIsShader -typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); -GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; -#define glIsTexture glad_glIsTexture -typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); -GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; -#define glLineWidth glad_glLineWidth -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); -GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; -#define glLinkProgram glad_glLinkProgram -typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); -GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; -#define glPixelStorei glad_glPixelStorei -typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); -GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; -#define glPolygonOffset glad_glPolygonOffset -typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); -GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; -#define glReadPixels glad_glReadPixels -typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); -GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; -#define glReleaseShaderCompiler glad_glReleaseShaderCompiler -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; -#define glRenderbufferStorage glad_glRenderbufferStorage -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); -GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; -#define glSampleCoverage glad_glSampleCoverage -typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLSCISSORPROC glad_glScissor; -#define glScissor glad_glScissor -typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); -GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; -#define glShaderBinary glad_glShaderBinary -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; -#define glShaderSource glad_glShaderSource -typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; -#define glStencilFunc glad_glStencilFunc -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; -#define glStencilFuncSeparate glad_glStencilFuncSeparate -typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); -GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; -#define glStencilMask glad_glStencilMask -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); -GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; -#define glStencilMaskSeparate glad_glStencilMaskSeparate -typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); -GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; -#define glStencilOp glad_glStencilOp -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; -#define glStencilOpSeparate glad_glStencilOpSeparate -typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; -#define glTexImage2D glad_glTexImage2D -typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); -GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; -#define glTexParameterf glad_glTexParameterf -typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); -GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; -#define glTexParameterfv glad_glTexParameterfv -typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; -#define glTexParameteri glad_glTexParameteri -typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); -GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; -#define glTexParameteriv glad_glTexParameteriv -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; -#define glTexSubImage2D glad_glTexSubImage2D -typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); -GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; -#define glUniform1f glad_glUniform1f -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; -#define glUniform1fv glad_glUniform1fv -typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); -GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; -#define glUniform1i glad_glUniform1i -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; -#define glUniform1iv glad_glUniform1iv -typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); -GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; -#define glUniform2f glad_glUniform2f -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; -#define glUniform2fv glad_glUniform2fv -typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); -GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; -#define glUniform2i glad_glUniform2i -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; -#define glUniform2iv glad_glUniform2iv -typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; -#define glUniform3f glad_glUniform3f -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; -#define glUniform3fv glad_glUniform3fv -typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); -GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; -#define glUniform3i glad_glUniform3i -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; -#define glUniform3iv glad_glUniform3iv -typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; -#define glUniform4f glad_glUniform4f -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; -#define glUniform4fv glad_glUniform4fv -typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; -#define glUniform4i glad_glUniform4i -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; -#define glUniform4iv glad_glUniform4iv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; -#define glUniformMatrix2fv glad_glUniformMatrix2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; -#define glUniformMatrix3fv glad_glUniformMatrix3fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; -#define glUniformMatrix4fv glad_glUniformMatrix4fv -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); -GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; -#define glUseProgram glad_glUseProgram -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); -GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; -#define glValidateProgram glad_glValidateProgram -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); -GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; -#define glVertexAttrib1f glad_glVertexAttrib1f -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; -#define glVertexAttrib1fv glad_glVertexAttrib1fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); -GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; -#define glVertexAttrib2f glad_glVertexAttrib2f -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; -#define glVertexAttrib2fv glad_glVertexAttrib2fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; -#define glVertexAttrib3f glad_glVertexAttrib3f -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; -#define glVertexAttrib3fv glad_glVertexAttrib3fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; -#define glVertexAttrib4f glad_glVertexAttrib4f -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; -#define glVertexAttrib4fv glad_glVertexAttrib4fv -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; -#define glVertexAttribPointer glad_glVertexAttribPointer -typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLVIEWPORTPROC glad_glViewport; -#define glViewport glad_glViewport -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/common/rendering/gles/glad/include/glad/glad_egl.h b/src/common/rendering/gles/glad/include/glad/glad_egl.h deleted file mode 100644 index 1c47f7ced..000000000 --- a/src/common/rendering/gles/glad/include/glad/glad_egl.h +++ /dev/null @@ -1,267 +0,0 @@ -/* - - EGL loader generated by glad 0.1.34 on Sat Feb 20 22:54:45 2021. - - Language/Generator: C/C++ - Specification: egl - APIs: egl=1.4 - Profile: - - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --api="egl=1.4" --generator="c" --spec="egl" --extensions="" - Online: - https://glad.dav1d.de/#language=c&specification=egl&loader=on&api=egl%3D1.4 -*/ - - -#ifndef __glad_egl_h_ - -#ifdef __egl_h_ -#error EGL header already included, remove this include, glad already provides it -#endif - -#define __glad_egl_h_ -#define __egl_h_ - -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) -#define APIENTRY __stdcall -#endif - -#ifndef APIENTRY -#define APIENTRY -#endif -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif -#ifndef GLAPI -#define GLAPI extern -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void* (* GLADloadproc)(const char *name); - -GLAPI int gladLoadEGL(void); -GLAPI int gladLoadEGLLoader(GLADloadproc); - -#include -#include - -#define EGL_CAST(X,V) (X)(V) - -struct AHardwareBuffer; -struct wl_buffer; -struct wl_display; -struct wl_resource; -typedef unsigned int EGLBoolean; -typedef unsigned int EGLenum; -typedef intptr_t EGLAttribKHR; -typedef intptr_t EGLAttrib; -typedef void *EGLClientBuffer; -typedef void *EGLConfig; -typedef void *EGLContext; -typedef void *EGLDeviceEXT; -typedef void *EGLDisplay; -typedef void *EGLImage; -typedef void *EGLImageKHR; -typedef void *EGLLabelKHR; -typedef void *EGLObjectKHR; -typedef void *EGLOutputLayerEXT; -typedef void *EGLOutputPortEXT; -typedef void *EGLStreamKHR; -typedef void *EGLSurface; -typedef void *EGLSync; -typedef void *EGLSyncKHR; -typedef void *EGLSyncNV; -typedef void (*__eglMustCastToProperFunctionPointerType)(void); -typedef khronos_utime_nanoseconds_t EGLTimeKHR; -typedef khronos_utime_nanoseconds_t EGLTime; -typedef khronos_utime_nanoseconds_t EGLTimeNV; -typedef khronos_utime_nanoseconds_t EGLuint64NV; -typedef khronos_uint64_t EGLuint64KHR; -typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; -typedef int EGLNativeFileDescriptorKHR; -typedef khronos_ssize_t EGLsizeiANDROID; -typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); -typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); -struct EGLClientPixmapHI { - void *pData; - EGLint iWidth; - EGLint iHeight; - EGLint iStride; -}; -typedef void (APIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); -#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC -#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC -#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC -#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC -#define EGL_ALPHA_SIZE 0x3021 -#define EGL_BAD_ACCESS 0x3002 -#define EGL_BAD_ALLOC 0x3003 -#define EGL_BAD_ATTRIBUTE 0x3004 -#define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 -#define EGL_BAD_MATCH 0x3009 -#define EGL_BAD_NATIVE_PIXMAP 0x300A -#define EGL_BAD_NATIVE_WINDOW 0x300B -#define EGL_BAD_PARAMETER 0x300C -#define EGL_BAD_SURFACE 0x300D -#define EGL_BLUE_SIZE 0x3022 -#define EGL_BUFFER_SIZE 0x3020 -#define EGL_CONFIG_CAVEAT 0x3027 -#define EGL_CONFIG_ID 0x3028 -#define EGL_CORE_NATIVE_ENGINE 0x305B -#define EGL_DEPTH_SIZE 0x3025 -#define EGL_DONT_CARE EGL_CAST(EGLint,-1) -#define EGL_DRAW 0x3059 -#define EGL_EXTENSIONS 0x3055 -#define EGL_FALSE 0 -#define EGL_GREEN_SIZE 0x3023 -#define EGL_HEIGHT 0x3056 -#define EGL_LARGEST_PBUFFER 0x3058 -#define EGL_LEVEL 0x3029 -#define EGL_MAX_PBUFFER_HEIGHT 0x302A -#define EGL_MAX_PBUFFER_PIXELS 0x302B -#define EGL_MAX_PBUFFER_WIDTH 0x302C -#define EGL_NATIVE_RENDERABLE 0x302D -#define EGL_NATIVE_VISUAL_ID 0x302E -#define EGL_NATIVE_VISUAL_TYPE 0x302F -#define EGL_NONE 0x3038 -#define EGL_NON_CONFORMANT_CONFIG 0x3051 -#define EGL_NOT_INITIALIZED 0x3001 -#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0) -#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0) -#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0) -#define EGL_PBUFFER_BIT 0x0001 -#define EGL_PIXMAP_BIT 0x0002 -#define EGL_READ 0x305A -#define EGL_RED_SIZE 0x3024 -#define EGL_SAMPLES 0x3031 -#define EGL_SAMPLE_BUFFERS 0x3032 -#define EGL_SLOW_CONFIG 0x3050 -#define EGL_STENCIL_SIZE 0x3026 -#define EGL_SUCCESS 0x3000 -#define EGL_SURFACE_TYPE 0x3033 -#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 -#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 -#define EGL_TRANSPARENT_RED_VALUE 0x3037 -#define EGL_TRANSPARENT_RGB 0x3052 -#define EGL_TRANSPARENT_TYPE 0x3034 -#define EGL_TRUE 1 -#define EGL_VENDOR 0x3053 -#define EGL_VERSION 0x3054 -#define EGL_WIDTH 0x3057 -#define EGL_WINDOW_BIT 0x0004 -#define EGL_BACK_BUFFER 0x3084 -#define EGL_BIND_TO_TEXTURE_RGB 0x3039 -#define EGL_BIND_TO_TEXTURE_RGBA 0x303A -#define EGL_CONTEXT_LOST 0x300E -#define EGL_MIN_SWAP_INTERVAL 0x303B -#define EGL_MAX_SWAP_INTERVAL 0x303C -#define EGL_MIPMAP_TEXTURE 0x3082 -#define EGL_MIPMAP_LEVEL 0x3083 -#define EGL_NO_TEXTURE 0x305C -#define EGL_TEXTURE_2D 0x305F -#define EGL_TEXTURE_FORMAT 0x3080 -#define EGL_TEXTURE_RGB 0x305D -#define EGL_TEXTURE_RGBA 0x305E -#define EGL_TEXTURE_TARGET 0x3081 -#define EGL_ALPHA_FORMAT 0x3088 -#define EGL_ALPHA_FORMAT_NONPRE 0x308B -#define EGL_ALPHA_FORMAT_PRE 0x308C -#define EGL_ALPHA_MASK_SIZE 0x303E -#define EGL_BUFFER_PRESERVED 0x3094 -#define EGL_BUFFER_DESTROYED 0x3095 -#define EGL_CLIENT_APIS 0x308D -#define EGL_COLORSPACE 0x3087 -#define EGL_COLORSPACE_sRGB 0x3089 -#define EGL_COLORSPACE_LINEAR 0x308A -#define EGL_COLOR_BUFFER_TYPE 0x303F -#define EGL_CONTEXT_CLIENT_TYPE 0x3097 -#define EGL_DISPLAY_SCALING 10000 -#define EGL_HORIZONTAL_RESOLUTION 0x3090 -#define EGL_LUMINANCE_BUFFER 0x308F -#define EGL_LUMINANCE_SIZE 0x303D -#define EGL_OPENGL_ES_BIT 0x0001 -#define EGL_OPENVG_BIT 0x0002 -#define EGL_OPENGL_ES_API 0x30A0 -#define EGL_OPENVG_API 0x30A1 -#define EGL_OPENVG_IMAGE 0x3096 -#define EGL_PIXEL_ASPECT_RATIO 0x3092 -#define EGL_RENDERABLE_TYPE 0x3040 -#define EGL_RENDER_BUFFER 0x3086 -#define EGL_RGB_BUFFER 0x308E -#define EGL_SINGLE_BUFFER 0x3085 -#define EGL_SWAP_BEHAVIOR 0x3093 -#define EGL_UNKNOWN EGL_CAST(EGLint,-1) -#define EGL_VERTICAL_RESOLUTION 0x3091 -#define EGL_CONFORMANT 0x3042 -#define EGL_CONTEXT_CLIENT_VERSION 0x3098 -#define EGL_MATCH_NATIVE_PIXMAP 0x3041 -#define EGL_OPENGL_ES2_BIT 0x0004 -#define EGL_VG_ALPHA_FORMAT 0x3088 -#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B -#define EGL_VG_ALPHA_FORMAT_PRE 0x308C -#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 -#define EGL_VG_COLORSPACE 0x3087 -#define EGL_VG_COLORSPACE_sRGB 0x3089 -#define EGL_VG_COLORSPACE_LINEAR 0x308A -#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 -#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0) -#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 -#define EGL_MULTISAMPLE_RESOLVE 0x3099 -#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A -#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B -#define EGL_OPENGL_API 0x30A2 -#define EGL_OPENGL_BIT 0x0008 -#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 -EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); -EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); -EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); -EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); -EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); -EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list); -EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx); -EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface); -EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); -EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); -EGLDisplay eglGetCurrentDisplay(void); -EGLSurface eglGetCurrentSurface(EGLint readdraw); -EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id); -EGLint eglGetError(void); -__eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname); -EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); -EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); -EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); -const char *eglQueryString(EGLDisplay dpy, EGLint name); -EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); -EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); -EGLBoolean eglTerminate(EGLDisplay dpy); -EGLBoolean eglWaitGL(void); -EGLBoolean eglWaitNative(EGLint engine); -EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); -EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval); -EGLBoolean eglBindAPI(EGLenum api); -EGLenum eglQueryAPI(void); -EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); -EGLBoolean eglReleaseThread(void); -EGLBoolean eglWaitClient(void); -EGLContext eglGetCurrentContext(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/common/rendering/gles/glad/src/glad.c b/src/common/rendering/gles/glad/src/glad.c deleted file mode 100644 index 6653cc3f6..000000000 --- a/src/common/rendering/gles/glad/src/glad.c +++ /dev/null @@ -1,475 +0,0 @@ -/* - - OpenGL ES loader generated by glad 0.1.34 on Fri Mar 19 17:04:24 2021. - - Language/Generator: C/C++ - Specification: gl - APIs: gles2=2.0 - Profile: compatibility - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --profile="compatibility" --api="gles2=2.0" --generator="c" --spec="gl" --extensions="" - Online: - https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gles2%3D2.0 -*/ - -#include -#include -#include -#include - -struct gladGLversionStruct GLVersion = { 0, 0 }; - -#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) -#define _GLAD_IS_SOME_NEW_VERSION 1 -#endif - -static int max_loaded_major; -static int max_loaded_minor; - -static const char *exts = NULL; -static int num_exts_i = 0; -static char **exts_i = NULL; - -static int get_exts(void) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - exts = (const char *)glGetString(GL_EXTENSIONS); -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - unsigned int index; - - num_exts_i = 0; - glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); - if (num_exts_i > 0) { - exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); - } - - if (exts_i == NULL) { - return 0; - } - - for(index = 0; index < (unsigned)num_exts_i; index++) { - const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); - size_t len = strlen(gl_str_tmp); - - char *local_str = (char*)malloc((len+1) * sizeof(char)); - if(local_str != NULL) { - memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); - } - exts_i[index] = local_str; - } - } -#endif - return 1; -} - -static void free_exts(void) { - if (exts_i != NULL) { - int index; - for(index = 0; index < num_exts_i; index++) { - free((char *)exts_i[index]); - } - free((void *)exts_i); - exts_i = NULL; - } -} - -static int has_ext(const char *ext) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - const char *extensions; - const char *loc; - const char *terminator; - extensions = exts; - if(extensions == NULL || ext == NULL) { - return 0; - } - - while(1) { - loc = strstr(extensions, ext); - if(loc == NULL) { - return 0; - } - - terminator = loc + strlen(ext); - if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { - return 1; - } - extensions = terminator; - } -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; - if(exts_i == NULL) return 0; - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - - if(exts_i[index] != NULL && strcmp(e, ext) == 0) { - return 1; - } - } - } -#endif - - return 0; -} -int GLAD_GL_ES_VERSION_2_0 = 0; -PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; -PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; -PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; -PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; -PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; -PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; -PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; -PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; -PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; -PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; -PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; -PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; -PFNGLBUFFERDATAPROC glad_glBufferData = NULL; -PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; -PFNGLCLEARPROC glad_glClear = NULL; -PFNGLCLEARCOLORPROC glad_glClearColor = NULL; -PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; -PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; -PFNGLCOLORMASKPROC glad_glColorMask = NULL; -PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; -PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; -PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; -PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; -PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; -PFNGLCREATESHADERPROC glad_glCreateShader = NULL; -PFNGLCULLFACEPROC glad_glCullFace = NULL; -PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; -PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; -PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; -PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; -PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; -PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; -PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; -PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; -PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; -PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; -PFNGLDISABLEPROC glad_glDisable = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; -PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; -PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; -PFNGLENABLEPROC glad_glEnable = NULL; -PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; -PFNGLFINISHPROC glad_glFinish = NULL; -PFNGLFLUSHPROC glad_glFlush = NULL; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; -PFNGLFRONTFACEPROC glad_glFrontFace = NULL; -PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; -PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; -PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; -PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; -PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; -PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; -PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; -PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; -PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; -PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; -PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; -PFNGLGETERRORPROC glad_glGetError = NULL; -PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; -PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; -PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; -PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; -PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; -PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; -PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; -PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; -PFNGLGETSTRINGPROC glad_glGetString = NULL; -PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; -PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; -PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; -PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; -PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; -PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; -PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; -PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; -PFNGLHINTPROC glad_glHint = NULL; -PFNGLISBUFFERPROC glad_glIsBuffer = NULL; -PFNGLISENABLEDPROC glad_glIsEnabled = NULL; -PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; -PFNGLISPROGRAMPROC glad_glIsProgram = NULL; -PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; -PFNGLISSHADERPROC glad_glIsShader = NULL; -PFNGLISTEXTUREPROC glad_glIsTexture = NULL; -PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; -PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; -PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; -PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; -PFNGLREADPIXELSPROC glad_glReadPixels = NULL; -PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; -PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; -PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; -PFNGLSCISSORPROC glad_glScissor = NULL; -PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; -PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; -PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; -PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; -PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; -PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; -PFNGLSTENCILOPPROC glad_glStencilOp = NULL; -PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; -PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; -PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; -PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; -PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; -PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; -PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; -PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; -PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; -PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; -PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; -PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; -PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; -PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; -PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; -PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; -PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; -PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; -PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; -PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; -PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; -PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; -PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; -PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; -PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; -PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; -PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; -PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; -PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; -PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; -PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; -PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; -PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; -PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; -PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; -PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; -PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; -PFNGLVIEWPORTPROC glad_glViewport = NULL; -static void load_GL_ES_VERSION_2_0(GLADloadproc load) { - if(!GLAD_GL_ES_VERSION_2_0) return; - glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); - glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); - glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); - glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); - glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); - glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); - glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); - glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); - glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); - glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); - glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); - glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); - glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); - glad_glClear = (PFNGLCLEARPROC)load("glClear"); - glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); - glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); - glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); - glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); - glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); - glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); - glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); - glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); - glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); - glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); - glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); - glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); - glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); - glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); - glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); - glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); - glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); - glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); - glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); - glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); - glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); - glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); - glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); - glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); - glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); - glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); - glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); - glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); - glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); - glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); - glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); - glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); - glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); - glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); - glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); - glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); - glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); - glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); - glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); - glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); - glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); - glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); - glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); - glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); - glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); - glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); - glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); - glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); - glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); - glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); - glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); - glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); - glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); - glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); - glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); - glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); - glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); - glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); - glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); - glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); - glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); - glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); - glad_glHint = (PFNGLHINTPROC)load("glHint"); - glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); - glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); - glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); - glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); - glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); - glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); - glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); - glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); - glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); - glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); - glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); - glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); - glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); - glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); - glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); - glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); - glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); - glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); - glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); - glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); - glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); - glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); - glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); - glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); - glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); - glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); - glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); - glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); - glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); - glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); - glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); - glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); - glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); - glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); - glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); - glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); - glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); - glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); - glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); - glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); - glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); - glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); - glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); - glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); - glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); - glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); - glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); - glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); - glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); - glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); - glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); - glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); - glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); - glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); - glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); - glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); - glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); - glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); - glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); - glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); - glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); -} -static int find_extensionsGLES2(void) { - if (!get_exts()) return 0; - (void)&has_ext; - free_exts(); - return 1; -} - -static void find_coreGLES2(void) { - - /* Thank you @elmindreda - * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 - * https://github.com/glfw/glfw/blob/master/src/context.c#L36 - */ - int i, major, minor; - - const char* version; - const char* prefixes[] = { - "OpenGL ES-CM ", - "OpenGL ES-CL ", - "OpenGL ES ", - NULL - }; - - version = (const char*) glGetString(GL_VERSION); - if (!version) return; - - for (i = 0; prefixes[i]; i++) { - const size_t length = strlen(prefixes[i]); - if (strncmp(version, prefixes[i], length) == 0) { - version += length; - break; - } - } - -/* PR #18 */ -#ifdef _MSC_VER - sscanf_s(version, "%d.%d", &major, &minor); -#else - sscanf(version, "%d.%d", &major, &minor); -#endif - - GLVersion.major = major; GLVersion.minor = minor; - max_loaded_major = major; max_loaded_minor = minor; - GLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; - if (GLVersion.major > 2 || (GLVersion.major >= 2 && GLVersion.minor >= 0)) { - max_loaded_major = 2; - max_loaded_minor = 0; - } -} - -int gladLoadGLES2Loader(GLADloadproc load) { - GLVersion.major = 0; GLVersion.minor = 0; - glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - if(glGetString == NULL) return 0; - if(glGetString(GL_VERSION) == NULL) return 0; - find_coreGLES2(); - load_GL_ES_VERSION_2_0(load); - - if (!find_extensionsGLES2()) return 0; - return GLVersion.major != 0 || GLVersion.minor != 0; -} - diff --git a/src/common/rendering/gles/glad/src/glad_egl.c b/src/common/rendering/gles/glad/src/glad_egl.c deleted file mode 100644 index 8d0744041..000000000 --- a/src/common/rendering/gles/glad/src/glad_egl.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - - EGL loader generated by glad 0.1.34 on Sat Feb 20 22:54:45 2021. - - Language/Generator: C/C++ - Specification: egl - APIs: egl=1.4 - Profile: - - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --api="egl=1.4" --generator="c" --spec="egl" --extensions="" - Online: - https://glad.dav1d.de/#language=c&specification=egl&loader=on&api=egl%3D1.4 -*/ - -#include -#include -#include -#include - -int gladLoadEGL(void) { - return gladLoadEGLLoader((GLADloadproc)eglGetProcAddress); -} - -static int find_extensionsEGL(void) { - return 1; -} - -static void find_coreEGL(void) { -} - -int gladLoadEGLLoader(GLADloadproc load) { - (void) load; - find_coreEGL(); - - if (!find_extensionsEGL()) return 0; - return 1; -} - diff --git a/src/common/rendering/gles/gles_buffers.cpp b/src/common/rendering/gles/gles_buffers.cpp deleted file mode 100644 index 7f56f737f..000000000 --- a/src/common/rendering/gles/gles_buffers.cpp +++ /dev/null @@ -1,343 +0,0 @@ -/* -** gl_buffers.cpp -** Low level vertex buffer class -** -**--------------------------------------------------------------------------- -** Copyright 2018-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -**/ - -#include -#include "gles_system.h" -#include "gles_buffers.h" -#include "gles_renderstate.h" -#include "v_video.h" -#include "flatvertices.h" - -namespace OpenGLESRenderer -{ - -//========================================================================== -// -// basic buffer implementation -// -//========================================================================== - -static inline void InvalidateBufferState() -{ - gl_RenderState.ResetVertexBuffer(); // force rebinding of buffers on next Apply call. -} - -GLBuffer::GLBuffer(int usetype) - : mUseType(usetype) -{ - if ((usetype == GL_ARRAY_BUFFER) || (usetype == GL_ELEMENT_ARRAY_BUFFER)) - { - glGenBuffers(1, &mBufferId); - isData = false; - } - else - { - isData = true; - } -} - -GLBuffer::~GLBuffer() -{ - if (mBufferId != 0) - { - if (gles.useMappedBuffers) - { - glBindBuffer(mUseType, mBufferId); - glUnmapBuffer(mUseType); - } - glBindBuffer(mUseType, 0); - glDeleteBuffers(1, &mBufferId); - } - - if (memory) - delete[] memory; -} - -void GLBuffer::Bind() -{ - if (!isData) - { - glBindBuffer(mUseType, mBufferId); - } -} - - -void GLBuffer::SetData(size_t size, const void* data, BufferUsageType usage) -{ - bool staticdata = (usage == BufferUsageType::Static || usage == BufferUsageType::Mappable); - if (isData || !gles.useMappedBuffers) - { - if (memory) - delete[] memory; - - memory = (char*)(new uint64_t[size / 8 + 16]); - - if (data) - memcpy(memory, data, size); - } - - if (!isData) - { - Bind(); - glBufferData(mUseType, size, data, staticdata ? GL_STATIC_DRAW : GL_STREAM_DRAW); - } - - if (!isData && gles.useMappedBuffers) - { - map = 0; - } - else - { - map = memory; - } - - buffersize = size; - InvalidateBufferState(); -} - -void GLBuffer::SetSubData(size_t offset, size_t size, const void *data) -{ - Bind(); - - memcpy(memory + offset, data, size); - - if (!isData) - { - glBufferSubData(mUseType, offset, size, data); - } -} - -void GLBuffer::Upload(size_t start, size_t size) -{ - if (!gles.useMappedBuffers) - { - Bind(); - - if(size) - glBufferSubData(mUseType, start, size, memory + start); - } -} - -void GLBuffer::Map() -{ - if (!isData && gles.useMappedBuffers) - { - Bind(); - map = (FFlatVertex*)glMapBufferRange(mUseType, 0, buffersize, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT); - } - else - { - map = memory; - } - InvalidateBufferState(); -} - -void GLBuffer::Unmap() -{ - if (!isData && gles.useMappedBuffers) - { - Bind(); - glUnmapBuffer(mUseType); - InvalidateBufferState(); - } -} - -void *GLBuffer::Lock(unsigned int size) -{ - // This initializes this buffer as a static object with no data. - SetData(size, nullptr, BufferUsageType::Mappable); - if (!isData && gles.useMappedBuffers) - { - return glMapBufferRange(mUseType, 0, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_UNSYNCHRONIZED_BIT); - } - else - { - return map; - } -} - -void GLBuffer::Unlock() -{ - if (!isData) - { - if (gles.useMappedBuffers) - { - Bind(); - glUnmapBuffer(mUseType); - InvalidateBufferState(); - } - else - { - Bind(); - glBufferData(mUseType, buffersize, map, GL_STATIC_DRAW); - InvalidateBufferState(); - } - } -} - -void GLBuffer::Resize(size_t newsize) -{ - if (newsize > buffersize) - { - if (isData) - { - // Create new bigger memory - char* memoryNew = (char*)(new uint64_t[newsize / 8 + 16]); - - // Copy old data - memcpy(memoryNew, memory, buffersize); - - // Delete old memory - delete[] memory; - - memory = memoryNew; - - buffersize = newsize; - } - else - { - // TODO - } - } -} - -void GLBuffer::GPUDropSync() -{ - if (gles.glesMode > GLES_MODE_GLES && gles.useMappedBuffers && glFenceSync && glDeleteSync) - { - if (mGLSync != NULL) - { - glDeleteSync(mGLSync); - } - - mGLSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); - } -} - -void GLBuffer::GPUWaitSync() -{ - if (gles.glesMode > GLES_MODE_GLES && gles.useMappedBuffers && glDeleteSync && glClientWaitSync) - { - GLenum status = glClientWaitSync(mGLSync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000 * 1000 * 50); // Wait for a max of 50ms... - - if (status != GL_ALREADY_SIGNALED && status != GL_CONDITION_SATISFIED) - { - //Printf("Error on glClientWaitSync: %d\n", status); - } - - glDeleteSync(mGLSync); - - mGLSync = NULL; - } -} - - -//=========================================================================== -// -// Vertex buffer implementation -// -//=========================================================================== - -void GLVertexBuffer::SetFormat(int numBindingPoints, int numAttributes, size_t stride, const FVertexBufferAttribute *attrs) -{ - static int VFmtToGLFmt[] = { GL_FLOAT, GL_FLOAT, GL_FLOAT, GL_FLOAT, GL_UNSIGNED_BYTE, GL_INT_2_10_10_10_REV, GL_UNSIGNED_BYTE }; // TODO Fix last entry GL_INT_2_10_10_10_REV, normals for models will be broken - static uint8_t VFmtToSize[] = {4, 3, 2, 1, 4, 4, 4}; - static bool VFmtToNormalize[] = { false, false, false, false, true, true, false }; - static bool VFmtToIntegerType[] = { false, false, false, false, false, false, true }; - - mStride = stride; - mNumBindingPoints = numBindingPoints; - - for(int i = 0; i < numAttributes; i++) - { - if (attrs[i].location >= 0 && attrs[i].location < VATTR_MAX) - { - auto & attrinf = mAttributeInfo[attrs[i].location]; - attrinf.format = VFmtToGLFmt[attrs[i].format]; - attrinf.size = VFmtToSize[attrs[i].format]; - attrinf.offset = attrs[i].offset; - attrinf.bindingpoint = attrs[i].binding; - attrinf.normalize = VFmtToNormalize[attrs[i].format]; - attrinf.integerType = VFmtToIntegerType[attrs[i].format]; - } - } -} - -void GLVertexBuffer::Bind(int *offsets) -{ - int i = 0; - - // This is what gets called from RenderState.Apply. It shouldn't be called anywhere else if the render state is in use - GLBuffer::Bind(); - for(auto &attrinf : mAttributeInfo) - { - if (attrinf.size == 0) - { - glDisableVertexAttribArray(i); - } - else - { - glEnableVertexAttribArray(i); - size_t ofs = offsets == nullptr ? attrinf.offset : attrinf.offset + mStride * offsets[attrinf.bindingpoint]; - if (!attrinf.integerType) - glVertexAttribPointer(i, attrinf.size, attrinf.format, attrinf.normalize, (GLsizei)mStride, (void*)(intptr_t)ofs); - else - { - if (gles.glesMode >= GLES_MODE_OGL3) - glVertexAttribIPointer(i, attrinf.size, attrinf.format, (GLsizei)mStride, (void*)(intptr_t)ofs); - } - } - i++; - } -} - -void GLDataBuffer::BindRange(FRenderState *state, size_t start, size_t length) -{ - if (mBindingPoint == 3)// VIEWPOINT_BINDINGPOINT - { - static_cast(state)->ApplyViewport(memory + start); - } -} - -void GLDataBuffer::BindBase() -{ - -} - - -GLVertexBuffer::GLVertexBuffer() : GLBuffer(GL_ARRAY_BUFFER) {} -GLIndexBuffer::GLIndexBuffer() : GLBuffer(GL_ELEMENT_ARRAY_BUFFER) {} -GLDataBuffer::GLDataBuffer(int bindingpoint, bool is_ssbo) : GLBuffer(0), mBindingPoint(bindingpoint) {} - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_buffers.h b/src/common/rendering/gles/gles_buffers.h deleted file mode 100644 index 50156ef7e..000000000 --- a/src/common/rendering/gles/gles_buffers.h +++ /dev/null @@ -1,84 +0,0 @@ -#pragma once - -#include "buffers.h" - -#ifdef _MSC_VER -// silence bogus warning C4250: 'GLVertexBuffer': inherits 'GLBuffer::GLBuffer::SetData' via dominance -// According to internet infos, the warning is erroneously emitted in this case. -#pragma warning(disable:4250) -#endif - -namespace OpenGLESRenderer -{ - -class GLBuffer : virtual public IBuffer -{ -protected: - const int mUseType; - unsigned int mBufferId = 0; - int mAllocationSize = 0; - bool mPersistent = false; - bool nomap = true; - GLsync mGLSync = 0; - - bool isData = false; - char *memory = nullptr; - - GLBuffer(int usetype); - ~GLBuffer(); - void SetData(size_t size, const void *data, BufferUsageType usage) override; - void SetSubData(size_t offset, size_t size, const void *data) override; - void Map() override; - void Unmap() override; - void Resize(size_t newsize) override; - void *Lock(unsigned int size) override; - void Unlock() override; - - void GPUDropSync(); - void GPUWaitSync(); -public: - void Bind(); - void Upload(size_t start, size_t end); -}; - - -class GLVertexBuffer : public IVertexBuffer, public GLBuffer -{ - // If this could use the modern (since GL 4.3) binding system, things would be simpler... :( - struct GLVertexBufferAttribute - { - int bindingpoint; - int format; - bool normalize; - bool integerType; - int size; - int offset; - }; - - int mNumBindingPoints; - GLVertexBufferAttribute mAttributeInfo[VATTR_MAX] = {}; // Thanks to OpenGL's state system this needs to contain info about every attribute that may ever be in use throughout the entire renderer. - size_t mStride = 0; - -public: - GLVertexBuffer(); - void SetFormat(int numBindingPoints, int numAttributes, size_t stride, const FVertexBufferAttribute *attrs) override; - void Bind(int *offsets); -}; - -class GLIndexBuffer : public IIndexBuffer, public GLBuffer -{ -public: - - GLIndexBuffer(); -}; - -class GLDataBuffer : public IDataBuffer, public GLBuffer -{ - int mBindingPoint; -public: - GLDataBuffer(int bindingpoint, bool is_ssbo); - void BindRange(FRenderState* state, size_t start, size_t length); - void BindBase(); -}; - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_framebuffer.cpp b/src/common/rendering/gles/gles_framebuffer.cpp deleted file mode 100644 index 0d0a459c0..000000000 --- a/src/common/rendering/gles/gles_framebuffer.cpp +++ /dev/null @@ -1,499 +0,0 @@ -/* -** gl_framebuffer.cpp -** Implementation of the non-hardware specific parts of the -** OpenGL frame buffer -** -**--------------------------------------------------------------------------- -** Copyright 2010-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#include "gles_system.h" -#include "v_video.h" -#include "m_png.h" - -#include "i_time.h" - -#include "gles_framebuffer.h" -#include "gles_renderer.h" -#include "gles_samplers.h" -#include "gles_renderbuffers.h" -#include "hw_clock.h" -#include "hw_vrmodes.h" -#include "hw_skydome.h" -#include "hw_viewpointbuffer.h" -#include "hw_lightbuffer.h" -#include "hw_bonebuffer.h" -#include "gles_shaderprogram.h" -#include "r_videoscale.h" -#include "gles_buffers.h" -#include "gles_postprocessstate.h" -#include "v_draw.h" -#include "printf.h" -#include "gles_hwtexture.h" - -#include "flatvertices.h" -#include "hw_cvars.h" - -EXTERN_CVAR (Bool, vid_vsync) -EXTERN_CVAR(Bool, r_drawvoxels) -EXTERN_CVAR(Int, gl_tonemap) -EXTERN_CVAR(Bool, cl_capfps) -EXTERN_CVAR(Int, gl_pipeline_depth); - -EXTERN_CVAR(Bool, gl_sort_textures); - -extern bool vid_hdr_active; - -namespace OpenGLESRenderer -{ - FGLRenderer *GLRenderer; - -//========================================================================== -// -// -// -//========================================================================== - -OpenGLFrameBuffer::OpenGLFrameBuffer(void *hMonitor, bool fullscreen) : - Super(hMonitor, fullscreen) -{ - // SetVSync needs to be at the very top to workaround a bug in Nvidia's OpenGL driver. - // If wglSwapIntervalEXT is called after glBindFramebuffer in a frame the setting is not changed! - Super::SetVSync(vid_vsync); - FHardwareTexture::InitGlobalState(); - - // Make sure all global variables tracking OpenGL context state are reset.. - gl_RenderState.Reset(); - - GLRenderer = nullptr; -} - -OpenGLFrameBuffer::~OpenGLFrameBuffer() -{ - PPResource::ResetAll(); - - if (mVertexData != nullptr) delete mVertexData; - if (mSkyData != nullptr) delete mSkyData; - if (mViewpoints != nullptr) delete mViewpoints; - if (mLights != nullptr) delete mLights; - if (mBones != nullptr) delete mBones; - mShadowMap.Reset(); - - if (GLRenderer) - { - delete GLRenderer; - GLRenderer = nullptr; - } -} - -//========================================================================== -// -// Initializes the GL renderer -// -//========================================================================== - -void OpenGLFrameBuffer::InitializeState() -{ - static bool first=true; - - mPipelineNbr = gl_pipeline_depth == 0? min(4, HW_MAX_PIPELINE_BUFFERS) : clamp(*gl_pipeline_depth, 1, HW_MAX_PIPELINE_BUFFERS); - mPipelineType = 1; - - InitGLES(); - - // Move some state to the framebuffer object for easier access. - hwcaps = gles.flags; - vendorstring = gles.vendorstring; - - glDepthFunc(GL_LESS); - - glEnable(GL_DITHER); - glDisable(GL_CULL_FACE); - glDisable(GL_POLYGON_OFFSET_FILL); - - glEnable(GL_BLEND); - if (gles.depthClampAvailable) glEnable(GL_DEPTH_CLAMP); - - glDisable(GL_DEPTH_TEST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - glClearDepthf(1.0f); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - SetViewportRects(nullptr); - - mVertexData = new FFlatVertexBuffer(GetWidth(), GetHeight(), mPipelineNbr); - mSkyData = new FSkyVertexBuffer; - mViewpoints = new HWViewpointBuffer(mPipelineNbr); - mLights = new FLightBuffer(mPipelineNbr); - mBones = new BoneBuffer(mPipelineNbr); - GLRenderer = new FGLRenderer(this); - GLRenderer->Initialize(GetWidth(), GetHeight()); - static_cast(mLights->GetBuffer())->BindBase(); - static_cast(mBones->GetBuffer())->BindBase(); -} - -//========================================================================== -// -// Updates the screen -// -//========================================================================== - -void OpenGLFrameBuffer::Update() -{ - twoD.Reset(); - Flush3D.Reset(); - - Flush3D.Clock(); - GLRenderer->Flush(); - Flush3D.Unclock(); - - Swap(); - Super::Update(); -} - -void OpenGLFrameBuffer::CopyScreenToBuffer(int width, int height, uint8_t* scr) -{ - IntRect bounds; - bounds.left = 0; - bounds.top = 0; - bounds.width = width; - bounds.height = height; - GLRenderer->CopyToBackbuffer(&bounds, false); - - // strictly speaking not needed as the glReadPixels should block until the scene is rendered, but this is to safeguard against shitty drivers - glFinish(); - glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, scr); -} - -//=========================================================================== -// -// Camera texture rendering -// -//=========================================================================== - -void OpenGLFrameBuffer::RenderTextureView(FCanvasTexture* tex, std::function renderFunc) -{ - GLRenderer->StartOffscreen(); - GLRenderer->BindToFrameBuffer(tex); - - IntRect bounds; - bounds.left = bounds.top = 0; - bounds.width = FHardwareTexture::GetTexDimension(tex->GetWidth()); - bounds.height = FHardwareTexture::GetTexDimension(tex->GetHeight()); - - renderFunc(bounds); - GLRenderer->EndOffscreen(); - - tex->SetUpdated(true); - static_cast(screen)->camtexcount++; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -const char* OpenGLFrameBuffer::DeviceName() const -{ - return gles.modelstring; -} - -//========================================================================== -// -// Swap the buffers -// -//========================================================================== - - -void OpenGLFrameBuffer::Swap() -{ - - Finish.Reset(); - Finish.Clock(); - - mVertexData->DropSync(); - - FPSLimit(); - SwapBuffers(); - - mVertexData->NextPipelineBuffer(); - mVertexData->WaitSync(); - - RenderState()->SetVertexBuffer(screen->mVertexData); // Needed for Raze because it does not reset it - - Finish.Unclock(); - camtexcount = 0; - FHardwareTexture::UnbindAll(); - gl_RenderState.ClearLastMaterial(); -} - -//========================================================================== -// -// Enable/disable vertical sync -// -//========================================================================== - -void OpenGLFrameBuffer::SetVSync(bool vsync) -{ - Super::SetVSync(vsync); -} - -//=========================================================================== -// -// -//=========================================================================== - -void OpenGLFrameBuffer::SetTextureFilterMode() -{ - if (GLRenderer != nullptr && GLRenderer->mSamplerManager != nullptr) GLRenderer->mSamplerManager->SetTextureFilterMode(); -} - -IHardwareTexture *OpenGLFrameBuffer::CreateHardwareTexture(int numchannels) -{ - return new FHardwareTexture(numchannels); -} - -void OpenGLFrameBuffer::PrecacheMaterial(FMaterial *mat, int translation) -{ - if (mat->Source()->GetUseType() == ETextureType::SWCanvas) return; - - int numLayers = mat->NumLayers(); - MaterialLayerInfo* layer; - auto base = static_cast(mat->GetLayer(0, translation, &layer)); - - if (base->BindOrCreate(layer->layerTexture, 0, CLAMP_NONE, translation, layer->scaleFlags)) - { - for (int i = 1; i < numLayers; i++) - { - auto systex = static_cast(mat->GetLayer(i, 0, &layer)); - systex->BindOrCreate(layer->layerTexture, i, CLAMP_NONE, 0, layer->scaleFlags); - } - } - // unbind everything. - FHardwareTexture::UnbindAll(); - gl_RenderState.ClearLastMaterial(); -} - -IVertexBuffer *OpenGLFrameBuffer::CreateVertexBuffer() -{ - return new GLVertexBuffer; -} - -IIndexBuffer *OpenGLFrameBuffer::CreateIndexBuffer() -{ - return new GLIndexBuffer; -} - -IDataBuffer *OpenGLFrameBuffer::CreateDataBuffer(int bindingpoint, bool ssbo, bool needsresize) -{ - return new GLDataBuffer(bindingpoint, ssbo); -} - - -void OpenGLFrameBuffer::SetViewportRects(IntRect *bounds) -{ - Super::SetViewportRects(bounds); - if (!bounds) - { - auto vrmode = VRMode::GetVRMode(true); - vrmode->AdjustViewport(this); - } -} - - -FRenderState* OpenGLFrameBuffer::RenderState() -{ - return &gl_RenderState; -} - - -void OpenGLFrameBuffer::FirstEye() -{ - //GLRenderer->mBuffers->CurrentEye() = 0; // always begin at zero, in case eye count changed -} - -void OpenGLFrameBuffer::NextEye(int eyecount) -{ - //GLRenderer->mBuffers->NextEye(eyecount); -} - -void OpenGLFrameBuffer::SetSceneRenderTarget(bool useSSAO) -{ -#ifndef NO_RENDER_BUFFER - GLRenderer->mBuffers->BindSceneFB(useSSAO); -#endif -} - - - -void OpenGLFrameBuffer::WaitForCommands(bool finish) -{ - glFinish(); -} - - -//=========================================================================== -// -// -// -//=========================================================================== - -void OpenGLFrameBuffer::BeginFrame() -{ - SetViewportRects(nullptr); - mViewpoints->Clear(); - if (GLRenderer != nullptr) - GLRenderer->BeginFrame(); -} - -//=========================================================================== -// -// Takes a screenshot -// -//=========================================================================== - -TArray OpenGLFrameBuffer::GetScreenshotBuffer(int &pitch, ESSType &color_type, float &gamma) -{ - const auto &viewport = mOutputLetterbox; - - // Grab what is in the back buffer. - // We cannot rely on SCREENWIDTH/HEIGHT here because the output may have been scaled. - TArray pixels; - pixels.Resize(viewport.width * viewport.height * 3); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glReadPixels(viewport.left, viewport.top, viewport.width, viewport.height, GL_RGB, GL_UNSIGNED_BYTE, &pixels[0]); - glPixelStorei(GL_PACK_ALIGNMENT, 4); - - // Copy to screenshot buffer: - int w = SCREENWIDTH; - int h = SCREENHEIGHT; - - TArray ScreenshotBuffer(w * h * 3, true); - - float rcpWidth = 1.0f / w; - float rcpHeight = 1.0f / h; - for (int y = 0; y < h; y++) - { - for (int x = 0; x < w; x++) - { - float u = (x + 0.5f) * rcpWidth; - float v = (y + 0.5f) * rcpHeight; - int sx = u * viewport.width; - int sy = v * viewport.height; - int sindex = (sx + sy * viewport.width) * 3; - int dindex = (x + (h - y - 1) * w) * 3; - ScreenshotBuffer[dindex] = pixels[sindex]; - ScreenshotBuffer[dindex + 1] = pixels[sindex + 1]; - ScreenshotBuffer[dindex + 2] = pixels[sindex + 2]; - } - } - - pitch = w * 3; - color_type = SS_RGB; - - // Screenshot should not use gamma correction if it was already applied to rendered image - gamma = 1; - if (vid_hdr_active && vid_fullscreen) - gamma *= 2.2f; - return ScreenshotBuffer; -} - -//=========================================================================== -// -// 2D drawing -// -//=========================================================================== - -void OpenGLFrameBuffer::Draw2D() -{ - if (GLRenderer != nullptr) - { - GLRenderer->mBuffers->BindCurrentFB(); - ::Draw2D(twod, gl_RenderState); - } -} - -void OpenGLFrameBuffer::PostProcessScene(bool swscene, int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) -{ - //if (!swscene) GLRenderer->mBuffers->BlitSceneToTexture(); // Copy the resulting scene to the current post process texture - GLRenderer->PostProcessScene(fixedcm, flash, afterBloomDrawEndScene2D); -} - -//========================================================================== -// -// OpenGLFrameBuffer :: WipeStartScreen -// -// Called before the current screen has started rendering. This needs to -// save what was drawn the previous frame so that it can be animated into -// what gets drawn this frame. -// -//========================================================================== - -FTexture *OpenGLFrameBuffer::WipeStartScreen() -{ - const auto &viewport = screen->mScreenViewport; - - auto tex = new FWrapperTexture(viewport.width, viewport.height, 1); - tex->GetSystemTexture()->CreateTexture(nullptr, viewport.width, viewport.height, 0, false, "WipeStartScreen"); - glFinish(); - static_cast(tex->GetSystemTexture())->Bind(0, false); - - GLRenderer->mBuffers->BindCurrentFB(); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, viewport.left, viewport.top, viewport.width, viewport.height); - return tex; -} - -//========================================================================== -// -// OpenGLFrameBuffer :: WipeEndScreen -// -// The screen we want to animate to has just been drawn. -// -//========================================================================== - -FTexture *OpenGLFrameBuffer::WipeEndScreen() -{ - GLRenderer->Flush(); - const auto &viewport = screen->mScreenViewport; - auto tex = new FWrapperTexture(viewport.width, viewport.height, 1); - tex->GetSystemTexture()->CreateTexture(NULL, viewport.width, viewport.height, 0, false, "WipeEndScreen"); - glFinish(); - static_cast(tex->GetSystemTexture())->Bind(0, false); - GLRenderer->mBuffers->BindCurrentFB(); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, viewport.left, viewport.top, viewport.width, viewport.height); - return tex; -} - -} diff --git a/src/common/rendering/gles/gles_framebuffer.h b/src/common/rendering/gles/gles_framebuffer.h deleted file mode 100644 index 3cf32f179..000000000 --- a/src/common/rendering/gles/gles_framebuffer.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef __GLES_FRAMEBUFFER -#define __GLES_FRAMEBUFFER - -#include "gl_sysfb.h" -#include "m_png.h" - -#include - -namespace OpenGLESRenderer -{ - -class FHardwareTexture; - -class OpenGLFrameBuffer : public SystemGLFrameBuffer -{ - typedef SystemGLFrameBuffer Super; - - void RenderTextureView(FCanvasTexture* tex, std::function renderFunc) override; - -public: - - explicit OpenGLFrameBuffer() {} - OpenGLFrameBuffer(void *hMonitor, bool fullscreen) ; - ~OpenGLFrameBuffer(); - int Backend() override { return 0; } - - void InitializeState() override; - void Update() override; - int GetShaderCount() override { return 0; } - - void FirstEye() override; - void NextEye(int eyecount) override; - void SetSceneRenderTarget(bool useSSAO) override; - void WaitForCommands(bool finish) override; - void CopyScreenToBuffer(int width, int height, uint8_t* buffer) override; - bool FlipSavePic() const override { return true; } - - FRenderState* RenderState() override; - - const char* DeviceName() const override; - void SetTextureFilterMode() override; - IHardwareTexture *CreateHardwareTexture(int numchannels) override; - void PrecacheMaterial(FMaterial *mat, int translation) override; - void BeginFrame() override; - void SetViewportRects(IntRect *bounds) override; - IVertexBuffer *CreateVertexBuffer() override; - IIndexBuffer *CreateIndexBuffer() override; - IDataBuffer *CreateDataBuffer(int bindingpoint, bool ssbo, bool needsresize) override; - - // Retrieves a buffer containing image data for a screenshot. - // Hint: Pitch can be negative for upside-down images, in which case buffer - // points to the last row in the buffer, which will be the first row output. - virtual TArray GetScreenshotBuffer(int &pitch, ESSType &color_type, float &gamma) override; - - void Swap(); - bool IsHWGammaActive() const { return HWGammaActive; } - - void SetVSync(bool vsync) override; - - void Draw2D() override; - void PostProcessScene(bool swscene, int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) override; - - bool HWGammaActive = false; // Are we using hardware or software gamma? - - FTexture *WipeStartScreen() override; - FTexture *WipeEndScreen() override; - - int camtexcount = 0; -}; - -} - -#endif //__GL_FRAMEBUFFER diff --git a/src/common/rendering/gles/gles_hwtexture.cpp b/src/common/rendering/gles/gles_hwtexture.cpp deleted file mode 100644 index 3f07c65d6..000000000 --- a/src/common/rendering/gles/gles_hwtexture.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* -** gl_hwtexture.cpp -** GL texture abstraction -** -**--------------------------------------------------------------------------- -** Copyright 2019 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -** -*/ - -#include "gles_system.h" - -#include "c_cvars.h" -#include "hw_material.h" - -#include "hw_cvars.h" -#include "gles_renderer.h" -#include "gles_samplers.h" -#include "gles_renderstate.h" -#include "gles_hwtexture.h" - -namespace OpenGLESRenderer -{ - - -TexFilter_s TexFilter[] = { - {GL_NEAREST, GL_NEAREST, false}, - {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, true}, - {GL_LINEAR, GL_LINEAR, false}, - {GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR, true}, - {GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, true}, - {GL_NEAREST_MIPMAP_LINEAR, GL_NEAREST, true}, - {GL_LINEAR_MIPMAP_LINEAR, GL_NEAREST, true}, -}; - -//=========================================================================== -// -// Static texture data -// -//=========================================================================== -unsigned int FHardwareTexture::lastbound[FHardwareTexture::MAX_TEXTURES]; - -//=========================================================================== -// -// Loads the texture image into the hardware -// -// NOTE: For some strange reason I was unable to find the source buffer -// should be one line higher than the actual texture. I got extremely -// strange crashes deep inside the GL driver when I didn't do it! -// -//=========================================================================== - -unsigned int FHardwareTexture::CreateTexture(unsigned char * buffer, int w, int h, int texunit, bool mipmap, const char *name) -{ - int rh,rw; - int texformat = GL_RGBA;// TexFormat[gl_texture_format]; - bool deletebuffer=false; - - // When running in SW mode buffer will be null, so set it to the texBuffer already created - // There could be other use cases I do not know about which means this is a bad idea.. - if (buffer == nullptr) - buffer = texBuffer; - - bool firstCall = glTexID == 0; - if (firstCall) - { - glGenTextures(1, &glTexID); - } - - int textureBinding = UINT_MAX; - if (texunit == -1) glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - if (texunit > 0) glActiveTexture(GL_TEXTURE0+texunit); - if (texunit >= 0) lastbound[texunit] = glTexID; - glBindTexture(GL_TEXTURE_2D, glTexID); - - - rw = GetTexDimension(w); - rh = GetTexDimension(h); - - if (!buffer) - { - // The texture must at least be initialized if no data is present. - mipmapped = false; - buffer=(unsigned char *)calloc(4,rw * (rh+1)); - deletebuffer=true; - //texheight=-h; - } - else - { - if (rw < w || rh < h) - { - // The texture is larger than what the hardware can handle so scale it down. - unsigned char * scaledbuffer=(unsigned char *)calloc(4,rw * (rh+1)); - if (scaledbuffer) - { - Resize(w, h, rw, rh, buffer, scaledbuffer); - deletebuffer=true; - buffer=scaledbuffer; - } - } - - - } - // store the physical size. - - int sourcetype; - - if (gles.glesMode == GLES_MODE_GLES) - { - if (glTextureBytes == 1) - { - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - sourcetype = GL_ALPHA; - texformat = GL_ALPHA; - } - else - { - sourcetype = GL_BGRA; // These two must be the same - texformat = GL_BGRA; - } - } - else - { - if (glTextureBytes == 1) //Use Red channel instread becuase Alpha does not work in OpenGL, swizzle later - { - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - sourcetype = GL_RED; - texformat = GL_RED; - } - else - { - sourcetype = GL_BGRA; - texformat = GL_RGBA; - } - } - - glTexImage2D(GL_TEXTURE_2D, 0, texformat, rw, rh, 0, sourcetype, GL_UNSIGNED_BYTE, buffer); - - if (gles.glesMode != GLES_MODE_GLES) - { - // The shader is using the alpha channel instead of red, this work on GLES but not on GL - // So the texture uses GL_RED and this swizzels the red channel into the alpha channel - if (glTextureBytes == 1) - { - GLint swizzleMask[] = { GL_ZERO, GL_ZERO, GL_ZERO, GL_RED }; - glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); - } - } - - if (deletebuffer && buffer) free(buffer); - - if (mipmap && TexFilter[gl_texture_filter].mipmapping) - { - glGenerateMipmap(GL_TEXTURE_2D); - mipmapped = true; - } - - if (texunit > 0) glActiveTexture(GL_TEXTURE0); - else if (texunit == -1) glBindTexture(GL_TEXTURE_2D, textureBinding); - return glTexID; -} - - -void FHardwareTexture::AllocateBuffer(int w, int h, int texelsize) -{ - if (texelsize < 1 || texelsize > 4) texelsize = 4; - glTextureBytes = texelsize; - bufferpitch = w; - - if (texBuffer) - delete[] texBuffer; - - texBuffer = new uint8_t[(w * h) * texelsize]; - return; -} - -uint8_t* FHardwareTexture::MapBuffer() -{ - return texBuffer; -} - -//=========================================================================== -// -// Destroys the texture -// -//=========================================================================== -FHardwareTexture::~FHardwareTexture() -{ - if (glTexID != 0) glDeleteTextures(1, &glTexID); - - if (texBuffer) - delete[] texBuffer; -} - - -//=========================================================================== -// -// Binds this patch -// -//=========================================================================== -unsigned int FHardwareTexture::Bind(int texunit, bool needmipmap) -{ - if (glTexID != 0) - { - if (lastbound[texunit] == glTexID) return glTexID; - lastbound[texunit] = glTexID; - if (texunit != 0) glActiveTexture(GL_TEXTURE0 + texunit); - glBindTexture(GL_TEXTURE_2D, glTexID); - // Check if we need mipmaps on a texture that was creted without them. - if (needmipmap && !mipmapped && TexFilter[gl_texture_filter].mipmapping) - { - glGenerateMipmap(GL_TEXTURE_2D); - mipmapped = true; - } - if (texunit != 0) glActiveTexture(GL_TEXTURE0); - return glTexID; - } - return 0; -} - -void FHardwareTexture::Unbind(int texunit) -{ - if (lastbound[texunit] != 0) - { - if (texunit != 0) glActiveTexture(GL_TEXTURE0+texunit); - glBindTexture(GL_TEXTURE_2D, 0); - if (texunit != 0) glActiveTexture(GL_TEXTURE0); - lastbound[texunit] = 0; - } -} - -void FHardwareTexture::UnbindAll() -{ - for(int texunit = 0; texunit < 16; texunit++) - { - Unbind(texunit); - } -} - -//=========================================================================== -// -// Creates a depth buffer for this texture -// -//=========================================================================== - -int FHardwareTexture::GetDepthBuffer(int width, int height) -{ - if (glDepthID == 0) - { - glGenRenderbuffers(1, &glDepthID); - glBindRenderbuffer(GL_RENDERBUFFER, glDepthID); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, - GetTexDimension(width), GetTexDimension(height)); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - } - return glDepthID; -} - - -//=========================================================================== -// -// Binds this texture's surfaces to the current framrbuffer -// -//=========================================================================== - -void FHardwareTexture::BindToFrameBuffer(int width, int height) -{ - width = GetTexDimension(width); - height = GetTexDimension(height); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, glTexID, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, GetDepthBuffer(width, height)); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, GetDepthBuffer(width, height)); -} - - -//=========================================================================== -// -// Binds a texture to the renderer -// -//=========================================================================== - -bool FHardwareTexture::BindOrCreate(FTexture *tex, int texunit, int clampmode, int translation, int flags) -{ - bool needmipmap = (clampmode <= CLAMP_XY) && !forcenofilter; - - // Bind it to the system. - if (!Bind(texunit, needmipmap)) - { - if (flags & CTF_Indexed) - { - glTextureBytes = 1; - forcenofilter = true; - needmipmap = false; - } - int w = 0, h = 0; - - // Create this texture - - FTextureBuffer texbuffer; - - if (!tex->isHardwareCanvas()) - { - texbuffer = tex->CreateTexBuffer(translation, flags | CTF_ProcessData); - w = texbuffer.mWidth; - h = texbuffer.mHeight; - } - else - { - w = tex->GetWidth(); - h = tex->GetHeight(); - } - if (!CreateTexture(texbuffer.mBuffer, w, h, texunit, needmipmap, "FHardwareTexture.BindOrCreate")) - { - // could not create texture - return false; - } - } - if (forcenofilter && clampmode <= CLAMP_XY) clampmode += CLAMP_NOFILTER - CLAMP_NONE; - GLRenderer->mSamplerManager->Bind(texunit, clampmode, 255); - return true; -} - -} diff --git a/src/common/rendering/gles/gles_hwtexture.h b/src/common/rendering/gles/gles_hwtexture.h deleted file mode 100644 index f367c5d3a..000000000 --- a/src/common/rendering/gles/gles_hwtexture.h +++ /dev/null @@ -1,83 +0,0 @@ -#pragma once -class FBitmap; -class FTexture; - -#include "tarray.h" -#include "hw_ihwtexture.h" - - -#ifdef LoadImage -#undef LoadImage -#endif - -#define SHADED_TEXTURE -1 -#define DIRECT_PALETTE -2 - -#include "tarray.h" -#include "gles_system.h" -#include "hw_ihwtexture.h" - -class FCanvasTexture; - -namespace OpenGLESRenderer -{ - -class FHardwareTexture : public IHardwareTexture -{ -public: - - static unsigned int lastbound[MAX_TEXTURES]; - - static int GetTexDimension(int value) - { - if (value > gles.max_texturesize) return gles.max_texturesize; - return value; - } - - static void InitGlobalState() { for (int i = 0; i < MAX_TEXTURES; i++) lastbound[i] = 0; } - -private: - - bool forcenofilter; - - unsigned int glTexID = 0; - unsigned int glDepthID = 0; // only used by camera textures - uint8_t* texBuffer; - - int glTextureBytes; - bool mipmapped = false; - - int GetDepthBuffer(int w, int h); - -public: - FHardwareTexture(int numchannels = 4, bool disablefilter = false) - { - forcenofilter = disablefilter; - glTextureBytes = numchannels; - - texBuffer = nullptr; - } - - ~FHardwareTexture(); - - static void Unbind(int texunit); - static void UnbindAll(); - - void BindToFrameBuffer(int w, int h); - - unsigned int Bind(int texunit, bool needmipmap); - bool BindOrCreate(FTexture* tex, int texunit, int clampmode, int translation, int flags); - - void AllocateBuffer(int w, int h, int texelsize); - uint8_t* MapBuffer(); - - unsigned int CreateTexture(unsigned char* buffer, int w, int h, int texunit, bool mipmap, const char* name); - unsigned int GetTextureHandle() - { - return glTexID; - } - - int numChannels() { return glTextureBytes; } -}; - -} diff --git a/src/common/rendering/gles/gles_postprocess.cpp b/src/common/rendering/gles/gles_postprocess.cpp deleted file mode 100644 index 1bedaf9cc..000000000 --- a/src/common/rendering/gles/gles_postprocess.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gles_system.h" -#include "m_png.h" -#include "gles_buffers.h" -#include "gles_framebuffer.h" -#include "gles_renderbuffers.h" -#include "gles_renderer.h" -#include "gles_postprocessstate.h" -#include "gles_shaderprogram.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" -#include "hwrenderer/postprocessing/hw_postprocess_cvars.h" -#include "flatvertices.h" -#include "r_videoscale.h" -#include "v_video.h" - -#include "hw_vrmodes.h" -#include "v_draw.h" - -extern bool vid_hdr_active; - - -namespace OpenGLESRenderer -{ - -int gl_dither_bpc = -1; - -void FGLRenderer::RenderScreenQuad() -{ - auto buffer = static_cast(screen->mVertexData->GetBufferObjects().first); - buffer->Bind(nullptr); - glDrawArrays(GL_TRIANGLE_STRIP, FFlatVertexBuffer::PRESENT_INDEX, 3); -} - -void FGLRenderer::PostProcessScene(int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D) -{ -#ifndef NO_RENDER_BUFFER - mBuffers->BindCurrentFB(); -#endif - if (afterBloomDrawEndScene2D) afterBloomDrawEndScene2D(); -} - - - -//----------------------------------------------------------------------------- -// -// Copies the rendered screen to its final destination -// -//----------------------------------------------------------------------------- - -void FGLRenderer::Flush() -{ - CopyToBackbuffer(nullptr, true); -} - -//----------------------------------------------------------------------------- -// -// Gamma correct while copying to frame buffer -// -//----------------------------------------------------------------------------- - -void FGLRenderer::CopyToBackbuffer(const IntRect *bounds, bool applyGamma) -{ -#ifdef NO_RENDER_BUFFER - mBuffers->BindOutputFB(); -#endif - screen->Draw2D(); // draw all pending 2D stuff before copying the buffer - twod->Clear(); - - FGLPostProcessState savedState; - savedState.SaveTextureBindings(2); - - mBuffers->BindOutputFB(); - - IntRect box; - if (bounds) - { - box = *bounds; - } - else - { - ClearBorders(); - box = screen->mOutputLetterbox; - } - - mBuffers->BindCurrentTexture(0); -#ifndef NO_RENDER_BUFFER - DrawPresentTexture(box, applyGamma); -#endif -} - -void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma) -{ - glViewport(box.left, box.top, box.width, box.height); - - mBuffers->BindDitherTexture(1); - - glActiveTexture(GL_TEXTURE0); - if (ViewportLinearScale()) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - mPresentShader->Bind(); - if (!applyGamma || framebuffer->IsHWGammaActive()) - { - mPresentShader->Uniforms->InvGamma = 1.0f; - mPresentShader->Uniforms->Contrast = 1.0f; - mPresentShader->Uniforms->Brightness = 0.0f; - mPresentShader->Uniforms->Saturation = 1.0f; - } - else - { - mPresentShader->Uniforms->InvGamma = 1.0f / clamp(vid_gamma, 0.1f, 4.f); - mPresentShader->Uniforms->Contrast = clamp(vid_contrast, 0.1f, 3.f); - mPresentShader->Uniforms->Brightness = clamp(vid_brightness, -0.8f, 0.8f); - mPresentShader->Uniforms->Saturation = clamp(vid_saturation, -15.0f, 15.f); - mPresentShader->Uniforms->GrayFormula = static_cast(gl_satformula); - } - if (vid_hdr_active && framebuffer->IsFullscreen()) - { - // Full screen exclusive mode treats a rgba16f frame buffer as linear. - // It probably will eventually in desktop mode too, but the DWM doesn't seem to support that. - mPresentShader->Uniforms->HdrMode = 1; - mPresentShader->Uniforms->ColorScale = (gl_dither_bpc == -1) ? 1023.0f : (float)((1 << gl_dither_bpc) - 1); - } - else - { - mPresentShader->Uniforms->HdrMode = 0; - mPresentShader->Uniforms->ColorScale = (gl_dither_bpc == -1) ? 255.0f : (float)((1 << gl_dither_bpc) - 1); - } - mPresentShader->Uniforms->Scale = { screen->mScreenViewport.width / (float)mBuffers->GetWidth(), screen->mScreenViewport.height / (float)mBuffers->GetHeight() }; - mPresentShader->Uniforms->Offset = { 0.0f, 0.0f }; - mPresentShader->Uniforms.SetData(); - - - for (size_t n = 0; n < mPresentShader->Uniforms.mFields.size(); n++) - { - UniformFieldDesc desc = mPresentShader->Uniforms.mFields[n]; - int loc = mPresentShader->Uniforms.UniformLocation[n]; - switch (desc.Type) - { - case UniformType::Int: - glUniform1i(loc, *((GLint*)(((char*)(&mPresentShader->Uniforms)) + desc.Offset))); - break; - case UniformType::Float: - glUniform1f(loc, *((GLfloat*)(((char*)(&mPresentShader->Uniforms)) + desc.Offset))); - break; - case UniformType::Vec2: - glUniform2fv(loc,1 , ((GLfloat*)(((char*)(&mPresentShader->Uniforms)) + desc.Offset))); - break; - default: - break; - } - } - - RenderScreenQuad(); -} - -//----------------------------------------------------------------------------- -// -// Fills the black bars around the screen letterbox -// -//----------------------------------------------------------------------------- - -void FGLRenderer::ClearBorders() -{ - const auto &box = screen->mOutputLetterbox; - - int clientWidth = framebuffer->GetClientWidth(); - int clientHeight = framebuffer->GetClientHeight(); - if (clientWidth == 0 || clientHeight == 0) - return; - - glViewport(0, 0, clientWidth, clientHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glEnable(GL_SCISSOR_TEST); - if (box.top > 0) - { - glScissor(0, 0, clientWidth, box.top); - glClear(GL_COLOR_BUFFER_BIT); - } - if (clientHeight - box.top - box.height > 0) - { - glScissor(0, box.top + box.height, clientWidth, clientHeight - box.top - box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - if (box.left > 0) - { - glScissor(0, box.top, box.left, box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - if (clientWidth - box.left - box.width > 0) - { - glScissor(box.left + box.width, box.top, clientWidth - box.left - box.width, box.height); - glClear(GL_COLOR_BUFFER_BIT); - } - glDisable(GL_SCISSOR_TEST); -} - -} diff --git a/src/common/rendering/gles/gles_postprocessstate.cpp b/src/common/rendering/gles/gles_postprocessstate.cpp deleted file mode 100644 index ea8921837..000000000 --- a/src/common/rendering/gles/gles_postprocessstate.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "gles_system.h" -#include "gles_postprocessstate.h" - -namespace OpenGLESRenderer -{ - -//----------------------------------------------------------------------------- -// -// Saves state modified by post processing shaders -// -//----------------------------------------------------------------------------- - -FGLPostProcessState::FGLPostProcessState() -{ - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - SaveTextureBindings(1); - - glGetBooleanv(GL_BLEND, &blendEnabled); - glGetBooleanv(GL_SCISSOR_TEST, &scissorEnabled); - glGetBooleanv(GL_DEPTH_TEST, &depthEnabled); - glGetIntegerv(GL_CURRENT_PROGRAM, ¤tProgram); - glGetIntegerv(GL_BLEND_EQUATION_RGB, &blendEquationRgb); - glGetIntegerv(GL_BLEND_EQUATION_ALPHA, &blendEquationAlpha); - glGetIntegerv(GL_BLEND_SRC_RGB, &blendSrcRgb); - glGetIntegerv(GL_BLEND_SRC_ALPHA, &blendSrcAlpha); - glGetIntegerv(GL_BLEND_DST_RGB, &blendDestRgb); - glGetIntegerv(GL_BLEND_DST_ALPHA, &blendDestAlpha); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_SCISSOR_TEST); - glDisable(GL_BLEND); -} - -void FGLPostProcessState::SaveTextureBindings(unsigned int numUnits) -{ - while (textureBinding.Size() < numUnits) - { - unsigned int i = textureBinding.Size(); - - GLint texture; - glActiveTexture(GL_TEXTURE0 + i); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &texture); - glBindTexture(GL_TEXTURE_2D, 0); - textureBinding.Push(texture); - } - glActiveTexture(GL_TEXTURE0); -} - -//----------------------------------------------------------------------------- -// -// Restores state at the end of post processing -// -//----------------------------------------------------------------------------- - -FGLPostProcessState::~FGLPostProcessState() -{ - if (blendEnabled) - glEnable(GL_BLEND); - else - glDisable(GL_BLEND); - - if (scissorEnabled) - glEnable(GL_SCISSOR_TEST); - else - glDisable(GL_SCISSOR_TEST); - - if (depthEnabled) - glEnable(GL_DEPTH_TEST); - else - glDisable(GL_DEPTH_TEST); - - - glBlendEquationSeparate(blendEquationRgb, blendEquationAlpha); - glBlendFuncSeparate(blendSrcRgb, blendDestRgb, blendSrcAlpha, blendDestAlpha); - - glUseProgram(currentProgram); - - // Fully unbind to avoid incomplete texture warnings from Nvidia's driver when gl_debug_level 4 is active - for (unsigned int i = 0; i < textureBinding.Size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, 0); - } - - - for (unsigned int i = 0; i < textureBinding.Size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, textureBinding[i]); - } - - glActiveTexture(activeTex); -} - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_postprocessstate.h b/src/common/rendering/gles/gles_postprocessstate.h deleted file mode 100644 index 1a5ec760f..000000000 --- a/src/common/rendering/gles/gles_postprocessstate.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef __GL_POSTPROCESSSTATE_H -#define __GL_POSTPROCESSSTATE_H - -#include -#include "matrix.h" -#include "c_cvars.h" - -namespace OpenGLESRenderer -{ - -class FGLPostProcessState -{ -public: - FGLPostProcessState(); - ~FGLPostProcessState(); - - void SaveTextureBindings(unsigned int numUnits); - -private: - FGLPostProcessState(const FGLPostProcessState &) = delete; - FGLPostProcessState &operator=(const FGLPostProcessState &) = delete; - - GLint activeTex; - TArray textureBinding; - TArray samplerBinding; - GLboolean blendEnabled; - GLboolean scissorEnabled; - GLboolean depthEnabled; - GLboolean multisampleEnabled; - GLint currentProgram; - GLint blendEquationRgb; - GLint blendEquationAlpha; - GLint blendSrcRgb; - GLint blendSrcAlpha; - GLint blendDestRgb; - GLint blendDestAlpha; -}; - -} -#endif diff --git a/src/common/rendering/gles/gles_renderbuffers.cpp b/src/common/rendering/gles/gles_renderbuffers.cpp deleted file mode 100644 index 002734b99..000000000 --- a/src/common/rendering/gles/gles_renderbuffers.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gles_system.h" -#include "v_video.h" -#include "printf.h" -#include "hw_cvars.h" -#include "gles_renderer.h" -#include "gles_renderbuffers.h" -#include "gles_postprocessstate.h" -#include "gles_shaderprogram.h" -#include "gles_buffers.h" - -#include - -EXTERN_CVAR(Int, gl_debug_level) - -namespace OpenGLESRenderer -{ - - //========================================================================== - // - // Initialize render buffers and textures used in rendering passes - // - //========================================================================== - - FGLRenderBuffers::FGLRenderBuffers() - { - - } - - //========================================================================== - // - // Free render buffer resources - // - //========================================================================== - - FGLRenderBuffers::~FGLRenderBuffers() - { - ClearScene(); - - DeleteTexture(mDitherTexture); - } - - void FGLRenderBuffers::ClearScene() - { - DeleteFrameBuffer(mSceneFB); - DeleteRenderBuffer(mSceneDepthStencilBuf); - DeleteRenderBuffer(mSceneStencilBuf); - } - - void FGLRenderBuffers::DeleteTexture(PPGLTexture& tex) - { - if (tex.handle != 0) - glDeleteTextures(1, &tex.handle); - tex.handle = 0; - } - - void FGLRenderBuffers::DeleteRenderBuffer(PPGLRenderBuffer& buf) - { - if (buf.handle != 0) - glDeleteRenderbuffers(1, &buf.handle); - buf.handle = 0; - } - - void FGLRenderBuffers::DeleteFrameBuffer(PPGLFrameBuffer& fb) - { - if (fb.handle != 0) - glDeleteFramebuffers(1, &fb.handle); - fb.handle = 0; - } - - //========================================================================== - // - // Makes sure all render buffers have sizes suitable for rending at the - // specified resolution - // - //========================================================================== - - void FGLRenderBuffers::Setup(int width, int height, int sceneWidth, int sceneHeight) - { - if (width <= 0 || height <= 0) - I_FatalError("Requested invalid render buffer sizes: screen = %dx%d", width, height); - - GLint activeTex; - GLint textureBinding; - glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTex); - glActiveTexture(GL_TEXTURE0); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &textureBinding); - - if (width != mWidth || height != mHeight) - CreatePipeline(width, height); - - if (width != mWidth || height != mHeight ) - CreateScene(width, height); - - mWidth = width; - mHeight = height; - mSceneWidth = sceneWidth; - mSceneHeight = sceneHeight; - - glBindTexture(GL_TEXTURE_2D, textureBinding); - glActiveTexture(activeTex); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - - if (FailedCreate) - { - ClearScene(); - mWidth = 0; - mHeight = 0; - mSceneWidth = 0; - mSceneHeight = 0; - I_FatalError("Unable to create render buffers."); - } - } - - //========================================================================== - // - // Creates the scene buffers - // - //========================================================================== - - void FGLRenderBuffers::CreateScene(int width, int height) - { - ClearScene(); - if(gles.depthStencilAvailable) - mSceneDepthStencilBuf = CreateRenderBuffer("SceneDepthStencil", GL_DEPTH24_STENCIL8, width, height); - else - { - mSceneDepthStencilBuf = CreateRenderBuffer("SceneDepthStencil", GL_DEPTH_COMPONENT16, width, height); - mSceneStencilBuf = CreateRenderBuffer("SceneStencil", GL_STENCIL_INDEX8, width, height); - } - mSceneFB= CreateFrameBuffer("SceneFB", mSceneTex, mSceneDepthStencilBuf, mSceneStencilBuf); - } - - //========================================================================== - // - // Creates the buffers needed for post processing steps - // - //========================================================================== - - void FGLRenderBuffers::CreatePipeline(int width, int height) - { - mSceneTex = Create2DTexture("PipelineTexture", GL_RGBA, width, height); - } - - - - //========================================================================== - // - // Creates a 2D texture defaulting to linear filtering and clamp to edge - // - //========================================================================== - - PPGLTexture FGLRenderBuffers::Create2DTexture(const char* name, GLuint format, int width, int height, const void* data) - { - PPGLTexture tex; - tex.Width = width; - tex.Height = height; - glGenTextures(1, &tex.handle); - glBindTexture(GL_TEXTURE_2D, tex.handle); - - GLenum dataformat = 0, datatype = 0; - /* - switch (format) - { - case GL_RGBA: dataformat = GL_RGBA; datatype = GL_UNSIGNED_BYTE; break; - - case GL_RGBA16: dataformat = GL_RGBA; datatype = GL_UNSIGNED_SHORT; break; - case GL_RGBA16F: dataformat = GL_RGBA; datatype = GL_FLOAT; break; - case GL_RGBA32F: dataformat = GL_RGBA; datatype = GL_FLOAT; break; - case GL_RGBA16_SNORM: dataformat = GL_RGBA; datatype = GL_SHORT; break; - case GL_R32F: dataformat = GL_RED; datatype = GL_FLOAT; break; - case GL_R16F: dataformat = GL_RED; datatype = GL_FLOAT; break; - case GL_RG32F: dataformat = GL_RG; datatype = GL_FLOAT; break; - case GL_RG16F: dataformat = GL_RG; datatype = GL_FLOAT; break; - case GL_RGB10_A2: dataformat = GL_RGBA; datatype = GL_UNSIGNED_INT_10_10_10_2; break; - case GL_DEPTH_COMPONENT24: dataformat = GL_DEPTH_COMPONENT; datatype = GL_FLOAT; break; - - case GL_STENCIL_INDEX8: dataformat = GL_STENCIL_INDEX8_OES; datatype = GL_INT; break; - case GL_DEPTH24_STENCIL8_OES: dataformat = GL_DEPTH_STENCIL_OES; datatype = GL_UNSIGNED_INT_24_8; break; - default: I_FatalError("Unknown format passed to FGLRenderBuffers.Create2DTexture"); - } - */ - format = GL_RGBA; - dataformat = GL_RGBA; - datatype = GL_UNSIGNED_BYTE; - - glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, dataformat, datatype, data); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - return tex; - } - - //========================================================================== - // - // Creates a render buffer - // - //========================================================================== - - PPGLRenderBuffer FGLRenderBuffers::CreateRenderBuffer(const char* name, GLuint format, int width, int height) - { - PPGLRenderBuffer buf; - glGenRenderbuffers(1, &buf.handle); - glBindRenderbuffer(GL_RENDERBUFFER, buf.handle); - - glRenderbufferStorage(GL_RENDERBUFFER, format, width, height); - return buf; - } - - //========================================================================== - // - // Creates a frame buffer - // - //========================================================================== - - PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char* name, PPGLTexture colorbuffer) - { - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer.handle, 0); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(false, false); - return fb; - } - - PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char* name, PPGLTexture colorbuffer, PPGLRenderBuffer depthstencil, PPGLRenderBuffer stencil) - { - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer.handle, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthstencil.handle); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, gles.depthStencilAvailable ? depthstencil.handle : stencil.handle); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; - } - - PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char* name, PPGLRenderBuffer colorbuffer, PPGLRenderBuffer depthstencil, PPGLRenderBuffer stencil) - { - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorbuffer.handle); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthstencil.handle); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, gles.depthStencilAvailable ? depthstencil.handle : stencil.handle); - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; - } - - PPGLFrameBuffer FGLRenderBuffers::CreateFrameBuffer(const char* name, PPGLTexture colorbuffer0, PPGLTexture colorbuffer1, PPGLTexture colorbuffer2, PPGLTexture depthstencil, PPGLRenderBuffer stencil) - { - PPGLFrameBuffer fb; - glGenFramebuffers(1, &fb.handle); - glBindFramebuffer(GL_FRAMEBUFFER, fb.handle); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorbuffer0.handle, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthstencil.handle); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, gles.depthStencilAvailable ? depthstencil.handle : stencil.handle); - - if (CheckFrameBufferCompleteness()) - ClearFrameBuffer(true, true); - return fb; - } - - //========================================================================== - // - // Verifies that the frame buffer setup is valid - // - //========================================================================== - - bool FGLRenderBuffers::CheckFrameBufferCompleteness() - { - GLenum result = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (result == GL_FRAMEBUFFER_COMPLETE) - return true; - - FString error = "glCheckFramebufferStatus failed: "; - switch (result) - { - default: error.AppendFormat("error code %d", (int)result); break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: error << "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: error << "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"; break; - case GL_FRAMEBUFFER_UNSUPPORTED: error << "GL_FRAMEBUFFER_UNSUPPORTED"; break; - } - Printf("%s\n", error.GetChars()); - - - return false; - } - - //========================================================================== - // - // Clear frame buffer to make sure it never contains uninitialized data - // - //========================================================================== - - void FGLRenderBuffers::ClearFrameBuffer(bool stencil, bool depth) - { - GLboolean scissorEnabled; - GLint stencilValue; - GLfloat depthValue; - glGetBooleanv(GL_SCISSOR_TEST, &scissorEnabled); - glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &stencilValue); - glGetFloatv(GL_DEPTH_CLEAR_VALUE, &depthValue); - glDisable(GL_SCISSOR_TEST); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearDepthf(0.0f); - glClearStencil(0); - GLenum flags = GL_COLOR_BUFFER_BIT; - if (stencil) - flags |= GL_STENCIL_BUFFER_BIT; - if (depth) - flags |= GL_DEPTH_BUFFER_BIT; - glClear(flags); - glClearStencil(stencilValue); - glClearDepthf(depthValue); - if (scissorEnabled) - glEnable(GL_SCISSOR_TEST); - } - - - void FGLRenderBuffers::BindDitherTexture(int texunit) - { - if (!mDitherTexture) - { - static const float data[64] = - { - .0078125, .2578125, .1328125, .3828125, .0234375, .2734375, .1484375, .3984375, - .7578125, .5078125, .8828125, .6328125, .7734375, .5234375, .8984375, .6484375, - .0703125, .3203125, .1953125, .4453125, .0859375, .3359375, .2109375, .4609375, - .8203125, .5703125, .9453125, .6953125, .8359375, .5859375, .9609375, .7109375, - .0390625, .2890625, .1640625, .4140625, .0546875, .3046875, .1796875, .4296875, - .7890625, .5390625, .9140625, .6640625, .8046875, .5546875, .9296875, .6796875, - .1015625, .3515625, .2265625, .4765625, .1171875, .3671875, .2421875, .4921875, - .8515625, .6015625, .9765625, .7265625, .8671875, .6171875, .9921875, .7421875, - }; - - glActiveTexture(GL_TEXTURE0 + texunit); - mDitherTexture = Create2DTexture("DitherTexture", GL_RGBA, 8, 8, data); - } - mDitherTexture.Bind(1, GL_NEAREST, GL_REPEAT); - } - - - //========================================================================== - // - // Makes the scene frame buffer active (multisample, depth, stecil, etc.) - // - //========================================================================== - - void FGLRenderBuffers::BindSceneFB(bool sceneData) - { - glBindFramebuffer(GL_FRAMEBUFFER, mSceneFB.handle); - } - - //========================================================================== - // - // Binds the current scene/effect/hud texture to the specified texture unit - // - //========================================================================== - - void FGLRenderBuffers::BindCurrentTexture(int index, int filter, int wrap) - { - mSceneTex.Bind(index, filter, wrap); - } - - //========================================================================== - // - // Makes the frame buffer for the current texture active - // - //========================================================================== - - void FGLRenderBuffers::BindCurrentFB() - { -#ifndef NO_RENDER_BUFFER - mSceneFB.Bind(); -#endif - } - - //========================================================================== - // - // Makes the screen frame buffer active - // - //========================================================================== - - void FGLRenderBuffers::BindOutputFB() - { - glBindFramebuffer(GL_FRAMEBUFFER, 0); - } - - //========================================================================== - // - // Returns true if render buffers are supported and should be used - // - //========================================================================== - - bool FGLRenderBuffers::FailedCreate = false; - - - - -} // namespace OpenGLRenderer \ No newline at end of file diff --git a/src/common/rendering/gles/gles_renderbuffers.h b/src/common/rendering/gles/gles_renderbuffers.h deleted file mode 100644 index 3369a864f..000000000 --- a/src/common/rendering/gles/gles_renderbuffers.h +++ /dev/null @@ -1,152 +0,0 @@ - -#pragma once - -#include "hwrenderer/postprocessing/hw_postprocess.h" - -namespace OpenGLESRenderer -{ - -class FGLRenderBuffers; - -class PPGLTexture -{ -public: - void Bind(int index, int filter = GL_NEAREST, int wrap = GL_CLAMP_TO_EDGE) - { - glActiveTexture(GL_TEXTURE0 + index); - glBindTexture(GL_TEXTURE_2D, handle); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); - } - - int Width = -1; - int Height = -1; - - explicit operator bool() const { return handle != 0; } - -private: - GLuint handle = 0; - - friend class FGLRenderBuffers; - friend class PPGLTextureBackend; -}; - -class PPGLFrameBuffer -{ -public: - void Bind() - { - glBindFramebuffer(GL_FRAMEBUFFER, handle); - } - - explicit operator bool() const { return handle != 0; } - -private: - GLuint handle = 0; - - friend class FGLRenderBuffers; - friend class PPGLTextureBackend; -}; - -class PPGLRenderBuffer -{ -private: - GLuint handle = 0; - - explicit operator bool() const { return handle != 0; } - - friend class FGLRenderBuffers; -}; - -class PPGLTextureBackend : public PPTextureBackend -{ -public: - ~PPGLTextureBackend() - { - if (Tex.handle != 0) - { - glDeleteTextures(1, &Tex.handle); - Tex.handle = 0; - } - if (FB.handle != 0) - { - glDeleteFramebuffers(1, &FB.handle); - FB.handle = 0; - } - } - - PPGLTexture Tex; - PPGLFrameBuffer FB; -}; - -class FShaderProgram; - - -class FGLRenderBuffers -{ -public: - FGLRenderBuffers(); - ~FGLRenderBuffers(); - - void Setup(int width, int height, int sceneWidth, int sceneHeight); - - void BindSceneFB(bool sceneData); - - - void BindCurrentTexture(int index, int filter = GL_NEAREST, int wrap = GL_CLAMP_TO_EDGE); - void BindCurrentFB(); - void BindNextFB(); - void NextTexture(); - - - void BindOutputFB(); - - void BindDitherTexture(int texunit); - - int GetWidth() const { return mWidth; } - int GetHeight() const { return mHeight; } - - int GetSceneWidth() const { return mSceneWidth; } - int GetSceneHeight() const { return mSceneHeight; } - -private: - void ClearScene(); - - void CreateScene(int width, int height); - void CreatePipeline(int width, int height); - - PPGLTexture Create2DTexture(const char *name, GLuint format, int width, int height, const void *data = nullptr); - PPGLRenderBuffer CreateRenderBuffer(const char *name, GLuint format, int width, int height); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer, PPGLRenderBuffer depthstencil, PPGLRenderBuffer stencil); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLRenderBuffer colorbuffer, PPGLRenderBuffer depthstencil, PPGLRenderBuffer stencil); - PPGLFrameBuffer CreateFrameBuffer(const char *name, PPGLTexture colorbuffer0, PPGLTexture colorbuffer1, PPGLTexture colorbuffer2, PPGLTexture depthstencil, PPGLRenderBuffer stencil); - bool CheckFrameBufferCompleteness(); - void ClearFrameBuffer(bool stencil, bool depth); - void DeleteTexture(PPGLTexture &handle); - void DeleteRenderBuffer(PPGLRenderBuffer &handle); - void DeleteFrameBuffer(PPGLFrameBuffer &handle); - - int mWidth = 0; - int mHeight = 0; - int mSceneWidth = 0; - int mSceneHeight = 0; - - // Buffers for the scene - PPGLTexture mSceneDepthStencilTex; - PPGLTexture mSceneTex; - PPGLRenderBuffer mSceneDepthStencilBuf; - PPGLRenderBuffer mSceneStencilBuf; // This is only use when combined depth-stencil is not avaliable - PPGLFrameBuffer mSceneFB; - bool mSceneUsesTextures = false; - - PPGLTexture mDitherTexture; - - static bool FailedCreate; - - friend class GLPPRenderState; -}; - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_renderer.cpp b/src/common/rendering/gles/gles_renderer.cpp deleted file mode 100644 index 1a33b3bd7..000000000 --- a/src/common/rendering/gles/gles_renderer.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/* -** gl_renderer.cpp -** Renderer interface -** -**--------------------------------------------------------------------------- -** Copyright 2005-2020 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ - -#include "gles_system.h" -#include "files.h" -#include "v_video.h" -#include "m_png.h" -#include "filesystem.h" -#include "i_time.h" -#include "cmdlib.h" -#include "version.h" -#include "gles_framebuffer.h" -#include "hw_cvars.h" -#include "gles_renderer.h" -#include "gles_hwtexture.h" -#include "gles_renderstate.h" -#include "gles_samplers.h" -#include "gles_renderbuffers.h" -#include "gles_shaderprogram.h" -#include "flatvertices.h" -#include "hw_lightbuffer.h" -#include "r_videoscale.h" -#include "model.h" -#include "gles_postprocessstate.h" -#include "gles_buffers.h" -#include "texturemanager.h" - -EXTERN_CVAR(Int, screenblocks) - -namespace OpenGLESRenderer -{ - -//=========================================================================== -// -// Renderer interface -// -//=========================================================================== - -//----------------------------------------------------------------------------- -// -// Initialize -// -//----------------------------------------------------------------------------- - -FGLRenderer::FGLRenderer(OpenGLFrameBuffer *fb) -{ - framebuffer = fb; -} - -void FGLRenderer::Initialize(int width, int height) -{ - mScreenBuffers = new FGLRenderBuffers(); - mBuffers = mScreenBuffers; - mPresentShader = new FPresentShader(); - - mFBID = 0; - mOldFBID = 0; - - mShaderManager = new FShaderManager; - mSamplerManager = new FSamplerManager; -} - -FGLRenderer::~FGLRenderer() -{ - FlushModels(); - TexMan.FlushAll(); - if (mShaderManager != nullptr) delete mShaderManager; - if (mFBID != 0) glDeleteFramebuffers(1, &mFBID); - - if (mBuffers) delete mBuffers; - if (mPresentShader) delete mPresentShader; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -bool FGLRenderer::StartOffscreen() -{ - if (mFBID == 0) - glGenFramebuffers(1, &mFBID); - glGetIntegerv(GL_FRAMEBUFFER_BINDING, &mOldFBID); - glBindFramebuffer(GL_FRAMEBUFFER, mFBID); - return true; -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::EndOffscreen() -{ - glBindFramebuffer(GL_FRAMEBUFFER, mOldFBID); -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::BindToFrameBuffer(FTexture *tex) -{ - auto BaseLayer = static_cast(tex->GetHardwareTexture(0, 0)); - // must create the hardware texture first - BaseLayer->BindOrCreate(tex, 0, 0, 0, 0); - FHardwareTexture::Unbind(0); - gl_RenderState.ClearLastMaterial(); - BaseLayer->BindToFrameBuffer(tex->GetWidth(), tex->GetHeight()); -} - -//=========================================================================== -// -// -// -//=========================================================================== - -void FGLRenderer::BeginFrame() -{ - mScreenBuffers->Setup(screen->mScreenViewport.width, screen->mScreenViewport.height, screen->mSceneViewport.width, screen->mSceneViewport.height); -} - -} diff --git a/src/common/rendering/gles/gles_renderer.h b/src/common/rendering/gles/gles_renderer.h deleted file mode 100644 index b1e7d2346..000000000 --- a/src/common/rendering/gles/gles_renderer.h +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef __GL_RENDERER_H -#define __GL_RENDERER_H - -#include "v_video.h" -#include "vectors.h" -#include "matrix.h" -#include "gles_renderbuffers.h" -#include - -#ifdef _MSC_VER -#pragma warning(disable:4244) -#endif - -struct particle_t; -class FCanvasTexture; -class FFlatVertexBuffer; -class FSkyVertexBuffer; -class HWPortal; -class FLightBuffer; -class BoneBuffer; -class DPSprite; -class FGLRenderBuffers; -class FGL2DDrawer; -class SWSceneDrawer; -class HWViewpointBuffer; -struct FRenderViewpoint; - -namespace OpenGLESRenderer -{ - class FHardwareTexture; - class FShaderManager; - class FSamplerManager; - class OpenGLFrameBuffer; - class FPresentShaderBase; - class FPresentShader; - class FPresent3DCheckerShader; - class FPresent3DColumnShader; - class FPresent3DRowShader; - class FShadowMapShader; - -class FGLRenderer -{ -public: - - OpenGLFrameBuffer *framebuffer; - int mMirrorCount = 0; - int mPlaneMirrorCount = 0; - FShaderManager *mShaderManager = nullptr; - FSamplerManager* mSamplerManager = nullptr; - unsigned int mFBID = 0; - unsigned int mStencilValue = 0; - - int mOldFBID = 0; - - FGLRenderBuffers *mBuffers = nullptr; - FGLRenderBuffers *mScreenBuffers = nullptr; - FPresentShader *mPresentShader = nullptr; - - //FRotator mAngles; - - FGLRenderer(OpenGLFrameBuffer *fb); - ~FGLRenderer() ; - - void Initialize(int width, int height); - - void ClearBorders(); - - void PresentStereo(); - void RenderScreenQuad(); - void PostProcessScene(int fixedcm, float flash, const std::function &afterBloomDrawEndScene2D); - - void CopyToBackbuffer(const IntRect *bounds, bool applyGamma); - void DrawPresentTexture(const IntRect &box, bool applyGamma); - void Flush(); - void BeginFrame(); - - bool StartOffscreen(); - void EndOffscreen(); - - void BindToFrameBuffer(FTexture* tex); - -private: - - bool QuadStereoCheckInitialRenderContextState(); - void PresentAnaglyph(bool r, bool g, bool b); - void PresentSideBySide(int); - void PresentTopBottom(); - void prepareInterleavedPresent(FPresentShaderBase& shader); - void PresentColumnInterleaved(); - void PresentRowInterleaved(); - void PresentCheckerInterleaved(); - void PresentQuadStereo(); - -}; - -struct TexFilter_s -{ - int minfilter; - int magfilter; - bool mipmapping; -} ; - - -extern FGLRenderer *GLRenderer; - -} -#endif diff --git a/src/common/rendering/gles/gles_renderstate.cpp b/src/common/rendering/gles/gles_renderstate.cpp deleted file mode 100644 index 5995fd3b6..000000000 --- a/src/common/rendering/gles/gles_renderstate.cpp +++ /dev/null @@ -1,742 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2009-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_renderstate.cpp -** Render state maintenance -** -*/ - - -#include "gles_system.h" -#include "hw_cvars.h" -#include "flatvertices.h" -#include "gles_shader.h" -#include "gles_renderer.h" -#include "hw_lightbuffer.h" -#include "hw_bonebuffer.h" -#include "gles_renderbuffers.h" -#include "gles_hwtexture.h" -#include "gles_buffers.h" -#include "gles_renderer.h" -#include "gles_samplers.h" - -#include "hw_clock.h" -#include "printf.h" - -#include "hwrenderer/data/hw_viewpointbuffer.h" - -namespace OpenGLESRenderer -{ - -FGLRenderState gl_RenderState; - -static VSMatrix identityMatrix(1); - -static void matrixToGL(const VSMatrix &mat, int loc) -{ - glUniformMatrix4fv(loc, 1, false, (float*)&mat); -} - -//========================================================================== -// -// This only gets called once upon setup. -// With OpenGL the state is persistent and cannot be cleared, once set up. -// -//========================================================================== - -void FGLRenderState::Reset() -{ - FRenderState::Reset(); - mVertexBuffer = mCurrentVertexBuffer = nullptr; - mGlossiness = 0.0f; - mSpecularLevel = 0.0f; - mShaderTimer = 0.0f; - - stRenderStyle = DefaultRenderStyle(); - stSrcBlend = stDstBlend = -1; - stBlendEquation = -1; - stAlphaTest = 0; - mLastDepthClamp = true; - - mEffectState = 0; - activeShader = nullptr; - - mCurrentVertexBuffer = nullptr; - mCurrentVertexOffsets[0] = mVertexOffsets[0] = 0; - mCurrentIndexBuffer = nullptr; - -} - -//========================================================================== -// -// Apply shader settings -// -//========================================================================== - -bool FGLRenderState::ApplyShader() -{ - static const float nulvec[] = { 0.f, 0.f, 0.f, 0.f }; - - ShaderFlavourData flavour; - - // Need to calc light data now in order to select correct shader - float* lightPtr = NULL; - int modLights = 0; - int subLights = 0; - int addLights = 0; - int totalLights = 0; - - flavour.hasSpotLight = false; - - if (mLightIndex >= 0) - { - lightPtr = ((float*)screen->mLights->GetBuffer()->Memory()); - lightPtr += ((int64_t)mLightIndex * 4); - - // Calculate how much light data there is to upload, this is stored in the first 4 floats - modLights = int(lightPtr[1]) / LIGHT_VEC4_NUM; - subLights = (int(lightPtr[2]) - int(lightPtr[1])) / LIGHT_VEC4_NUM; - addLights = (int(lightPtr[3]) - int(lightPtr[2])) / LIGHT_VEC4_NUM; - - // Here we limit the number of lights, but don't change the light data so priority has to be mod, sub then add - if (modLights > (int)gles.maxlights) - modLights = gles.maxlights; - - if (modLights + subLights > (int)gles.maxlights) - subLights = gles.maxlights - modLights; - - if (modLights + subLights + addLights > (int)gles.maxlights) - addLights = gles.maxlights - modLights - subLights; - - totalLights = modLights + subLights + addLights; - - // Skip passed the first 4 floats so the upload below only contains light data - lightPtr += 4; - - float* findSpotsPtr = lightPtr + 11; // The 11th float contains '1' if the light is a spot light, see hw_dynlightdata.cpp - - for (int n = 0; n < totalLights; n++) - { - if (*findSpotsPtr > 0) // This is a spot light - { - flavour.hasSpotLight = true; - break; - } - findSpotsPtr += LIGHT_VEC4_NUM * 4; - } - } - - - int tm = GetTextureModeAndFlags(mTempTM); - flavour.textureMode = tm & 0xffff; - flavour.texFlags = tm >> 16; //Move flags to start of word - - if (mTextureClamp && flavour.textureMode == TM_NORMAL) flavour.textureMode = TM_CLAMPY; // fixme. Clamp can now be combined with all modes. - - if (flavour.textureMode == -1) - flavour.textureMode = 0; - - - flavour.blendFlags = (int)(mStreamData.uTextureAddColor.a + 0.01); - flavour.paletteInterpolate = !!(flavour.blendFlags & 0x4000); - - flavour.twoDFog = false; - flavour.fogEnabled = false; - flavour.fogEquationRadial = false; - flavour.colouredFog = false; - - flavour.fogEquationRadial = (gl_fogmode == 2); - - flavour.twoDFog = false; - flavour.fogEnabled = false; - flavour.colouredFog = false; - - if (mFogEnabled) - { - if (mFogEnabled == 2) - { - flavour.twoDFog = true; - } - else if (gl_fogmode) - { - flavour.fogEnabled = true; - - if ((GetFogColor() & 0xffffff) != 0) - flavour.colouredFog = true; - } - } - - flavour.doDesaturate = mStreamData.uDesaturationFactor != 0; - flavour.useULightLevel = (mLightParms[3] >= 0); //#define uLightLevel uLightAttr.a - - // Yes create shaders for all combinations of active lights to avoid more branches - flavour.dynLightsMod = (modLights > 0); - flavour.dynLightsSub = (subLights > 0); - flavour.dynLightsAdd = (addLights > 0); - - flavour.useObjectColor2 = (mStreamData.uObjectColor2.a > 0); - flavour.useGlowTopColor = mGlowEnabled && (mStreamData.uGlowTopColor[3] > 0); - flavour.useGlowBottomColor = mGlowEnabled && (mStreamData.uGlowBottomColor[3] > 0); - - flavour.useColorMap = (mColorMapSpecial >= CM_FIRSTSPECIALCOLORMAP) || (mColorMapFlash != 1); - - flavour.buildLighting = (mHwUniforms->mPalLightLevels >> 16) == 5; // Build engine mode - flavour.bandedSwLight = !!(mHwUniforms->mPalLightLevels & 0xFF); - -#ifdef NPOT_EMULATION - flavour.npotEmulation = (mStreamData.uNpotEmulation.Y != 0); -#endif - - if (mSpecialEffect > EFF_NONE) - { - activeShader = GLRenderer->mShaderManager->BindEffect(mSpecialEffect, mPassType, flavour); - } - else - { - activeShader = GLRenderer->mShaderManager->Get(mTextureEnabled ? mEffectState : SHADER_NoTexture, mAlphaThreshold >= 0.f, mPassType); - - activeShader->Bind(flavour); - } - - - if (mHwUniforms) - { - activeShader->cur->muProjectionMatrix.Set(&mHwUniforms->mProjectionMatrix); - activeShader->cur->muViewMatrix.Set(&mHwUniforms->mViewMatrix); - activeShader->cur->muNormalViewMatrix.Set(&mHwUniforms->mNormalViewMatrix); - activeShader->cur->muCameraPos.Set(&mHwUniforms->mCameraPos.X); - activeShader->cur->muClipLine.Set(&mHwUniforms->mClipLine.X); - activeShader->cur->muGlobVis.Set(mHwUniforms->mGlobVis); - activeShader->cur->muPalLightLevels.Set(mHwUniforms->mPalLightLevels & 0xFF); // JUST pass the pal levels, clear the top bits - activeShader->cur->muViewHeight.Set(mHwUniforms->mViewHeight); - activeShader->cur->muClipHeight.Set(mHwUniforms->mClipHeight); - activeShader->cur->muClipHeightDirection.Set(mHwUniforms->mClipHeightDirection); - //activeShader->cur->muShadowmapFilter.Set(mHwUniforms->mShadowmapFilter); - } - - glVertexAttrib4fv(VATTR_COLOR, &mStreamData.uVertexColor.X); - glVertexAttrib4fv(VATTR_NORMAL, &mStreamData.uVertexNormal.X); - - activeShader->cur->muDesaturation.Set(mStreamData.uDesaturationFactor); - //activeShader->cur->muFogEnabled.Set(fogset); - - activeShader->cur->muLightParms.Set(mLightParms); - activeShader->cur->muFogColor.Set(mStreamData.uFogColor); - activeShader->cur->muObjectColor.Set(mStreamData.uObjectColor); - activeShader->cur->muDynLightColor.Set(&mStreamData.uDynLightColor.X); - activeShader->cur->muInterpolationFactor.Set(mStreamData.uInterpolationFactor); - activeShader->cur->muTimer.Set((double)(screen->FrameTime - firstFrame) * (double)mShaderTimer / 1000.); - activeShader->cur->muAlphaThreshold.Set(mAlphaThreshold); - activeShader->cur->muBoneIndexBase.Set(-1); - activeShader->cur->muClipSplit.Set(mClipSplit); - activeShader->cur->muSpecularMaterial.Set(mGlossiness, mSpecularLevel); - activeShader->cur->muAddColor.Set(mStreamData.uAddColor); - activeShader->cur->muTextureAddColor.Set(mStreamData.uTextureAddColor); - activeShader->cur->muTextureModulateColor.Set(mStreamData.uTextureModulateColor); - activeShader->cur->muTextureBlendColor.Set(mStreamData.uTextureBlendColor); - activeShader->cur->muDetailParms.Set(&mStreamData.uDetailParms.X); -#ifdef NPOT_EMULATION - activeShader->cur->muNpotEmulation.Set(&mStreamData.uNpotEmulation.X); -#endif - - if (flavour.useColorMap) - { - if (mColorMapSpecial < CM_FIRSTSPECIALCOLORMAP || mColorMapSpecial >= CM_MAXCOLORMAP) - { - activeShader->cur->muFixedColormapStart.Set( 0,0,0, mColorMapFlash ); - activeShader->cur->muFixedColormapRange.Set( 0,0,0, 1.f ); - } - else - { - FSpecialColormap* scm = &SpecialColormaps[mColorMapSpecial - CM_FIRSTSPECIALCOLORMAP]; - - //uniforms.MapStart = { scm->ColorizeStart[0], scm->ColorizeStart[1], scm->ColorizeStart[2], flash }; - activeShader->cur->muFixedColormapStart.Set( scm->ColorizeStart[0], scm->ColorizeStart[1], scm->ColorizeStart[2], mColorMapFlash ); - activeShader->cur->muFixedColormapRange.Set( scm->ColorizeEnd[0] - scm->ColorizeStart[0], - scm->ColorizeEnd[1] - scm->ColorizeStart[1], scm->ColorizeEnd[2] - scm->ColorizeStart[2], 0.f ); - } - } - - if (mGlowEnabled || activeShader->cur->currentglowstate) - { - activeShader->cur->muGlowTopColor.Set(&mStreamData.uGlowTopColor.X); - activeShader->cur->muGlowBottomColor.Set(&mStreamData.uGlowBottomColor.X); - activeShader->cur->muGlowTopPlane.Set(&mStreamData.uGlowTopPlane.X); - activeShader->cur->muGlowBottomPlane.Set(&mStreamData.uGlowBottomPlane.X); - activeShader->cur->currentglowstate = mGlowEnabled; - } - - if (mGradientEnabled || activeShader->cur->currentgradientstate) - { - activeShader->cur->muObjectColor2.Set(mStreamData.uObjectColor2); - activeShader->cur->muGradientTopPlane.Set(&mStreamData.uGradientTopPlane.X); - activeShader->cur->muGradientBottomPlane.Set(&mStreamData.uGradientBottomPlane.X); - activeShader->cur->currentgradientstate = mGradientEnabled; - } - - if (mSplitEnabled || activeShader->cur->currentsplitstate) - { - activeShader->cur->muSplitTopPlane.Set(&mStreamData.uSplitTopPlane.X); - activeShader->cur->muSplitBottomPlane.Set(&mStreamData.uSplitBottomPlane.X); - activeShader->cur->currentsplitstate = mSplitEnabled; - } - - - if (mTextureMatrixEnabled) - { - matrixToGL(mTextureMatrix, activeShader->cur->texturematrix_index); - activeShader->cur->currentTextureMatrixState = true; - } - else if (activeShader->cur->currentTextureMatrixState) - { - activeShader->cur->currentTextureMatrixState = false; - matrixToGL(identityMatrix, activeShader->cur->texturematrix_index); - } - - if (mModelMatrixEnabled) - { - matrixToGL(mModelMatrix, activeShader->cur->modelmatrix_index); - VSMatrix norm; - norm.computeNormalMatrix(mModelMatrix); - matrixToGL(norm, activeShader->cur->normalmodelmatrix_index); - activeShader->cur->currentModelMatrixState = true; - } - else if (activeShader->cur->currentModelMatrixState) - { - activeShader->cur->currentModelMatrixState = false; - matrixToGL(identityMatrix, activeShader->cur->modelmatrix_index); - matrixToGL(identityMatrix, activeShader->cur->normalmodelmatrix_index); - } - - // Upload the light data - if (mLightIndex >= 0) - { - // Calculate the total number of vec4s we need - int totalVectors = totalLights * LIGHT_VEC4_NUM; - - if (totalVectors > (int)gles.numlightvectors) - totalVectors = gles.numlightvectors; - - glUniform4fv(activeShader->cur->lights_index, totalVectors, lightPtr); - - int range[4] = { 0, - modLights * LIGHT_VEC4_NUM, - (modLights + subLights) * LIGHT_VEC4_NUM, - (modLights + subLights + addLights) * LIGHT_VEC4_NUM }; - - activeShader->cur->muLightRange.Set(range); - } - - if (gles.glesMode >= GLES_MODE_OGL3) - { - // Upload bone data - // NOTE, this is pretty inefficient, it will be reloading the same data over and over in a single frame - // Need to add something to detect a start of new frame then only update the data when it's been changed - if ((mBoneIndexBase >= 0)) - { - float* bonesPtr = ((float*)screen->mBones->GetBuffer()->Memory()); - - int number = screen->mBones->GetCurrentIndex(); - - glUniformMatrix4fv(activeShader->cur->bones_index, number, false, bonesPtr); - - activeShader->cur->muBoneIndexBase.Set(mBoneIndexBase); - } - } - - return true; -} - - -//========================================================================== -// -// Apply State -// -//========================================================================== - -void FGLRenderState::ApplyState() -{ - if (mRenderStyle != stRenderStyle) - { - ApplyBlendMode(); - stRenderStyle = mRenderStyle; - } - - if (mSplitEnabled != stSplitEnabled) - { - stSplitEnabled = mSplitEnabled; - } - - if (mMaterial.mChanged) - { - ApplyMaterial(mMaterial.mMaterial, mMaterial.mClampMode, mMaterial.mTranslation, mMaterial.mOverrideShader); - mMaterial.mChanged = false; - } - - - if (mBias.mFactor == 0 && mBias.mUnits == 0) - { - glDisable(GL_POLYGON_OFFSET_FILL); - } - else - { - glEnable(GL_POLYGON_OFFSET_FILL); - } - glPolygonOffset(mBias.mFactor, mBias.mUnits); - mBias.mChanged = false; -} - -void FGLRenderState::ApplyBuffers() -{ - if (mVertexBuffer != mCurrentVertexBuffer || mVertexOffsets[0] != mCurrentVertexOffsets[0] || mVertexOffsets[1] != mCurrentVertexOffsets[1]) - { - assert(mVertexBuffer != nullptr); - static_cast(mVertexBuffer)->Bind(mVertexOffsets); - mCurrentVertexBuffer = mVertexBuffer; - mCurrentVertexOffsets[0] = mVertexOffsets[0]; - mCurrentVertexOffsets[1] = mVertexOffsets[1]; - } - if (mIndexBuffer != mCurrentIndexBuffer) - { - if (mIndexBuffer) static_cast(mIndexBuffer)->Bind(); - mCurrentIndexBuffer = mIndexBuffer; - } -} - -void FGLRenderState::Apply() -{ - ApplyState(); - ApplyBuffers(); - ApplyShader(); -} - -//=========================================================================== -// -// Binds a texture to the renderer -// -//=========================================================================== - -void FGLRenderState::ApplyMaterial(FMaterial *mat, int clampmode, int translation, int overrideshader) -{ - if (mat->Source()->isHardwareCanvas()) - { - mTempTM = TM_OPAQUE; - } - else - { - mTempTM = TM_NORMAL; - } - auto tex = mat->Source(); - mEffectState = overrideshader >= 0 ? overrideshader : mat->GetShaderIndex(); - mShaderTimer = tex->GetShaderSpeed(); - SetSpecular(tex->GetGlossiness(), tex->GetSpecularLevel()); - if (tex->isHardwareCanvas()) static_cast(tex->GetTexture())->NeedUpdate(); - - clampmode = tex->GetClampMode(clampmode); - - // avoid rebinding the same texture multiple times. - if (mat == lastMaterial && lastClamp == clampmode && translation == lastTranslation) return; - lastMaterial = mat; - lastClamp = clampmode; - lastTranslation = translation; - - int maxbound = 0; - - int numLayers = mat->NumLayers(); - MaterialLayerInfo* layer; - auto base = static_cast(mat->GetLayer(0, translation, &layer)); - - if (base->BindOrCreate(tex->GetTexture(), 0, clampmode, translation, layer->scaleFlags)) - { - if (!(layer->scaleFlags & CTF_Indexed)) - { - for (int i = 1; i < numLayers; i++) - { - auto systex = static_cast(mat->GetLayer(i, 0, &layer)); - // fixme: Upscale flags must be disabled for certain layers. - systex->BindOrCreate(layer->layerTexture, i, clampmode, 0, layer->scaleFlags); - maxbound = i; - } - } - else - { - for (int i = 1; i < 3; i++) - { - auto systex = static_cast(mat->GetLayer(i, translation, &layer)); - GLRenderer->mSamplerManager->Bind(i, CLAMP_NONE, 255); - systex->Bind(i, false); - maxbound = i; - } - } - } - // unbind everything from the last texture that's still active - for (int i = maxbound + 1; i <= maxBoundMaterial; i++) - { - FHardwareTexture::Unbind(i); - maxBoundMaterial = maxbound; - } -} - -//========================================================================== -// -// Apply blend mode from RenderStyle -// -//========================================================================== - -void FGLRenderState::ApplyBlendMode() -{ - static int blendstyles[] = { GL_ZERO, GL_ONE, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA }; - static int renderops[] = { 0, GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 }; - - int srcblend = blendstyles[mRenderStyle.SrcAlpha%STYLEALPHA_MAX]; - int dstblend = blendstyles[mRenderStyle.DestAlpha%STYLEALPHA_MAX]; - int blendequation = renderops[mRenderStyle.BlendOp & 15]; - - if (blendequation == -1) // This was a fuzz style. - { - srcblend = GL_DST_COLOR; - dstblend = GL_ONE_MINUS_SRC_ALPHA; - blendequation = GL_FUNC_ADD; - } - - // Checks must be disabled until all draw code has been converted. - if (srcblend != stSrcBlend || dstblend != stDstBlend) - { - stSrcBlend = srcblend; - stDstBlend = dstblend; - glBlendFunc(srcblend, dstblend); - } - if (blendequation != stBlendEquation) - { - stBlendEquation = blendequation; - glBlendEquation(blendequation); - } - -} - -//========================================================================== -// -// API dependent draw calls -// -//========================================================================== - -static int dt2gl[] = { GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP }; - -void FGLRenderState::Draw(int dt, int index, int count, bool apply) -{ - if (apply) - { - Apply(); - } - drawcalls.Clock(); - glDrawArrays(dt2gl[dt], index, count); - drawcalls.Unclock(); -} - -void FGLRenderState::DrawIndexed(int dt, int index, int count, bool apply) -{ - if (apply) - { - Apply(); - } - drawcalls.Clock(); - glDrawElements(dt2gl[dt], count, GL_UNSIGNED_INT, (void*)(intptr_t)(index * sizeof(uint32_t))); - drawcalls.Unclock(); -} - -void FGLRenderState::SetDepthMask(bool on) -{ - glDepthMask(on); -} - -void FGLRenderState::SetDepthFunc(int func) -{ - static int df2gl[] = { GL_LESS, GL_LEQUAL, GL_ALWAYS }; - glDepthFunc(df2gl[func]); -} - -void FGLRenderState::SetDepthRange(float min, float max) -{ - glDepthRangef(min, max); -} - -void FGLRenderState::SetColorMask(bool r, bool g, bool b, bool a) -{ - glColorMask(r, g, b, a); -} - -void FGLRenderState::SetStencil(int offs, int op, int flags = -1) -{ - static int op2gl[] = { GL_KEEP, GL_INCR, GL_DECR }; - - glStencilFunc(GL_EQUAL, screen->stencilValue + offs, ~0); // draw sky into stencil - glStencilOp(GL_KEEP, GL_KEEP, op2gl[op]); // this stage doesn't modify the stencil - - if (flags != -1) - { - bool cmon = !(flags & SF_ColorMaskOff); - glColorMask(cmon, cmon, cmon, cmon); // don't write to the graphics buffer - glDepthMask(!(flags & SF_DepthMaskOff)); - } -} - -void FGLRenderState::ToggleState(int state, bool on) -{ - if (on) - { - glEnable(state); - } - else - { - glDisable(state); - } -} - -void FGLRenderState::SetCulling(int mode) -{ - if (mode != Cull_None) - { - glEnable(GL_CULL_FACE); - glFrontFace(mode == Cull_CCW ? GL_CCW : GL_CW); - } - else - { - glDisable(GL_CULL_FACE); - } -} - -void FGLRenderState::EnableClipDistance(int num, bool state) -{ - -} - -void FGLRenderState::Clear(int targets) -{ - // This always clears to default values. - int gltarget = 0; - if (targets & CT_Depth) - { - gltarget |= GL_DEPTH_BUFFER_BIT; - - glClearDepthf(1); - } - if (targets & CT_Stencil) - { - gltarget |= GL_STENCIL_BUFFER_BIT; - glClearStencil(0); - } - if (targets & CT_Color) - { - gltarget |= GL_COLOR_BUFFER_BIT; - glClearColor(screen->mSceneClearColor[0], screen->mSceneClearColor[1], screen->mSceneClearColor[2], screen->mSceneClearColor[3]); - } - glClear(gltarget); -} - -void FGLRenderState::EnableStencil(bool on) -{ - ToggleState(GL_STENCIL_TEST, on); -} - -void FGLRenderState::SetScissor(int x, int y, int w, int h) -{ - if (w > -1) - { - glEnable(GL_SCISSOR_TEST); - glScissor(x, y, w, h); - } - else - { - glDisable(GL_SCISSOR_TEST); - } -} - -void FGLRenderState::SetViewport(int x, int y, int w, int h) -{ - glViewport(x, y, w, h); -} - -void FGLRenderState::EnableDepthTest(bool on) -{ - ToggleState(GL_DEPTH_TEST, on); -} - -void FGLRenderState::EnableMultisampling(bool on) -{ - -} - -void FGLRenderState::EnableLineSmooth(bool on) -{ - -} - - -//========================================================================== -// -// -// -//========================================================================== -void FGLRenderState::ClearScreen() -{ - - screen->mViewpoints->Set2D(*this, SCREENWIDTH, SCREENHEIGHT); - SetColor(0, 0, 0); - Apply(); - - glDisable(GL_DEPTH_TEST); - - glDrawArrays(GL_TRIANGLE_STRIP, FFlatVertexBuffer::FULLSCREEN_INDEX, 4); - - glEnable(GL_DEPTH_TEST); - -} - - - -//========================================================================== -// -// Below are less frequently altrered state settings which do not get -// buffered by the state object, but set directly instead. -// -//========================================================================== - -bool FGLRenderState::SetDepthClamp(bool on) -{ - bool res = mLastDepthClamp; - - if (gles.depthClampAvailable) - { - if (!on) glDisable(GL_DEPTH_CLAMP); - else glEnable(GL_DEPTH_CLAMP); - } - - mLastDepthClamp = on; - return res; -} -void FGLRenderState::ApplyViewport(void* data) -{ - mHwUniforms = reinterpret_cast(static_cast(data)); - -} -} diff --git a/src/common/rendering/gles/gles_renderstate.h b/src/common/rendering/gles/gles_renderstate.h deleted file mode 100644 index c0bee73c0..000000000 --- a/src/common/rendering/gles/gles_renderstate.h +++ /dev/null @@ -1,144 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2009-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// - -#ifndef __GL_RENDERSTATE_H -#define __GL_RENDERSTATE_H - -#include -#include -#include "matrix.h" -#include "hw_renderstate.h" -#include "hw_material.h" -#include "c_cvars.h" -#include "hwrenderer/data/hw_viewpointuniforms.h" - -namespace OpenGLESRenderer -{ - -class FShader; -struct HWSectorPlane; - -class FGLRenderState final : public FRenderState -{ - uint8_t mLastDepthClamp : 1; - - float mGlossiness, mSpecularLevel; - float mShaderTimer; - - int mEffectState; - int mTempTM = TM_NORMAL; - - FRenderStyle stRenderStyle; - int stSrcBlend, stDstBlend; - bool stAlphaTest; - bool stSplitEnabled; - int stBlendEquation; - - FShader *activeShader; - - int mNumDrawBuffers = 1; - - bool ApplyShader(); - void ApplyState(); - - // Texture binding state - FMaterial *lastMaterial = nullptr; - int lastClamp = 0; - int lastTranslation = 0; - int maxBoundMaterial = -1; - size_t mLastMappedLightIndex = SIZE_MAX; - size_t mLastMappedBoneIndexBase = SIZE_MAX; - - IVertexBuffer *mCurrentVertexBuffer; - int mCurrentVertexOffsets[2]; // one per binding point - IIndexBuffer *mCurrentIndexBuffer; - - HWViewpointUniforms* mHwUniforms = nullptr; - -public: - - FGLRenderState() - { - Reset(); - } - - void Reset(); - - void ClearLastMaterial() - { - lastMaterial = nullptr; - } - - void ApplyMaterial(FMaterial *mat, int clampmode, int translation, int overrideshader); - - void Apply(); - void ApplyBuffers(); - void ApplyBlendMode(); - - void ResetVertexBuffer() - { - // forces rebinding with the next 'apply' call. - mCurrentVertexBuffer = nullptr; - mCurrentIndexBuffer = nullptr; - } - - void SetSpecular(float glossiness, float specularLevel) - { - mGlossiness = glossiness; - mSpecularLevel = specularLevel; - } - - void EnableDrawBuffers(int count, bool apply = false) override - { - - } - - void ToggleState(int state, bool on); - - void ClearScreen() override; - void Draw(int dt, int index, int count, bool apply = true) override; - void DrawIndexed(int dt, int index, int count, bool apply = true) override; - - bool SetDepthClamp(bool on) override; - void SetDepthMask(bool on) override; - void SetDepthFunc(int func) override; - void SetDepthRange(float min, float max) override; - void SetColorMask(bool r, bool g, bool b, bool a) override; - void SetStencil(int offs, int op, int flags) override; - void SetCulling(int mode) override; - void EnableClipDistance(int num, bool state) override; - void Clear(int targets) override; - void EnableStencil(bool on) override; - void SetScissor(int x, int y, int w, int h) override; - void SetViewport(int x, int y, int w, int h) override; - void EnableDepthTest(bool on) override; - void EnableMultisampling(bool on) override; - void EnableLineSmooth(bool on) override; - - void ApplyViewport(void* data); -}; - -extern FGLRenderState gl_RenderState; - -} - -#endif diff --git a/src/common/rendering/gles/gles_samplers.cpp b/src/common/rendering/gles/gles_samplers.cpp deleted file mode 100644 index 17efe78ca..000000000 --- a/src/common/rendering/gles/gles_samplers.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/* -** gl_samplers.cpp -** -** Texture sampler handling -** -**--------------------------------------------------------------------------- -** Copyright 2015-2019 Christoph Oelckers -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions -** are met: -** -** 1. Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** 2. 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. -** 3. The name of the author may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -**--------------------------------------------------------------------------- -** -*/ -#include "gles_system.h" -#include "c_cvars.h" - -#include "hw_cvars.h" - -#include "gles_renderer.h" -#include "gles_samplers.h" -#include "hw_material.h" -#include "i_interface.h" - -namespace OpenGLESRenderer -{ - -extern TexFilter_s TexFilter[]; - - -FSamplerManager::FSamplerManager() -{ - SetTextureFilterMode(); -} - -FSamplerManager::~FSamplerManager() -{ - -} - -void FSamplerManager::UnbindAll() -{ - -} - -uint8_t FSamplerManager::Bind(int texunit, int num, int lastval) -{ - - int filter = sysCallbacks.DisableTextureFilter && sysCallbacks.DisableTextureFilter() ? 0 : gl_texture_filter; - bool anisoAvailable = gles.anistropicFilterAvailable && (!sysCallbacks.DisableTextureFilter || !sysCallbacks.DisableTextureFilter()); - - glActiveTexture(GL_TEXTURE0 + texunit); - switch (num) - { - case CLAMP_NONE: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - if (lastval >= CLAMP_XY_NOMIP) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_filter_anisotropic); - } - break; - - case CLAMP_X: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - if (lastval >= CLAMP_XY_NOMIP) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_filter_anisotropic); - } - break; - - case CLAMP_Y: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - if (lastval >= CLAMP_XY_NOMIP) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_filter_anisotropic); - } - break; - - case CLAMP_XY: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - if (lastval >= CLAMP_XY_NOMIP) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_filter_anisotropic); - } - break; - - case CLAMP_XY_NOMIP: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - - case CLAMP_NOFILTER: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - - case CLAMP_NOFILTER_X: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - - case CLAMP_NOFILTER_Y: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - - case CLAMP_NOFILTER_XY: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - - case CLAMP_CAMTEX: - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - if (anisoAvailable) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0); - break; - } - glActiveTexture(GL_TEXTURE0); - return 255; -} - - -void FSamplerManager::SetTextureFilterMode() -{ - /* - GLRenderer->FlushTextures(); - - GLint bounds[IHardwareTexture::MAX_TEXTURES]; - - // Unbind all - for(int i = IHardwareTexture::MAX_TEXTURES-1; i >= 0; i--) - { - glActiveTexture(GL_TEXTURE0 + i); - glGetIntegerv(GL_SAMPLER_BINDING, &bounds[i]); - glBindSampler(i, 0); - } - - int filter = sysCallbacks.DisableTextureFilter && sysCallbacks.DisableTextureFilter() ? 0 : gl_texture_filter; - - for (int i = 0; i < 4; i++) - { - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MIN_FILTER, TexFilter[filter].minfilter); - glSamplerParameteri(mSamplers[i], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - glSamplerParameterf(mSamplers[i], GL_TEXTURE_MAX_ANISOTROPY_EXT, filter > 0? gl_texture_filter_anisotropic : 1.0); - } - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter); - glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter); - for(int i = 0; i < IHardwareTexture::MAX_TEXTURES; i++) - { - glBindSampler(i, bounds[i]); - } - */ -} - - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_samplers.h b/src/common/rendering/gles/gles_samplers.h deleted file mode 100644 index 541b409b7..000000000 --- a/src/common/rendering/gles/gles_samplers.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __GLES_SAMPLERS_H -#define __GLES_SAMPLERS_H - -#include "gles_hwtexture.h" -#include "textures.h" - -namespace OpenGLESRenderer -{ - - -class FSamplerManager -{ - void UnbindAll(); - -public: - - FSamplerManager(); - ~FSamplerManager(); - - uint8_t Bind(int texunit, int num, int lastval); - void SetTextureFilterMode(); - -}; - -} -#endif - diff --git a/src/common/rendering/gles/gles_shader.cpp b/src/common/rendering/gles/gles_shader.cpp deleted file mode 100644 index 61c1a720e..000000000 --- a/src/common/rendering/gles/gles_shader.cpp +++ /dev/null @@ -1,949 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2004-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_shader.cpp -** -** GLSL shader handling -** -*/ - -#include "gles_system.h" -#include "c_cvars.h" -#include "v_video.h" -#include "filesystem.h" -#include "engineerrors.h" -#include "cmdlib.h" -#include "md5.h" -#include "gles_shader.h" -#include "hw_shaderpatcher.h" -#include "shaderuniforms.h" -#include "hw_viewpointuniforms.h" -#include "hw_lightbuffer.h" -#include "i_specialpaths.h" -#include "printf.h" -#include "version.h" - -#include "matrix.h" -#include "gles_renderer.h" -#include -#include - -namespace OpenGLESRenderer -{ - -CVAR(Int, gles_glsl_precision, 2, 0); // 0 = low, 1 = medium, 2 = high - -FString GetGLSLPrecision() -{ - FString str = "precision highp int;\n \ - precision highp float;\n"; - - if (gles_glsl_precision == 0) - str.Substitute("highp", "lowp"); - else if (gles_glsl_precision == 1) - str.Substitute("highp", "mediump"); - - return str; -} - -struct ProgramBinary -{ - uint32_t format; - TArray data; -}; - -static const char *ShaderMagic = "ZDSC"; - -static std::map> ShaderCache; // Not a TMap because it doesn't support unique_ptr move semantics - -bool IsShaderCacheActive() -{ - static bool active = true; - static bool firstcall = true; - - if (firstcall) - { - const char *vendor = (const char *)glGetString(GL_VENDOR); - active = !(strstr(vendor, "Intel") == nullptr); - firstcall = false; - } - return active; -} - -static FString CalcProgramBinaryChecksum(const FString &vertex, const FString &fragment) -{ - const GLubyte *vendor = glGetString(GL_VENDOR); - const GLubyte *renderer = glGetString(GL_RENDERER); - const GLubyte *version = glGetString(GL_VERSION); - - uint8_t digest[16]; - MD5Context md5; - md5.Update(vendor, (unsigned int)strlen((const char*)vendor)); - md5.Update(renderer, (unsigned int)strlen((const char*)renderer)); - md5.Update(version, (unsigned int)strlen((const char*)version)); - md5.Update((const uint8_t *)vertex.GetChars(), (unsigned int)vertex.Len()); - md5.Update((const uint8_t *)fragment.GetChars(), (unsigned int)fragment.Len()); - md5.Final(digest); - - char hexdigest[33]; - for (int i = 0; i < 16; i++) - { - int v = digest[i] >> 4; - hexdigest[i * 2] = v < 10 ? ('0' + v) : ('a' + v - 10); - v = digest[i] & 15; - hexdigest[i * 2 + 1] = v < 10 ? ('0' + v) : ('a' + v - 10); - } - hexdigest[32] = 0; - return hexdigest; -} - -static FString CreateProgramCacheName(bool create) -{ - FString path = M_GetCachePath(create); - if (create) CreatePath(path); - path << "/shadercache.zdsc"; - return path; -} - -static void LoadShaders() -{ - static bool loaded = false; - if (loaded) - return; - loaded = true; - - try - { - FString path = CreateProgramCacheName(false); - FileReader fr; - if (!fr.OpenFile(path)) - I_Error("Could not open shader file"); - - char magic[4]; - fr.Read(magic, 4); - if (memcmp(magic, ShaderMagic, 4) != 0) - I_Error("Not a shader cache file"); - - uint32_t count = fr.ReadUInt32(); - if (count > 512) - I_Error("Too many shaders cached"); - - for (uint32_t i = 0; i < count; i++) - { - char hexdigest[33]; - if (fr.Read(hexdigest, 32) != 32) - I_Error("Read error"); - hexdigest[32] = 0; - - std::unique_ptr binary(new ProgramBinary()); - binary->format = fr.ReadUInt32(); - uint32_t size = fr.ReadUInt32(); - if (size > 1024 * 1024) - I_Error("Shader too big, probably file corruption"); - - binary->data.Resize(size); - if (fr.Read(binary->data.Data(), binary->data.Size()) != binary->data.Size()) - I_Error("Read error"); - - ShaderCache[hexdigest] = std::move(binary); - } - } - catch (...) - { - ShaderCache.clear(); - } -} - -static void SaveShaders() -{ - FString path = CreateProgramCacheName(true); - std::unique_ptr fw(FileWriter::Open(path)); - if (fw) - { - uint32_t count = (uint32_t)ShaderCache.size(); - fw->Write(ShaderMagic, 4); - fw->Write(&count, sizeof(uint32_t)); - for (const auto &it : ShaderCache) - { - uint32_t size = it.second->data.Size(); - fw->Write(it.first.GetChars(), 32); - fw->Write(&it.second->format, sizeof(uint32_t)); - fw->Write(&size, sizeof(uint32_t)); - fw->Write(it.second->data.Data(), it.second->data.Size()); - } - } -} - -TArray LoadCachedProgramBinary(const FString &vertex, const FString &fragment, uint32_t &binaryFormat) -{ - LoadShaders(); - - auto it = ShaderCache.find(CalcProgramBinaryChecksum(vertex, fragment)); - if (it != ShaderCache.end()) - { - binaryFormat = it->second->format; - return it->second->data; - } - else - { - binaryFormat = 0; - return {}; - } -} - -void SaveCachedProgramBinary(const FString &vertex, const FString &fragment, const TArray &binary, uint32_t binaryFormat) -{ - auto &entry = ShaderCache[CalcProgramBinaryChecksum(vertex, fragment)]; - entry.reset(new ProgramBinary()); - entry->format = binaryFormat; - entry->data = binary; - - SaveShaders(); -} - -bool FShader::Configure(const char* name, const char* vert_prog_lump, const char* fragprog, const char* fragprog2, const char* light_fragprog, const char* defines) -{ - mVertProg = vert_prog_lump; - mFragProg = fragprog; - mFragProg2 = fragprog2; - mLightProg = light_fragprog; - mDefinesBase = defines; - - return true; -} - -void FShader::LoadVariant() -{ - //mDefinesBase - Load(mName.GetChars(), mVertProg, mFragProg, mFragProg2, mLightProg, mDefinesBase); -} - -bool FShader::Load(const char * name, const char * vert_prog_lump_, const char * frag_prog_lump_, const char * proc_prog_lump_, const char * light_fragprog_, const char * defines) -{ - ShaderVariantData* shaderData = new ShaderVariantData(); - - FString vert_prog_lump = vert_prog_lump_; - FString frag_prog_lump = frag_prog_lump_; - FString proc_prog_lump = proc_prog_lump_; - FString light_fragprog = light_fragprog_; - - vert_prog_lump.Substitute("shaders/", "shaders_gles/"); - frag_prog_lump.Substitute("shaders/", "shaders_gles/"); - proc_prog_lump.Substitute("shaders/", "shaders_gles/"); - light_fragprog.Substitute("shaders/", "shaders_gles/"); - - //light_fragprog.Substitute("material_pbr", "material_normal"); - - if(light_fragprog.Len()) - light_fragprog = "shaders_gles/glsl/material_normal.fp"; // NOTE: Always use normal material for now, ignore others - - - static char buffer[10000]; - FString error; - - FString i_data = GetGLSLPrecision(); - - i_data += R"( - - // light buffers - uniform vec4 lights[MAXIMUM_LIGHT_VECTORS]; - - // bone matrix buffers - uniform mat4 bones[MAXIMUM_LIGHT_VECTORS]; - - uniform mat4 ProjectionMatrix; - uniform mat4 ViewMatrix; - uniform mat4 NormalViewMatrix; - - uniform vec4 uCameraPos; - uniform vec4 uClipLine; - - uniform float uGlobVis; // uGlobVis = R_GetGlobVis(r_visibility) / 32.0 - uniform int uPalLightLevels; - uniform int uViewHeight; // Software fuzz scaling - uniform float uClipHeight; - uniform float uClipHeightDirection; - uniform int uShadowmapFilter; - - uniform int uTextureMode; - uniform vec2 uClipSplit; - uniform float uAlphaThreshold; - - // colors - uniform vec4 uObjectColor; - uniform vec4 uObjectColor2; - uniform vec4 uDynLightColor; - uniform vec4 uAddColor; - uniform vec4 uTextureBlendColor; - uniform vec4 uTextureModulateColor; - uniform vec4 uTextureAddColor; - uniform vec4 uFogColor; - uniform float uDesaturationFactor; - uniform float uInterpolationFactor; - - // Glowing walls stuff - uniform vec4 uGlowTopPlane; - uniform vec4 uGlowTopColor; - uniform vec4 uGlowBottomPlane; - uniform vec4 uGlowBottomColor; - - uniform vec4 uGradientTopPlane; - uniform vec4 uGradientBottomPlane; - - uniform vec4 uSplitTopPlane; - uniform vec4 uSplitBottomPlane; - - uniform vec4 uDetailParms; - // Lighting + Fog - uniform vec4 uLightAttr; - #define uLightLevel uLightAttr.a - #define uFogDensity uLightAttr.b - #define uLightFactor uLightAttr.g - #define uLightDist uLightAttr.r - //uniform int uFogEnabled; - - // dynamic lights - uniform ivec4 uLightRange; - - // bone animation - uniform int uBoneIndexBase; - - // Blinn glossiness and specular level - uniform vec2 uSpecularMaterial; - - // matrices - uniform mat4 ModelMatrix; - uniform mat4 NormalModelMatrix; - uniform mat4 TextureMatrix; - - uniform vec4 uFixedColormapStart; - uniform vec4 uFixedColormapRange; - - // textures - uniform sampler2D tex; - uniform sampler2D ShadowMap; - uniform sampler2D texture2; - uniform sampler2D texture3; - uniform sampler2D texture4; - uniform sampler2D texture5; - uniform sampler2D texture6; - uniform sampler2D texture7; - uniform sampler2D texture8; - uniform sampler2D texture9; - uniform sampler2D texture10; - uniform sampler2D texture11; - - // timer data - uniform float timer; - - // material types - #if defined(SPECULAR) - #define normaltexture texture2 - #define speculartexture texture3 - #define brighttexture texture4 - #define detailtexture texture5 - #define glowtexture texture6 - #elif defined(PBR) - #define normaltexture texture2 - #define metallictexture texture3 - #define roughnesstexture texture4 - #define aotexture texture5 - #define brighttexture texture6 - #define detailtexture texture7 - #define glowtexture texture8 - #else - #define brighttexture texture2 - #define detailtexture texture3 - #define glowtexture texture4 - #endif - )"; - -#ifdef NPOT_EMULATION - i_data += "#define NPOT_EMULATION\nuniform vec2 uNpotEmulation;\n"; -#endif - - int vp_lump = fileSystem.CheckNumForFullName(vert_prog_lump, 0); - if (vp_lump == -1) I_Error("Unable to load '%s'", vert_prog_lump.GetChars()); - FileData vp_data = fileSystem.ReadFile(vp_lump); - - int fp_lump = fileSystem.CheckNumForFullName(frag_prog_lump, 0); - if (fp_lump == -1) I_Error("Unable to load '%s'", frag_prog_lump.GetChars()); - FileData fp_data = fileSystem.ReadFile(fp_lump); - - - -// -// The following code uses GetChars on the strings to get rid of terminating 0 characters. Do not remove or the code may break! -// - FString vp_comb; - - assert(screen->mLights != NULL); - assert(screen->mBones != NULL); - - unsigned int lightbuffersize = screen->mLights->GetBlockSize(); - - vp_comb.Format("#version %s\n\n#define NO_CLIPDISTANCE_SUPPORT\n", gles.shaderVersionString); - - FString fp_comb = vp_comb; - vp_comb << defines << i_data.GetChars(); - fp_comb << "$placeholder$\n" << defines << i_data.GetChars(); - - vp_comb << "#line 1\n"; - fp_comb << "#line 1\n"; - - vp_comb << RemoveLayoutLocationDecl(vp_data.GetString(), "out").GetChars() << "\n"; - fp_comb << RemoveLayoutLocationDecl(fp_data.GetString(), "in").GetChars() << "\n"; - FString placeholder = "\n"; - - if (proc_prog_lump.Len()) - { - fp_comb << "#line 1\n"; - - if (*proc_prog_lump != '#') - { - int pp_lump = fileSystem.CheckNumForFullName(proc_prog_lump); - if (pp_lump == -1) I_Error("Unable to load '%s'", proc_prog_lump.GetChars()); - FileData pp_data = fileSystem.ReadFile(pp_lump); - - if (pp_data.GetString().IndexOf("ProcessMaterial") < 0 && pp_data.GetString().IndexOf("SetupMaterial") < 0) - { - // this looks like an old custom hardware shader. - - if (pp_data.GetString().IndexOf("GetTexCoord") >= 0) - { - int pl_lump = fileSystem.CheckNumForFullName("shaders_gles/glsl/func_defaultmat2.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders_gles/glsl/func_defaultmat2.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - } - else - { - int pl_lump = fileSystem.CheckNumForFullName("shaders_gles/glsl/func_defaultmat.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders_gles/glsl/func_defaultmat.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - - if (pp_data.GetString().IndexOf("ProcessTexel") < 0) - { - // this looks like an even older custom hardware shader. - // We need to replace the ProcessTexel call to make it work. - - fp_comb.Substitute("material.Base = ProcessTexel();", "material.Base = Process(vec4(1.0));"); - } - } - - if (pp_data.GetString().IndexOf("ProcessLight") >= 0) - { - // The ProcessLight signatured changed. Forward to the old one. - fp_comb << "\nvec4 ProcessLight(vec4 color);\n"; - fp_comb << "\nvec4 ProcessLight(Material material, vec4 color) { return ProcessLight(color); }\n"; - } - } - - fp_comb << RemoveLegacyUserUniforms(pp_data.GetString()).GetChars(); - fp_comb.Substitute("gl_TexCoord[0]", "vTexCoord"); // fix old custom shaders. - - if (pp_data.GetString().IndexOf("ProcessLight") < 0) - { - int pl_lump = fileSystem.CheckNumForFullName("shaders_gles/glsl/func_defaultlight.fp", 0); - if (pl_lump == -1) I_Error("Unable to load '%s'", "shaders_gles/glsl/func_defaultlight.fp"); - FileData pl_data = fileSystem.ReadFile(pl_lump); - fp_comb << "\n" << pl_data.GetString().GetChars(); - } - - // ProcessMaterial must be considered broken because it requires the user to fill in data they possibly cannot know all about. - if (pp_data.GetString().IndexOf("ProcessMaterial") >= 0 && pp_data.GetString().IndexOf("SetupMaterial") < 0) - { - // This reactivates the old logic and disables all features that cannot be supported with that method. - placeholder << "#define LEGACY_USER_SHADER\n"; - } - } - else - { - // Proc_prog_lump is not a lump name but the source itself (from generated shaders) - fp_comb << proc_prog_lump.GetChars() + 1; - } - } - fp_comb.Substitute("$placeholder$", placeholder); - - if (light_fragprog.Len()) - { - int pp_lump = fileSystem.CheckNumForFullName(light_fragprog, 0); - if (pp_lump == -1) I_Error("Unable to load '%s'", light_fragprog.GetChars()); - FileData pp_data = fileSystem.ReadFile(pp_lump); - fp_comb << pp_data.GetString().GetChars() << "\n"; - } - - if (gles.flags & RFL_NO_CLIP_PLANES) - { - // On ATI's GL3 drivers we have to disable gl_ClipDistance because it's hopelessly broken. - // This will cause some glitches and regressions but is the only way to avoid total display garbage. - vp_comb.Substitute("gl_ClipDistance", "//"); - } - - shaderData->hShader = glCreateProgram(); - - uint32_t binaryFormat = 0; - TArray binary; - if (IsShaderCacheActive()) - binary = LoadCachedProgramBinary(vp_comb, fp_comb, binaryFormat); - - bool linked = false; - - if (!linked) - { - shaderData->hVertProg = glCreateShader(GL_VERTEX_SHADER); - shaderData->hFragProg = glCreateShader(GL_FRAGMENT_SHADER); - - int vp_size = (int)vp_comb.Len(); - int fp_size = (int)fp_comb.Len(); - - const char *vp_ptr = vp_comb.GetChars(); - const char *fp_ptr = fp_comb.GetChars(); - - glShaderSource(shaderData->hVertProg, 1, &vp_ptr, &vp_size); - glShaderSource(shaderData->hFragProg, 1, &fp_ptr, &fp_size); - - glCompileShader(shaderData->hVertProg); - glCompileShader(shaderData->hFragProg); - - glAttachShader(shaderData->hShader, shaderData->hVertProg); - glAttachShader(shaderData->hShader, shaderData->hFragProg); - - - glBindAttribLocation(shaderData->hShader, VATTR_VERTEX, "aPosition"); - glBindAttribLocation(shaderData->hShader, VATTR_TEXCOORD, "aTexCoord"); - glBindAttribLocation(shaderData->hShader, VATTR_COLOR, "aColor"); - glBindAttribLocation(shaderData->hShader, VATTR_VERTEX2, "aVertex2"); - glBindAttribLocation(shaderData->hShader, VATTR_NORMAL, "aNormal"); - glBindAttribLocation(shaderData->hShader, VATTR_NORMAL2, "aNormal2"); - glBindAttribLocation(shaderData->hShader, VATTR_BONEWEIGHT, "aBoneWeight"); - glBindAttribLocation(shaderData->hShader, VATTR_BONESELECTOR, "aBoneSelector"); - - - glLinkProgram(shaderData->hShader); - - glGetShaderInfoLog(shaderData->hVertProg, 10000, NULL, buffer); - if (*buffer) - { - error << "Vertex shader:\n" << buffer << "\n"; - } - glGetShaderInfoLog(shaderData->hFragProg, 10000, NULL, buffer); - if (*buffer) - { - error << "Fragment shader:\n" << buffer << "\n"; - } - - glGetProgramInfoLog(shaderData->hShader, 10000, NULL, buffer); - if (*buffer) - { - error << "Linking:\n" << buffer << "\n"; - } - GLint status = 0; - glGetProgramiv(shaderData->hShader, GL_LINK_STATUS, &status); - linked = (status == GL_TRUE); - - if (!linked) - { - // only print message if there's an error. - I_Error("Init Shader '%s':\n%s\n", name, error.GetChars()); - } - } - else - { - shaderData->hVertProg = 0; - shaderData->hFragProg = 0; - } - - shaderData->muProjectionMatrix.Init(shaderData->hShader, "ProjectionMatrix"); - shaderData->muViewMatrix.Init(shaderData->hShader, "ViewMatrix"); - shaderData->muNormalViewMatrix.Init(shaderData->hShader, "NormalViewMatrix"); - - shaderData->muCameraPos.Init(shaderData->hShader, "uCameraPos"); - shaderData->muClipLine.Init(shaderData->hShader, "uClipLine"); - - shaderData->muGlobVis.Init(shaderData->hShader, "uGlobVis"); - shaderData->muPalLightLevels.Init(shaderData->hShader, "uPalLightLevels"); - shaderData->muViewHeight.Init(shaderData->hShader, "uViewHeight"); - shaderData->muClipHeight.Init(shaderData->hShader, "uClipHeight"); - shaderData->muClipHeightDirection.Init(shaderData->hShader, "uClipHeightDirection"); - shaderData->muShadowmapFilter.Init(shaderData->hShader, "uShadowmapFilter"); - - //// - - shaderData->muDesaturation.Init(shaderData->hShader, "uDesaturationFactor"); - shaderData->muFogEnabled.Init(shaderData->hShader, "uFogEnabled"); - shaderData->muTextureMode.Init(shaderData->hShader, "uTextureMode"); - shaderData->muLightParms.Init(shaderData->hShader, "uLightAttr"); - shaderData->muClipSplit.Init(shaderData->hShader, "uClipSplit"); - shaderData->muLightRange.Init(shaderData->hShader, "uLightRange"); - shaderData->muBoneIndexBase.Init(shaderData->hShader, "uBoneIndexBase"); - shaderData->muFogColor.Init(shaderData->hShader, "uFogColor"); - shaderData->muDynLightColor.Init(shaderData->hShader, "uDynLightColor"); - shaderData->muObjectColor.Init(shaderData->hShader, "uObjectColor"); - shaderData->muObjectColor2.Init(shaderData->hShader, "uObjectColor2"); - shaderData->muGlowBottomColor.Init(shaderData->hShader, "uGlowBottomColor"); - shaderData->muGlowTopColor.Init(shaderData->hShader, "uGlowTopColor"); - shaderData->muGlowBottomPlane.Init(shaderData->hShader, "uGlowBottomPlane"); - shaderData->muGlowTopPlane.Init(shaderData->hShader, "uGlowTopPlane"); - shaderData->muGradientBottomPlane.Init(shaderData->hShader, "uGradientBottomPlane"); - shaderData->muGradientTopPlane.Init(shaderData->hShader, "uGradientTopPlane"); - shaderData->muSplitBottomPlane.Init(shaderData->hShader, "uSplitBottomPlane"); - shaderData->muSplitTopPlane.Init(shaderData->hShader, "uSplitTopPlane"); - shaderData->muDetailParms.Init(shaderData->hShader, "uDetailParms"); - shaderData->muInterpolationFactor.Init(shaderData->hShader, "uInterpolationFactor"); - shaderData->muAlphaThreshold.Init(shaderData->hShader, "uAlphaThreshold"); - shaderData->muSpecularMaterial.Init(shaderData->hShader, "uSpecularMaterial"); - shaderData->muAddColor.Init(shaderData->hShader, "uAddColor"); - shaderData->muTextureAddColor.Init(shaderData->hShader, "uTextureAddColor"); - shaderData->muTextureModulateColor.Init(shaderData->hShader, "uTextureModulateColor"); - shaderData->muTextureBlendColor.Init(shaderData->hShader, "uTextureBlendColor"); - shaderData->muTimer.Init(shaderData->hShader, "timer"); -#ifdef NPOT_EMULATION - shaderData->muNpotEmulation.Init(shaderData->hShader, "uNpotEmulation"); -#endif - shaderData->muFixedColormapStart.Init(shaderData->hShader, "uFixedColormapStart"); - shaderData->muFixedColormapRange.Init(shaderData->hShader, "uFixedColormapRange"); - - shaderData->lights_index = glGetUniformLocation(shaderData->hShader, "lights"); - shaderData->bones_index = glGetUniformLocation(shaderData->hShader, "bones"); - shaderData->modelmatrix_index = glGetUniformLocation(shaderData->hShader, "ModelMatrix"); - shaderData->texturematrix_index = glGetUniformLocation(shaderData->hShader, "TextureMatrix"); - shaderData->normalmodelmatrix_index = glGetUniformLocation(shaderData->hShader, "NormalModelMatrix"); - - - glUseProgram(shaderData->hShader); - - // set up other texture units (if needed by the shader) - for (int i = 2; i<16; i++) - { - char stringbuf[20]; - mysnprintf(stringbuf, 20, "texture%d", i); - int tempindex = glGetUniformLocation(shaderData->hShader, stringbuf); - if (tempindex >= 0) glUniform1i(tempindex, i - 1); - } - - int shadowmapindex = glGetUniformLocation(shaderData->hShader, "ShadowMap"); - if (shadowmapindex >= 0) glUniform1i(shadowmapindex, 16); - - glUseProgram(0); - - cur = shaderData; - - return linked; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShader::~FShader() -{ - std::map::iterator it = variants.begin(); - - while (it != variants.end()) - { - glDeleteProgram(it->second->hShader); - if (it->second->hVertProg != 0) - glDeleteShader(it->second->hVertProg); - if (it->second->hFragProg != 0) - glDeleteShader(it->second->hFragProg); - it++; - } -} - - -//========================================================================== -// -// -// -//========================================================================== - -bool FShader::Bind(ShaderFlavourData& flavour) -{ - uint32_t tag = CreateShaderTag(flavour); - - auto pos = variants.find(tag); - - if (pos == variants.end()) - { - FString variantConfig = "\n"; - - variantConfig.AppendFormat("#define MAXIMUM_LIGHT_VECTORS %d\n", gles.numlightvectors); - variantConfig.AppendFormat("#define DEF_TEXTURE_MODE %d\n", flavour.textureMode); - variantConfig.AppendFormat("#define DEF_TEXTURE_FLAGS %d\n", flavour.texFlags); - variantConfig.AppendFormat("#define DEF_BLEND_FLAGS %d\n", flavour.blendFlags & 0x7); - variantConfig.AppendFormat("#define DEF_FOG_2D %d\n", flavour.twoDFog); - variantConfig.AppendFormat("#define DEF_FOG_ENABLED %d\n", flavour.fogEnabled); - variantConfig.AppendFormat("#define DEF_FOG_RADIAL %d\n", flavour.fogEquationRadial); - variantConfig.AppendFormat("#define DEF_FOG_COLOURED %d\n", flavour.colouredFog); - variantConfig.AppendFormat("#define DEF_USE_U_LIGHT_LEVEL %d\n", flavour.useULightLevel); - - variantConfig.AppendFormat("#define DEF_DO_DESATURATE %d\n", flavour.doDesaturate); - - variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_MOD %d\n", flavour.dynLightsMod); - variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_SUB %d\n", flavour.dynLightsSub); - variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_ADD %d\n", flavour.dynLightsAdd); - - variantConfig.AppendFormat("#define DEF_USE_OBJECT_COLOR_2 %d\n", flavour.useObjectColor2); - variantConfig.AppendFormat("#define DEF_USE_GLOW_TOP_COLOR %d\n", flavour.useGlowTopColor); - variantConfig.AppendFormat("#define DEF_USE_GLOW_BOTTOM_COLOR %d\n", flavour.useGlowBottomColor); - - variantConfig.AppendFormat("#define DEF_USE_COLOR_MAP %d\n", flavour.useColorMap); - variantConfig.AppendFormat("#define DEF_BUILD_LIGHTING %d\n", flavour.buildLighting); - variantConfig.AppendFormat("#define DEF_BANDED_SW_LIGHTING %d\n", flavour.bandedSwLight); - - variantConfig.AppendFormat("#define USE_GLSL_V100 %d\n", gles.forceGLSLv100); - -#ifdef NPOT_EMULATION - variantConfig.AppendFormat("#define DEF_NPOT_EMULATION %d\n", flavour.npotEmulation); -#endif - - variantConfig.AppendFormat("#define DEF_HAS_SPOTLIGHT %d\n", flavour.hasSpotLight); - variantConfig.AppendFormat("#define DEF_PALETTE_INTERPOLATE %d\n", flavour.paletteInterpolate); - - //Printf("Shader: %s, %08x %s", mFragProg2.GetChars(), tag, variantConfig.GetChars()); - - Load(mName.GetChars(), mVertProg, mFragProg, mFragProg2, mLightProg, mDefinesBase + variantConfig); - - variants.insert(std::make_pair(tag, cur)); - } - else - { - cur = pos->second; - } - - GLRenderer->mShaderManager->SetActiveShader(this->cur); - return true; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShader *FShaderCollection::Compile (const char *ShaderName, const char *ShaderPath, const char *LightModePath, const char *shaderdefines, bool usediscard, EPassType passType) -{ - FString defines; - defines += shaderdefines; - // this can't be in the shader code due to ATI strangeness. - if (!usediscard) defines += "#define NO_ALPHATEST\n"; - - FShader *shader = new FShader(ShaderName); - shader->Configure(ShaderName, "shaders_gles/glsl/main.vp", "shaders_gles/glsl/main.fp", ShaderPath, LightModePath, defines.GetChars()); - return shader; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderManager::FShaderManager() -{ - for (int passType = 0; passType < MAX_PASS_TYPES; passType++) - mPassShaders.Push(new FShaderCollection((EPassType)passType)); -} - -FShaderManager::~FShaderManager() -{ - glUseProgram(0); - mActiveShader = NULL; - - for (auto collection : mPassShaders) - delete collection; -} - -void FShaderManager::SetActiveShader(FShader::ShaderVariantData *sh) -{ - if (mActiveShader != sh) - { - glUseProgram(sh!= NULL? sh->GetHandle() : 0); - mActiveShader = sh; - } -} - -FShader *FShaderManager::BindEffect(int effect, EPassType passType, ShaderFlavourData &flavour) -{ - if (passType < mPassShaders.Size()) - return mPassShaders[passType]->BindEffect(effect, flavour); - else - return nullptr; -} - -FShader *FShaderManager::Get(unsigned int eff, bool alphateston, EPassType passType) -{ - if (passType < mPassShaders.Size()) - return mPassShaders[passType]->Get(eff, alphateston); - else - return nullptr; -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderCollection::FShaderCollection(EPassType passType) -{ - CompileShaders(passType); -} - -//========================================================================== -// -// -// -//========================================================================== - -FShaderCollection::~FShaderCollection() -{ - Clean(); -} - -//========================================================================== -// -// -// -//========================================================================== - -void FShaderCollection::CompileShaders(EPassType passType) -{ - mMaterialShaders.Clear(); - mMaterialShadersNAT.Clear(); - for (int i = 0; i < MAX_EFFECTS; i++) - { - mEffectShaders[i] = NULL; - } - - for(int i=0;defaultshaders[i].ShaderName != NULL;i++) - { - FShader *shc = Compile(defaultshaders[i].ShaderName, defaultshaders[i].gettexelfunc, defaultshaders[i].lightfunc, defaultshaders[i].Defines, true, passType); - mMaterialShaders.Push(shc); - if (i < SHADER_NoTexture) - { - shc = Compile(defaultshaders[i].ShaderName, defaultshaders[i].gettexelfunc, defaultshaders[i].lightfunc, defaultshaders[i].Defines, false, passType); - mMaterialShadersNAT.Push(shc); - } - } - -#if 0 - for(unsigned i = 0; i < usershaders.Size(); i++) - { - FString name = ExtractFileBase(usershaders[i].shader); - FString defines = defaultshaders[usershaders[i].shaderType].Defines + usershaders[i].defines; - FShader *shc = Compile(name, usershaders[i].shader, defaultshaders[usershaders[i].shaderType].lightfunc, defines, true, passType); - mMaterialShaders.Push(shc); - } -#endif - - for(int i=0;iConfigure(effectshaders[i].ShaderName, effectshaders[i].vp, effectshaders[i].fp1, - effectshaders[i].fp2, effectshaders[i].fp3, effectshaders[i].defines)) - { - delete eff; - } - else mEffectShaders[i] = eff; - } -} - -//========================================================================== -// -// -// -//========================================================================== - -void FShaderCollection::Clean() -{ - for (unsigned int i = 0; i < mMaterialShadersNAT.Size(); i++) - { - if (mMaterialShadersNAT[i] != NULL) delete mMaterialShadersNAT[i]; - } - for (unsigned int i = 0; i < mMaterialShaders.Size(); i++) - { - if (mMaterialShaders[i] != NULL) delete mMaterialShaders[i]; - } - for (int i = 0; i < MAX_EFFECTS; i++) - { - if (mEffectShaders[i] != NULL) delete mEffectShaders[i]; - mEffectShaders[i] = NULL; - } - mMaterialShaders.Clear(); - mMaterialShadersNAT.Clear(); -} - -//========================================================================== -// -// -// -//========================================================================== - -int FShaderCollection::Find(const char * shn) -{ - FName sfn = shn; - - for(unsigned int i=0;imName == sfn) - { - return i; - } - } - return -1; -} - - -//========================================================================== -// -// -// -//========================================================================== - -FShader *FShaderCollection::BindEffect(int effect, ShaderFlavourData& flavour) -{ - if (effect >= 0 && effect < MAX_EFFECTS && mEffectShaders[effect] != NULL) - { - mEffectShaders[effect]->Bind(flavour); - return mEffectShaders[effect]; - } - return NULL; -} - - -//========================================================================== -// -// -// -//========================================================================== - -void gl_DestroyUserShaders() -{ - // todo -} - -} diff --git a/src/common/rendering/gles/gles_shader.h b/src/common/rendering/gles/gles_shader.h deleted file mode 100644 index 31ebffa39..000000000 --- a/src/common/rendering/gles/gles_shader.h +++ /dev/null @@ -1,495 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2004-2016 Christoph Oelckers -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// - -#ifndef __GL_SHADERS_H__ -#define __GL_SHADERS_H__ - -#include - -#include "gles_renderstate.h" -#include "name.h" - -extern bool gl_shaderactive; - -struct HWViewpointUniforms; - -namespace OpenGLESRenderer -{ - class FShaderCollection; - -//========================================================================== -// -// -//========================================================================== - -class FUniform1i -{ - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - } - - void Set(int newvalue) - { - glUniform1i(mIndex, newvalue); - } -}; - -class FBufferedUniform1i -{ - int mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(int newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform1i(mIndex, newvalue); - } - } -}; - -class FBufferedUniform4i -{ - int mBuffer[4]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const int *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform4iv(mIndex, 1, newvalue); - } - } -}; - -class FBufferedUniform1f -{ - float mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(float newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform1f(mIndex, newvalue); - } - } -}; - -class FBufferedUniform2f -{ - float mBuffer[2]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const float *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform2fv(mIndex, 1, newvalue); - } - } - - void Set(float f1, float f2) - { - if (mBuffer[0] != f1 || mBuffer[1] != f2) - { - mBuffer[0] = f1; - mBuffer[1] = f2; - glUniform2fv(mIndex, 1, mBuffer); - } - } - -}; - -class FBufferedUniform4f -{ - float mBuffer[4]; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - memset(mBuffer, 0, sizeof(mBuffer)); - } - - void Set(const float *newvalue) - { - if (memcmp(newvalue, mBuffer, sizeof(mBuffer))) - { - memcpy(mBuffer, newvalue, sizeof(mBuffer)); - glUniform4fv(mIndex, 1, newvalue); - } - } -}; - -class FUniform4f -{ - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - } - - void Set(const float *newvalue) - { - glUniform4fv(mIndex, 1, newvalue); - } - - void Set(float a, float b, float c, float d) - { - glUniform4f(mIndex, a, b, c, d); - } - - void Set(PalEntry newvalue) - { - glUniform4f(mIndex, newvalue.r / 255.f, newvalue.g / 255.f, newvalue.b / 255.f, newvalue.a / 255.f); - } - -}; - -class FBufferedUniformPE -{ - FVector4PalEntry mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar *name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(const FVector4PalEntry &newvalue) - { - if (newvalue != mBuffer) - { - mBuffer = newvalue; - glUniform4f(mIndex, newvalue.r, newvalue.g, newvalue.b, newvalue.a); - } - } -}; - -class FBufferedUniformMat4fv -{ - VSMatrix mBuffer; - int mIndex; - -public: - void Init(GLuint hShader, const GLchar* name) - { - mIndex = glGetUniformLocation(hShader, name); - mBuffer = 0; - } - - void Set(const VSMatrix* newvalue) - { - //if (memcmp(newvalue, &mBuffer, sizeof(mBuffer))) // Breaks 2D menu for some reason.. - { - mBuffer = *newvalue; - glUniformMatrix4fv(mIndex, 1, false, (float*)newvalue); - } - } -}; - -class ShaderFlavourData -{ -public: - int textureMode; - int texFlags; - int blendFlags; - bool twoDFog; - bool fogEnabled; - bool fogEquationRadial; - bool colouredFog; - bool doDesaturate; - bool dynLightsMod; - bool dynLightsSub; - bool dynLightsAdd; - bool useULightLevel; - bool useObjectColor2; - bool useGlowTopColor; - bool useGlowBottomColor; - bool useColorMap; - - bool buildLighting; - bool bandedSwLight; - -#ifdef NPOT_EMULATION - bool npotEmulation; -#endif - - bool hasSpotLight; - bool paletteInterpolate; -}; - -class FShader -{ - friend class FShaderCollection; - friend class FGLRenderState; - - FName mName; - - FString mVertProg; - FString mFragProg; - FString mFragProg2; - FString mLightProg; - FString mDefinesBase; - - ///// -public: class ShaderVariantData - { - public: - - unsigned int hShader = 0; - unsigned int hVertProg = 0; - unsigned int hFragProg = 0; - - //int ProjectionMatrix_index = 0; - //int ViewMatrix_index = 0; - //int NormalViewMatrix_index = 0; - - FBufferedUniformMat4fv muProjectionMatrix; - FBufferedUniformMat4fv muViewMatrix; - FBufferedUniformMat4fv muNormalViewMatrix; - - FUniform4f muCameraPos; - FUniform4f muClipLine; - - FBufferedUniform1f muGlobVis; - FBufferedUniform1i muPalLightLevels; - FBufferedUniform1i muViewHeight; - FBufferedUniform1f muClipHeight; - FBufferedUniform1f muClipHeightDirection; - FBufferedUniform1i muShadowmapFilter; - ///// - - FBufferedUniform1f muDesaturation; - FBufferedUniform1i muFogEnabled; - FBufferedUniform1i muTextureMode; - FBufferedUniform4f muLightParms; - FBufferedUniform2f muClipSplit; - FBufferedUniform1i muBoneIndexBase; - FBufferedUniform4i muLightRange; - FBufferedUniformPE muFogColor; - FBufferedUniform4f muDynLightColor; - FBufferedUniformPE muObjectColor; - FBufferedUniformPE muObjectColor2; - FBufferedUniformPE muAddColor; - FBufferedUniformPE muTextureBlendColor; - FBufferedUniformPE muTextureModulateColor; - FBufferedUniformPE muTextureAddColor; - FUniform4f muGlowBottomColor; - FUniform4f muGlowTopColor; - FUniform4f muGlowBottomPlane; - FUniform4f muGlowTopPlane; - FUniform4f muGradientBottomPlane; - FUniform4f muGradientTopPlane; - FUniform4f muSplitBottomPlane; - FUniform4f muSplitTopPlane; - FUniform4f muDetailParms; - FBufferedUniform1f muInterpolationFactor; - FBufferedUniform1f muAlphaThreshold; - FBufferedUniform2f muSpecularMaterial; - FBufferedUniform1f muTimer; -#ifdef NPOT_EMULATION - FBufferedUniform2f muNpotEmulation; -#endif - FUniform4f muFixedColormapStart; - FUniform4f muFixedColormapRange; - - - int lights_index = 0; - int bones_index = 0; - int modelmatrix_index = 0; - int normalmodelmatrix_index = 0; - int texturematrix_index = 0; - - int currentglowstate = 0; - int currentgradientstate = 0; - int currentsplitstate = 0; - int currentcliplinestate = 0; - int currentfixedcolormap = 0; - bool currentTextureMatrixState = true;// by setting the matrix state to 'true' it is guaranteed to be set the first time the render state gets applied. - bool currentModelMatrixState = true; - - unsigned int GetHandle() const { return hShader; } - }; - - std::map variants; - - ShaderVariantData* cur = 0; - -public: - FShader(const char *name) - : mName(name) - { - - } - - ~FShader(); - - bool Load(const char * name, const char * vert_prog_lump, const char * fragprog, const char * fragprog2, const char * light_fragprog, const char *defines); - bool Configure(const char* name, const char* vert_prog_lump, const char* fragprog, const char* fragprog2, const char* light_fragprog, const char* defines); - - void LoadVariant(); - - - uint32_t CreateShaderTag(ShaderFlavourData &flavour) - { - uint32_t tag = 0; - tag |= (flavour.textureMode & 0x7); - - tag |= (flavour.texFlags & 7) << 3; - - tag |= (flavour.blendFlags & 7) << 6; - - tag |= (flavour.twoDFog & 1) << 7; - tag |= (flavour.fogEnabled & 1) << 8; - tag |= (flavour.fogEquationRadial & 1) << 9; - tag |= (flavour.colouredFog & 1) << 10; - - tag |= (flavour.doDesaturate & 1) << 11; - - tag |= (flavour.dynLightsMod & 1) << 12; - tag |= (flavour.dynLightsSub & 1) << 13; - tag |= (flavour.dynLightsAdd & 1) << 14; - tag |= (flavour.useULightLevel & 1) << 15; - tag |= (flavour.useObjectColor2 & 1) << 16; - tag |= (flavour.useGlowTopColor & 1) << 17; - tag |= (flavour.useGlowBottomColor & 1) << 18; - tag |= (flavour.useColorMap & 1) << 19; - tag |= (flavour.buildLighting & 1) << 20; - tag |= (flavour.bandedSwLight & 1) << 21; - -#ifdef NPOT_EMULATION - tag |= (flavour.npotEmulation & 1) << 22; -#endif - tag |= (flavour.hasSpotLight & 1) << 23; - tag |= (flavour.paletteInterpolate & 1) << 24; - - return tag; - } - - bool Bind(ShaderFlavourData& flavour); - - -}; - -//========================================================================== -// -// The global shader manager -// -//========================================================================== -class FShaderManager -{ -public: - FShaderManager(); - ~FShaderManager(); - - FShader *BindEffect(int effect, EPassType passType, ShaderFlavourData& flavour); - FShader *Get(unsigned int eff, bool alphateston, EPassType passType); - - void SetActiveShader(FShader::ShaderVariantData *sh); -private: - - FShader::ShaderVariantData *mActiveShader = nullptr; - TArray mPassShaders; - - friend class FShader; -}; - -class FShaderCollection -{ - TArray mMaterialShaders; - TArray mMaterialShadersNAT; - FShader *mEffectShaders[MAX_EFFECTS]; - - void Clean(); - void CompileShaders(EPassType passType); - -public: - FShaderCollection(EPassType passType); - ~FShaderCollection(); - FShader *Compile(const char *ShaderName, const char *ShaderPath, const char *LightModePath, const char *shaderdefines, bool usediscard, EPassType passType); - int Find(const char *mame); - FShader *BindEffect(int effect, ShaderFlavourData& flavour); - - FShader *Get(unsigned int eff, bool alphateston) - { - // indices 0-2 match the warping modes, 3 no texture, the following are custom - if (!alphateston && eff <= 2) - { - return mMaterialShadersNAT[eff]; // Non-alphatest shaders are only created for default, warp1+2 and brightmap. The rest won't get used anyway - } - if (eff < mMaterialShaders.Size()) - { - return mMaterialShaders[eff]; - } - else // This can happen if we try and active a user shader which is not loaded, so return default shader so it does not crash - { - return mMaterialShaders[0]; - } - } -}; - -} -#endif - diff --git a/src/common/rendering/gles/gles_shaderprogram.cpp b/src/common/rendering/gles/gles_shaderprogram.cpp deleted file mode 100644 index 16bd1ebe9..000000000 --- a/src/common/rendering/gles/gles_shaderprogram.cpp +++ /dev/null @@ -1,293 +0,0 @@ -/* -** Postprocessing framework -** Copyright (c) 2016-2020 Magnus Norddahl -** -** This software is provided 'as-is', without any express or implied -** warranty. In no event will the authors be held liable for any damages -** arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, -** including commercial applications, and to alter it and redistribute it -** freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not -** claim that you wrote the original software. If you use this software -** in a product, an acknowledgment in the product documentation would be -** appreciated but is not required. -** 2. Altered source versions must be plainly marked as such, and must not be -** misrepresented as being the original software. -** 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "gles_system.h" -#include "v_video.h" -#include "hw_cvars.h" -#include "gles_shaderprogram.h" -#include "hw_shaderpatcher.h" -#include "filesystem.h" -#include "printf.h" - -namespace OpenGLESRenderer -{ - -FString GetGLSLPrecision(); - -bool IsShaderCacheActive(); -TArray LoadCachedProgramBinary(const FString &vertex, const FString &fragment, uint32_t &binaryFormat); -void SaveCachedProgramBinary(const FString &vertex, const FString &fragment, const TArray &binary, uint32_t binaryFormat); - -FShaderProgram::FShaderProgram() -{ - for (int i = 0; i < NumShaderTypes; i++) - mShaders[i] = 0; -} - -//========================================================================== -// -// Free shader program resources -// -//========================================================================== - -FShaderProgram::~FShaderProgram() -{ - if (mProgram != 0) - glDeleteProgram(mProgram); - - for (int i = 0; i < NumShaderTypes; i++) - { - if (mShaders[i] != 0) - glDeleteShader(mShaders[i]); - } -} - -//========================================================================== -// -// Creates an OpenGL shader object for the specified type of shader -// -//========================================================================== - -void FShaderProgram::CreateShader(ShaderType type) -{ - GLenum gltype = 0; - switch (type) - { - default: - case Vertex: gltype = GL_VERTEX_SHADER; break; - case Fragment: gltype = GL_FRAGMENT_SHADER; break; - } - mShaders[type] = glCreateShader(gltype); -} - -//========================================================================== -// -// Compiles a shader and attaches it the program object -// -//========================================================================== - -void FShaderProgram::Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion) -{ - int lump = fileSystem.CheckNumForFullName(lumpName); - if (lump == -1) I_FatalError("Unable to load '%s'", lumpName); - FString code = fileSystem.ReadFile(lump).GetString().GetChars(); - Compile(type, lumpName, code, defines, maxGlslVersion); -} - -void FShaderProgram::Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion) -{ - mShaderNames[type] = name; - mShaderSources[type] = PatchShader(type, code, defines, maxGlslVersion); -} - -void FShaderProgram::CompileShader(ShaderType type) -{ - CreateShader(type); - - const auto &handle = mShaders[type]; - - - const FString &patchedCode = mShaderSources[type]; - int lengths[1] = { (int)patchedCode.Len() }; - const char *sources[1] = { patchedCode.GetChars() }; - glShaderSource(handle, 1, sources, lengths); - - glCompileShader(handle); - - GLint status = 0; - glGetShaderiv(handle, GL_COMPILE_STATUS, &status); - if (status == GL_FALSE) - { - I_FatalError("Compile Shader '%s':\n%s\n", mShaderNames[type].GetChars(), GetShaderInfoLog(handle).GetChars()); - } - else - { - if (mProgram == 0) - mProgram = glCreateProgram(); - glAttachShader(mProgram, handle); - } -} - -//========================================================================== -// -// Links a program with the compiled shaders -// -//========================================================================== - -void FShaderProgram::Link(const char *name) -{ - - uint32_t binaryFormat = 0; - TArray binary; - if (IsShaderCacheActive()) - binary = LoadCachedProgramBinary(mShaderSources[Vertex], mShaderSources[Fragment], binaryFormat); - - bool loadedFromBinary = false; - - if (!loadedFromBinary) - { - CompileShader(Vertex); - CompileShader(Fragment); - - glLinkProgram(mProgram); - - GLint status = 0; - glGetProgramiv(mProgram, GL_LINK_STATUS, &status); - if (status == GL_FALSE) - { - I_FatalError("Link Shader '%s':\n%s\n", name, GetProgramInfoLog(mProgram).GetChars()); - } - } - - // This is only for old OpenGL which didn't allow to set the binding from within the shader. - if (screen->glslversion < 4.20) - { - glUseProgram(mProgram); - for (auto &uni : samplerstobind) - { - auto index = glGetUniformLocation(mProgram, uni.first); - if (index >= 0) - { - glUniform1i(index, uni.second); - } - } - } - samplerstobind.Clear(); - samplerstobind.ShrinkToFit(); -} - -//========================================================================== -// -// Set uniform buffer location (only useful for GL 3.3) -// -//========================================================================== - -void FShaderProgram::SetUniformBufferLocation(int index, const char *name) -{ - -} - -//========================================================================== -// -// Makes the shader the active program -// -//========================================================================== - -void FShaderProgram::Bind() -{ - glUseProgram(mProgram); -} - -//========================================================================== -// -// Returns the shader info log (warnings and compile errors) -// -//========================================================================== - -FString FShaderProgram::GetShaderInfoLog(GLuint handle) -{ - static char buffer[10000]; - GLsizei length = 0; - buffer[0] = 0; - glGetShaderInfoLog(handle, 10000, &length, buffer); - return FString(buffer); -} - -//========================================================================== -// -// Returns the program info log (warnings and compile errors) -// -//========================================================================== - -FString FShaderProgram::GetProgramInfoLog(GLuint handle) -{ - static char buffer[10000]; - GLsizei length = 0; - buffer[0] = 0; - glGetProgramInfoLog(handle, 10000, &length, buffer); - return FString(buffer); -} - -//========================================================================== -// -// Patches a shader to be compatible with the version of OpenGL in use -// -//========================================================================== - -FString FShaderProgram::PatchShader(ShaderType type, const FString &code, const char *defines, int maxGlslVersion) -{ - FString patchedCode; - - patchedCode.AppendFormat("#version %s\n", gles.shaderVersionString); - - patchedCode += GetGLSLPrecision(); - - - if (defines) - patchedCode << defines; - - - patchedCode << "#line 1\n"; - patchedCode << RemoveLayoutLocationDecl(code, type == Vertex ? "out" : "in"); - - if (maxGlslVersion < 420) - { - // Here we must strip out all layout(binding) declarations for sampler uniforms and store them in 'samplerstobind' which can then be processed by the link function. - patchedCode = RemoveSamplerBindings(patchedCode, samplerstobind); - } - - return patchedCode; -} - -///////////////////////////////////////////////////////////////////////////// - -void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program_name) -{ - FString prolog = Uniforms.CreateDeclaration("Uniforms", PresentUniforms::Desc()); - - mShader.reset(new FShaderProgram()); - mShader->Compile(FShaderProgram::Vertex, "shaders_gles/pp/screenquad.vp", prolog, 330); - mShader->Compile(FShaderProgram::Fragment, vtx_shader_name, prolog, 330); - mShader->Link(program_name); - mShader->Bind(); - Uniforms.Init(); - - Uniforms.UniformLocation.resize(Uniforms.mFields.size()); - - for (size_t n = 0; n < Uniforms.mFields.size(); n++) - { - int index = -1; - UniformFieldDesc desc = Uniforms.mFields[n]; - index = glGetUniformLocation(mShader->mProgram, desc.Name); - Uniforms.UniformLocation[n] = index; - } -} - -void FPresentShader::Bind() -{ - if (!mShader) - { - Init("shaders_gles/pp/present.fp", "shaders_gles/pp/present"); - } - mShader->Bind(); -} - -} diff --git a/src/common/rendering/gles/gles_shaderprogram.h b/src/common/rendering/gles/gles_shaderprogram.h deleted file mode 100644 index e46418054..000000000 --- a/src/common/rendering/gles/gles_shaderprogram.h +++ /dev/null @@ -1,159 +0,0 @@ - -#pragma once - -#include "gles_system.h" -#include "gles_shader.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" - -namespace OpenGLESRenderer -{ - -class FShaderProgram : public PPShaderBackend -{ -public: - FShaderProgram(); - ~FShaderProgram(); - - enum ShaderType - { - Vertex, - Fragment, - NumShaderTypes - }; - - void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion); - void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion); - void Link(const char *name); - void SetUniformBufferLocation(int index, const char *name); - - void Bind(); - - GLuint Handle() { return mProgram; } - //explicit operator bool() const { return mProgram != 0; } - - std::unique_ptr Uniforms; - GLuint mProgram = 0; -private: - FShaderProgram(const FShaderProgram &) = delete; - FShaderProgram &operator=(const FShaderProgram &) = delete; - - void CompileShader(ShaderType type); - FString PatchShader(ShaderType type, const FString &code, const char *defines, int maxGlslVersion); - - void CreateShader(ShaderType type); - FString GetShaderInfoLog(GLuint handle); - FString GetProgramInfoLog(GLuint handle); - - - GLuint mShaders[NumShaderTypes]; - FString mShaderSources[NumShaderTypes]; - FString mShaderNames[NumShaderTypes]; - TArray> samplerstobind; -}; - -template -class ShaderUniformsGles -{ -public: - ShaderUniformsGles() - { - memset(&Values, 0, sizeof(Values)); - } - - ~ShaderUniformsGles() - { - if (mBuffer != nullptr) - delete mBuffer; - } - - FString CreateDeclaration(const char* name, const std::vector& fields) - { - mFields = fields; - FString decl; - decl += "\n"; - for (size_t i = 0; i < fields.size(); i++) - { - decl.AppendFormat("\tuniform %s %s;\n", GetTypeStr(fields[i].Type), fields[i].Name); - } - decl += "\n"; - return decl; - } - - void Init() - { - if (mBuffer == nullptr) - mBuffer = screen->CreateDataBuffer(-1, false, false); - } - - void SetData() - { - if (mBuffer != nullptr) - mBuffer->SetData(sizeof(T), &Values, BufferUsageType::Static); - } - - IDataBuffer* GetBuffer() const - { - // OpenGL needs to mess around with this in ways that should not be part of the interface. - return mBuffer; - } - - T* operator->() { return &Values; } - const T* operator->() const { return &Values; } - - T Values; - - std::vector mFields; - std::vector UniformLocation; - -private: - ShaderUniformsGles(const ShaderUniformsGles&) = delete; - ShaderUniformsGles& operator=(const ShaderUniformsGles&) = delete; - - IDataBuffer* mBuffer = nullptr; - -private: - static const char* GetTypeStr(UniformType type) - { - switch (type) - { - default: - case UniformType::Int: return "int"; - case UniformType::UInt: return "uint"; - case UniformType::Float: return "float"; - case UniformType::Vec2: return "vec2"; - case UniformType::Vec3: return "vec3"; - case UniformType::Vec4: return "vec4"; - case UniformType::IVec2: return "ivec2"; - case UniformType::IVec3: return "ivec3"; - case UniformType::IVec4: return "ivec4"; - case UniformType::UVec2: return "uvec2"; - case UniformType::UVec3: return "uvec3"; - case UniformType::UVec4: return "uvec4"; - case UniformType::Mat4: return "mat4"; - } - } -}; - - -class FPresentShaderBase -{ -public: - virtual ~FPresentShaderBase() {} - virtual void Bind() = 0; - - ShaderUniformsGles Uniforms; - -protected: - virtual void Init(const char * vtx_shader_name, const char * program_name); - std::unique_ptr mShader; -}; - -class FPresentShader : public FPresentShaderBase -{ -public: - void Bind() override; - -}; - - -} \ No newline at end of file diff --git a/src/common/rendering/gles/gles_system.cpp b/src/common/rendering/gles/gles_system.cpp deleted file mode 100644 index bb7d61687..000000000 --- a/src/common/rendering/gles/gles_system.cpp +++ /dev/null @@ -1,237 +0,0 @@ - - -#include "gles_system.h" -#include "tarray.h" -#include "v_video.h" -#include "printf.h" - -CVAR(Bool, gles_use_mapped_buffer, false, 0); -CVAR(Bool, gles_force_glsl_v100, false, 0); -CVAR(Int, gles_max_lights_per_surface, 32, 0); -EXTERN_CVAR(Bool, gl_customshader); -void setGlVersion(double glv); - - -#if USE_GLAD_LOADER - -PFNGLMAPBUFFERRANGEEXTPROC glMapBufferRange = NULL; -PFNGLUNMAPBUFFEROESPROC glUnmapBuffer = NULL; -PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer = NULL; -PFNGLFENCESYNCPROC glFenceSync = NULL; -PFNGLCLIENTWAITSYNCPROC glClientWaitSync = NULL; -PFNGLDELETESYNCPROC glDeleteSync = NULL; - -#if defined _WIN32 - -#include - -static HMODULE opengl32dll; -static PROC(WINAPI* getprocaddress)(LPCSTR name); - -static void* LoadGLES2Proc(const char* name) -{ - HINSTANCE hGetProcIDDLL = LoadLibraryA("libGLESv2.dll"); - - int error = GetLastError(); - - void* addr = GetProcAddress(hGetProcIDDLL, name); - if (!addr) - { - //exit(1); - return nullptr; - } - else - { - return addr; - } -} - -#else - -#include - -static void* LoadGLES2Proc(const char* name) -{ - static void* glesLib = NULL; - - if (!glesLib) - { - int flags = RTLD_LOCAL | RTLD_NOW; - - glesLib = dlopen("libGLESv2_CM.so", flags); - if (!glesLib) - { - glesLib = dlopen("libGLESv2.so", flags); - } - if (!glesLib) - { - glesLib = dlopen("libGLESv2.so.2", flags); - } - } - - void* ret = NULL; - ret = dlsym(glesLib, name); - - return ret; -} - -#endif - -#endif // USE_GLAD_LOADER - -static TArray m_Extensions; - - -static void CollectExtensions() -{ - const char* supported = (char*)glGetString(GL_EXTENSIONS); - - if (nullptr != supported) - { - char* extensions = new char[strlen(supported) + 1]; - strcpy(extensions, supported); - - char* extension = strtok(extensions, " "); - - while (extension) - { - m_Extensions.Push(FString(extension)); - extension = strtok(nullptr, " "); - } - - delete[] extensions; - } -} - - -static bool CheckExtension(const char* ext) -{ - for (unsigned int i = 0; i < m_Extensions.Size(); ++i) - { - if (m_Extensions[i].CompareNoCase(ext) == 0) return true; - } - - return false; -} - -namespace OpenGLESRenderer -{ - RenderContextGLES gles; - - void InitGLES() - { - -#if USE_GLAD_LOADER - - if (!gladLoadGLES2Loader(&LoadGLES2Proc)) - { - exit(-1); - } - - glMapBufferRange = (PFNGLMAPBUFFERRANGEEXTPROC)LoadGLES2Proc("glMapBufferRange"); - glUnmapBuffer = (PFNGLUNMAPBUFFEROESPROC)LoadGLES2Proc("glUnmapBuffer"); - glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)LoadGLES2Proc("glVertexAttribIPointer"); - - glFenceSync = (PFNGLFENCESYNCPROC)LoadGLES2Proc("glFenceSync"); - glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)LoadGLES2Proc("glClientWaitSync"); - glDeleteSync = (PFNGLDELETESYNCPROC)LoadGLES2Proc("glDeleteSync"); -#else - static bool first = true; - - if (first) - { - if (ogl_LoadFunctions() == ogl_LOAD_FAILED) - { - //I_FatalError("Failed to load OpenGL functions."); - } - } - GLuint vao; - glGenVertexArrays(1, &vao); - glBindVertexArray(vao); -#endif - CollectExtensions(); - - Printf("GL_VENDOR: %s\n", glGetString(GL_VENDOR)); - Printf("GL_RENDERER: %s\n", glGetString(GL_RENDERER)); - Printf("GL_VERSION: %s\n", glGetString(GL_VERSION)); - Printf("GL_SHADING_LANGUAGE_VERSION: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); - Printf(PRINT_LOG, "GL_EXTENSIONS:\n"); - for (unsigned i = 0; i < m_Extensions.Size(); i++) - { - Printf(" %s\n", m_Extensions[i].GetChars()); - } - const char* glVersionStr = (const char*)glGetString(GL_VERSION); - double glVersion = strtod(glVersionStr, NULL); - - Printf("GL Version parsed = %f\n", glVersion); - - gles.flags = RFL_NO_CLIP_PLANES; - - gles.useMappedBuffers = gles_use_mapped_buffer; - gles.forceGLSLv100 = gles_force_glsl_v100; - gles.maxlights = gles_max_lights_per_surface; - gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM); - - gles.modelstring = (char*)glGetString(GL_RENDERER); - gles.vendorstring = (char*)glGetString(GL_VENDOR); - - - gl_customshader = false; // Disable user shaders for GLES renderer - - GLint maxTextureSize[1]; - glGetIntegerv(GL_MAX_TEXTURE_SIZE, maxTextureSize); - gles.max_texturesize = maxTextureSize[0]; - - Printf("GL_MAX_TEXTURE_SIZE: %d\n", gles.max_texturesize); - - - // Check if running on a GLES device, version string will start with 'OpenGL ES' - if (!strncmp(glVersionStr, "OpenGL ES", strlen("OpenGL ES"))) - { - gles.glesMode = GLES_MODE_GLES; - } - else // Else runnning on Desktop, check OpenGL version is 3 or above - { - if (glVersion > 3.29) - gles.glesMode = GLES_MODE_OGL3; // 3.3 or above - else - gles.glesMode = GLES_MODE_OGL2; // Below 3.3 - } - - - if (gles.glesMode == GLES_MODE_GLES) - { - Printf("GLES choosing mode: GLES_MODE_GLES\n"); - - gles.shaderVersionString = "100"; - gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil"); - gles.npotAvailable = CheckExtension("GL_OES_texture_npot"); - gles.depthClampAvailable = CheckExtension("GL_EXT_depth_clamp"); - gles.anistropicFilterAvailable = CheckExtension("GL_EXT_texture_filter_anisotropic"); - } - else if (gles.glesMode == GLES_MODE_OGL2) - { - Printf("GLES choosing mode: GLES_MODE_OGL2\n"); - - gles.shaderVersionString = "100"; - gles.depthStencilAvailable = true; - gles.npotAvailable = true; - gles.useMappedBuffers = true; - gles.depthClampAvailable = true; - gles.anistropicFilterAvailable = true; - } - else if (gles.glesMode == GLES_MODE_OGL3) - { - Printf("GLES choosing mode: GLES_MODE_OGL3\n"); - - gles.shaderVersionString = "330"; - gles.depthStencilAvailable = true; - gles.npotAvailable = true; - gles.useMappedBuffers = true; - gles.depthClampAvailable = true; - gles.anistropicFilterAvailable = true; - } - - setGlVersion(glVersion); - } -} diff --git a/src/common/rendering/gles/gles_system.h b/src/common/rendering/gles/gles_system.h deleted file mode 100644 index 0edec6282..000000000 --- a/src/common/rendering/gles/gles_system.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef __GLES_SYSTEM_H -#define __GLES_SYSTEM_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) -#include -#endif -#include - -#include -#include -#include - -#define USE_GLAD_LOADER 0 // Set to 1 to use the GLAD loader, otherwise use noramal GZDoom loader for PC - -#if (USE_GLAD_LOADER) - #include "glad/glad.h" - - // Below are used extensions for GLES - typedef void* (APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - GLAPI PFNGLMAPBUFFERRANGEEXTPROC glMapBufferRange; - - typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFEROESPROC)(GLenum target); - GLAPI PFNGLUNMAPBUFFEROESPROC glUnmapBuffer; - - typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); - GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer; - - typedef GLsync(APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); - GLAPI PFNGLFENCESYNCPROC glFenceSync; - - typedef GLenum(APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); - GLAPI PFNGLCLIENTWAITSYNCPROC glClientWaitSync; - - typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); - GLAPI PFNGLDELETESYNCPROC glDeleteSync; - - #define GL_DEPTH24_STENCIL8 0x88F0 - #define GL_MAP_PERSISTENT_BIT 0x0040 - #define GL_MAP_READ_BIT 0x0001 - #define GL_MAP_WRITE_BIT 0x0002 - #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 - #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 - #define GL_BGRA 0x80E1 - #define GL_DEPTH_CLAMP 0x864F - #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE - #define GL_INT_2_10_10_10_REV 0x8D9F - #define GL_RED 0x1903 - #define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 - #define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 - #define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 - #define GL_ALREADY_SIGNALED 0x911A - #define GL_CONDITION_SATISFIED 0x911C - -#else - #include "gl_load/gl_load.h" -#endif - -#if defined(__APPLE__) - #include -#endif - -// This is the number of vec4s make up the light data -#define LIGHT_VEC4_NUM 4 - -//#define NO_RENDER_BUFFER - -//#define NPOT_EMULATION - -namespace OpenGLESRenderer -{ - enum - { - GLES_MODE_GLES = 0, - GLES_MODE_OGL2 = 1, - GLES_MODE_OGL3 = 2, - }; - - struct RenderContextGLES - { - unsigned int flags; - unsigned int maxlights; - unsigned int numlightvectors; - bool useMappedBuffers; - bool depthStencilAvailable; - bool npotAvailable; - bool forceGLSLv100; - bool depthClampAvailable; - bool anistropicFilterAvailable; - int glesMode; - const char* shaderVersionString; - int max_texturesize; - char* vendorstring; - char* modelstring; - }; - - extern RenderContextGLES gles; - - void InitGLES(); -} - -#ifdef _MSC_VER -#pragma warning(disable : 4244) // MIPS -#pragma warning(disable : 4136) // X86 -#pragma warning(disable : 4051) // ALPHA - -#pragma warning(disable : 4018) // signed/unsigned mismatch -#pragma warning(disable : 4305) // truncate from double to float -#endif - -#endif //__GL_PCH_H diff --git a/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.cpp b/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.cpp index 9cf1badb7..73ce9e683 100644 --- a/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.cpp +++ b/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.cpp @@ -29,6 +29,9 @@ #include "stats.h" +CVAR(Int, gl_dither_bpc, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +CVAR(Int, gl_multisample, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); + Postprocess hw_postprocess; PPResource *PPResource::First = nullptr; diff --git a/src/common/rendering/v_video.cpp b/src/common/rendering/v_video.cpp index 47caad55e..ba04006a1 100644 --- a/src/common/rendering/v_video.cpp +++ b/src/common/rendering/v_video.cpp @@ -93,40 +93,6 @@ CUSTOM_CVAR(Int, vid_maxfps, 200, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) } } -CUSTOM_CVAR(Int, vid_preferbackend, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) -{ - // [SP] This may seem pointless - but I don't want to implement live switching just - // yet - I'm pretty sure it's going to require a lot of reinits and destructions to - // do it right without memory leaks - - switch(self) - { -#ifdef HAVE_GLES2 - case 3: - case 2: - Printf("Selecting OpenGLES 2.0 backend...\n"); - break; -#endif -#ifdef HAVE_VULKAN - case 1: - Printf("Selecting Vulkan backend...\n"); - break; -#endif - default: - Printf("Selecting OpenGL backend...\n"); - } - - Printf("Changing the video backend requires a restart for " GAMENAME ".\n"); -} - -int V_GetBackend() -{ - int v = vid_preferbackend; - if (v == 3) v = 2; - else if (v < 0 || v > 3) v = 0; - return v; -} - CUSTOM_CVAR(Int, uiscale, 0, CVAR_ARCHIVE | CVAR_NOINITCALL) { diff --git a/src/common/rendering/v_video.h b/src/common/rendering/v_video.h index 050094181..630a3820c 100644 --- a/src/common/rendering/v_video.h +++ b/src/common/rendering/v_video.h @@ -318,7 +318,6 @@ void V_InitScreen(); void V_Init2 (); void V_Shutdown (); -int V_GetBackend(); inline bool IsRatioWidescreen(int ratio) { return (ratio & 3) != 0; } extern bool setsizeneeded, setmodeneeded; diff --git a/src/common/rendering/vulkan/system/vk_renderdevice.h b/src/common/rendering/vulkan/system/vk_renderdevice.h index 6b1153671..79c2fab90 100644 --- a/src/common/rendering/vulkan/system/vk_renderdevice.h +++ b/src/common/rendering/vulkan/system/vk_renderdevice.h @@ -1,6 +1,6 @@ #pragma once -#include "gl_sysfb.h" +#include "base_sysfb.h" #include "engineerrors.h" #include #include diff --git a/src/d_defcvars.cpp b/src/d_defcvars.cpp index 2da8f0bd2..7e12e0150 100644 --- a/src/d_defcvars.cpp +++ b/src/d_defcvars.cpp @@ -117,7 +117,6 @@ void D_GrabCVarDefaults() SHOULD_BLACKLIST(k_mergekeys) SHOULD_BLACKLIST(m_swapbuttons) SHOULD_BLACKLIST(queryiwad_key) - SHOULD_BLACKLIST(vid_gpuswitch) SHOULD_BLACKLIST(vr_enable_quadbuffered) SHOULD_BLACKLIST(m_filter) SHOULD_BLACKLIST(gl_debug) diff --git a/src/d_main.cpp b/src/d_main.cpp index d3f74b1db..1439042bd 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -3919,3 +3919,36 @@ void I_UpdateWindowTitle() I_UpdateDiscordPresence(false, nullptr, nullptr, nullptr); I_SetWindowTitle(copy.Data()); } + +#ifdef _WIN32 +// For broadest GL compatibility, require user to explicitly enable quad-buffered stereo mode. +// Setting vr_enable_quadbuffered_stereo does not automatically invoke quad-buffered stereo, +// but makes it possible for subsequent "vr_mode 7" to invoke quad-buffered stereo +CUSTOM_CVAR(Bool, vr_enable_quadbuffered, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +{ + Printf("You must restart " GAMENAME " to switch quad stereo mode\n"); +} +#endif + +void UpdateVRModes(bool considerQuadBuffered) +{ + FOptionValues** pVRModes = OptionValues.CheckKey("VRMode"); + if (pVRModes == nullptr) return; + + TArray& vals = (*pVRModes)->mValues; + TArray filteredValues; + int cnt = vals.Size(); + for (int i = 0; i < cnt; ++i) { + auto const& mode = vals[i]; + if (mode.Value == 7) { // Quad-buffered stereo +#ifdef _WIN32 + if (!vr_enable_quadbuffered) continue; +#else + continue; // Remove quad-buffered option on Mac and Linux +#endif + if (!considerQuadBuffered) continue; // Probably no compatible screen mode was found + } + filteredValues.Push(mode); + } + vals = filteredValues; +} diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 82b8071b6..e630cff81 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -65,7 +65,6 @@ EXTERN_CVAR (Color, am_cdwallcolor) EXTERN_CVAR (Bool, wi_percents) EXTERN_CVAR (Int, gl_texture_hqresizemode) EXTERN_CVAR (Int, gl_texture_hqresizemult) -EXTERN_CVAR (Int, vid_preferbackend) EXTERN_CVAR (Float, vid_scale_custompixelaspect) EXTERN_CVAR (Bool, vid_scale_linear) EXTERN_CVAR(Float, m_sensitivity_x) @@ -497,16 +496,8 @@ void FGameConfigFile::DoGlobalSetup () } if (last < 219) { - // 2019-12-06 - polybackend merge - // migrate vid_enablevulkan to vid_preferbackend - auto var = FindCVar("vid_enablevulkan", NULL); - if (var != NULL) - { - UCVarValue v = var->GetGenericRep(CVAR_Int); - vid_preferbackend = v.Int; - } // 2019-12-31 - r_videoscale.cpp changes - var = FindCVar("vid_scale_customstretched", NULL); + auto var = FindCVar("vid_scale_customstretched", NULL); if (var != NULL) { UCVarValue v = var->GetGenericRep(CVAR_Bool); diff --git a/src/win32/zdoom.rc b/src/win32/zdoom.rc index 3587e397b..4c5660a48 100644 --- a/src/win32/zdoom.rc +++ b/src/win32/zdoom.rc @@ -224,13 +224,7 @@ BEGIN CONTROL "&Don't ask me again",IDC_DONTASKIWAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,83,190,72,10 DEFPUSHBUTTON "&Play Game!",IDOK,8,227,90,14 PUSHBUTTON "E&xit",IDCANCEL,166,227,50,14 - CONTROL "&OpenGL",IDC_WELCOME_VULKAN1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,167,41,10 -#ifdef HAVE_VULKAN CONTROL "&Vulkan",IDC_WELCOME_VULKAN2,"Button",BS_AUTORADIOBUTTON,13,176,37,10 -#endif -#ifdef HAVE_GLES2 - CONTROL "OpenGL &ES",IDC_WELCOME_VULKAN4,"Button",BS_AUTORADIOBUTTON,13,185,53,10 -#endif END IDD_CRASHDIALOG DIALOGEX 0, 0, 415, 308 diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index aa6028642..096216177 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -2272,8 +2272,6 @@ OptionMenu VideoModeMenu protected { Title "$VIDMNU_TITLE" - Option "$VIDMNU_PREFERBACKEND", "vid_preferbackend", "PreferBackend" - StaticText " " IfOption(SWRender) { Option "$VIDMNU_RENDERMODE", "vid_rendermode", "RenderMode" @@ -2284,10 +2282,6 @@ OptionMenu VideoModeMenu protected { Option "$VIDMNU_HIDPI", "vid_hidpi", "YesNo" } - IfOption(Windows) - { - Option "$DSPLYMNU_GPUSWITCH", vid_gpuswitch, "GPUSwitch" - } Option "$VIDMNU_FORCEASPECT", "vid_aspect", "ForceRatios" Option "$VIDMNU_CROPASPECT", "vid_cropaspect", "CropAspect" diff --git a/wadsrc/static/menudef.zsimple b/wadsrc/static/menudef.zsimple index 512dc3a0b..5e275d5c9 100644 --- a/wadsrc/static/menudef.zsimple +++ b/wadsrc/static/menudef.zsimple @@ -46,7 +46,6 @@ OptionMenu VideoOptionsSimple protected { Title "$DSPLYMNU_TITLE" - Option "$VIDMNU_PREFERBACKEND", "vid_preferbackend", "PreferBackend" IfOption(SWRender) { Option "$VIDMNU_RENDERMODE", "vid_rendermode", "RenderMode" diff --git a/wadsrc/static/shaders_gles/Uniform usage notes.txt b/wadsrc/static/shaders_gles/Uniform usage notes.txt deleted file mode 100644 index cae1bc255..000000000 --- a/wadsrc/static/shaders_gles/Uniform usage notes.txt +++ /dev/null @@ -1,90 +0,0 @@ -How can I remove the alpha test discard? - - -MISSING: -All post processing gone -Present shader missing dither -Shadow maps gone -HDR modes gone -Materials gone -gl_satformula does not do anything (remove an 'if' in shader) - -Broken to be fixed: -Texture filtering modes, currently fixed to linear mipmap - - - - - - --------------------------------------- -uTextureMode - -0xFFFF = -(USES all) - TM_NORMAL = 0, // (r, g, b, a) - TM_STENCIL, // (1, 1, 1, a) - TM_OPAQUE, // (r, g, b, 1) - TM_INVERSE, // (1-r, 1-g, 1-b, a) - TM_ALPHATEXTURE, // (1, 1, 1, r) - TM_CLAMPY, // (r, g, b, (t >= 0.0 && t <= 1.0)? a:0) - TM_INVERTOPAQUE, // (1-r, 1-g, 1-b, 1) - TM_FOGLAYER, // (renders a fog layer in the shape of the active texture) - TM_FIXEDCOLORMAP = TM_FOGLAYER, - -0xF0000 = -(USES all) - TEXF_Brightmap = 0x10000, - TEXF_Detailmap = 0x20000, - TEXF_Glowmap = 0x40000, - - - - - - -uPalLightLevels - -0xFF = - 32 0r 0 or 1 - -0xFF00 = -gl_fogmode : -(USES 2) - 0, "$OPTVAL_OFF" - 1, "$OPTVAL_STANDARD" - 2, "$OPTVAL_RADIAL" - -0xFF0000 -gl_lightmode: -(USES 16, 5) - 0, "$OPTVAL_STANDARD" - 1, "$OPTVAL_BRIGHT" - 2, "$OPTVAL_DOOM" - 3, "$OPTVAL_DARK" - 4, "$OPTVAL_LEGACY" - 5, "$OPTVAL_BUILD" - 8, "$OPTVAL_SOFTWARE" - 16, "$OPTVAL_VANILLA" - - - - - -uTextureAddColor.a -> blendflags -0x7 = -(USES all) -const int Tex_Blend_Alpha = 1; -const int Tex_Blend_Screen = 2; -const int Tex_Blend_Overlay = 3; -const int Tex_Blend_Hardlight = 4; - - -0x8 = -Invert blend bit - - - - -uDesaturationFactor -> 0 diff --git a/wadsrc/static/shaders_gles/glsl/burn.fp b/wadsrc/static/shaders_gles/glsl/burn.fp deleted file mode 100644 index 040311711..000000000 --- a/wadsrc/static/shaders_gles/glsl/burn.fp +++ /dev/null @@ -1,13 +0,0 @@ - -varying vec4 vTexCoord; -varying vec4 vColor; - -void main() -{ - vec4 frag = vColor; - - vec4 t1 = texture2D(tex, vTexCoord.xy); - vec4 t2 = texture2D(texture2, vec2(vTexCoord.x, 1.0-vTexCoord.y)); - - gl_FragColor = frag * vec4(t1.r, t1.g, t1.b, t2.a); -} diff --git a/wadsrc/static/shaders_gles/glsl/fogboundary.fp b/wadsrc/static/shaders_gles/glsl/fogboundary.fp deleted file mode 100644 index 9a6448bee..000000000 --- a/wadsrc/static/shaders_gles/glsl/fogboundary.fp +++ /dev/null @@ -1,30 +0,0 @@ -varying vec4 pixelpos; - -//=========================================================================== -// -// Main shader routine -// -//=========================================================================== - -void main() -{ - float fogdist; - float fogfactor; - - // - // calculate fog factor - // -#if (DEF_FOG_ENABLED == 1) && (DEF_FOG_RADIAL == 0) && (DEF_FOG_COLOURED == 1) // This was uFogEnabled = -1,, TODO check this - { - fogdist = pixelpos.w; - } -#else - { - fogdist = max(16.0, distance(pixelpos.xyz, uCameraPos.xyz)); - } -#endif - fogfactor = exp2 (uFogDensity * fogdist); - - gl_FragColor = vec4(uFogColor.rgb, 1.0 - fogfactor); -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_defaultlight.fp b/wadsrc/static/shaders_gles/glsl/func_defaultlight.fp deleted file mode 100644 index 6738af8f5..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_defaultlight.fp +++ /dev/null @@ -1,5 +0,0 @@ - -vec4 ProcessLight(Material material, vec4 color) -{ - return color; -} diff --git a/wadsrc/static/shaders_gles/glsl/func_defaultmat.fp b/wadsrc/static/shaders_gles/glsl/func_defaultmat.fp deleted file mode 100644 index 35006820c..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_defaultmat.fp +++ /dev/null @@ -1,7 +0,0 @@ - -void SetupMaterial(inout Material material) -{ - material.Base = ProcessTexel(); - material.Normal = ApplyNormalMap(vTexCoord.st); - material.Bright = texture2D(brighttexture, vTexCoord.st); -} diff --git a/wadsrc/static/shaders_gles/glsl/func_defaultmat2.fp b/wadsrc/static/shaders_gles/glsl/func_defaultmat2.fp deleted file mode 100644 index b2beb254e..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_defaultmat2.fp +++ /dev/null @@ -1,6 +0,0 @@ - -void SetupMaterial(inout Material material) -{ - vec2 texCoord = GetTexCoord(); - SetMaterialProps(material, texCoord); -} diff --git a/wadsrc/static/shaders_gles/glsl/func_normal.fp b/wadsrc/static/shaders_gles/glsl/func_normal.fp deleted file mode 100644 index 49dfadd9a..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_normal.fp +++ /dev/null @@ -1,5 +0,0 @@ - -void SetupMaterial(inout Material material) -{ - SetMaterialProps(material, vTexCoord.st); -} diff --git a/wadsrc/static/shaders_gles/glsl/func_notexture.fp b/wadsrc/static/shaders_gles/glsl/func_notexture.fp deleted file mode 100644 index 9337ad6b1..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_notexture.fp +++ /dev/null @@ -1,6 +0,0 @@ - -vec4 ProcessTexel() -{ - return desaturate(uObjectColor); -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_paletted.fp b/wadsrc/static/shaders_gles/glsl/func_paletted.fp deleted file mode 100644 index 3b223d2f8..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_paletted.fp +++ /dev/null @@ -1,10 +0,0 @@ - -vec4 ProcessTexel() -{ - float index = getTexel(vTexCoord.st).a; - index = ((index * 255.0) + 0.5) / 256.0; - vec4 tex = texture2D(texture2, vec2(index, 0.5)); - tex.a = 1.0; - return tex; -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_pbr.fp b/wadsrc/static/shaders_gles/glsl/func_pbr.fp deleted file mode 100644 index 49dfadd9a..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_pbr.fp +++ /dev/null @@ -1,5 +0,0 @@ - -void SetupMaterial(inout Material material) -{ - SetMaterialProps(material, vTexCoord.st); -} diff --git a/wadsrc/static/shaders_gles/glsl/func_spec.fp b/wadsrc/static/shaders_gles/glsl/func_spec.fp deleted file mode 100644 index f2574a521..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_spec.fp +++ /dev/null @@ -1,8 +0,0 @@ - -void SetupMaterial(inout Material material) -{ - SetMaterialProps(material, vTexCoord.st); - material.Specular = texture2D(speculartexture, vTexCoord.st).rgb; - material.Glossiness = uSpecularMaterial.x; - material.SpecularLevel = uSpecularMaterial.y; -} diff --git a/wadsrc/static/shaders_gles/glsl/func_warp1.fp b/wadsrc/static/shaders_gles/glsl/func_warp1.fp deleted file mode 100644 index dfadf8ada..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_warp1.fp +++ /dev/null @@ -1,19 +0,0 @@ - -vec2 GetTexCoord() -{ - vec2 texCoord = vTexCoord.st; - - const float pi = 3.14159265358979323846; - vec2 offset = vec2(0,0); - - offset.y = sin(pi * 2.0 * (texCoord.x + timer * 0.125)) * 0.1; - offset.x = sin(pi * 2.0 * (texCoord.y + timer * 0.125)) * 0.1; - - return texCoord + offset; -} - -vec4 ProcessTexel() -{ - return getTexel(GetTexCoord()); -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_warp2.fp b/wadsrc/static/shaders_gles/glsl/func_warp2.fp deleted file mode 100644 index 1ee0f7fd0..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_warp2.fp +++ /dev/null @@ -1,20 +0,0 @@ - - -vec2 GetTexCoord() -{ - vec2 texCoord = vTexCoord.st; - - const float pi = 3.14159265358979323846; - vec2 offset = vec2(0.0,0.0); - - offset.y = 0.5 + sin(pi * 2.0 * (texCoord.y + timer * 0.61 + 900.0/8192.0)) + sin(pi * 2.0 * (texCoord.x * 2.0 + timer * 0.36 + 300.0/8192.0)); - offset.x = 0.5 + sin(pi * 2.0 * (texCoord.y + timer * 0.49 + 700.0/8192.0)) + sin(pi * 2.0 * (texCoord.x * 2.0 + timer * 0.49 + 1200.0/8192.0)); - - return texCoord + offset * 0.025; -} - -vec4 ProcessTexel() -{ - return getTexel(GetTexCoord()); -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_warp3.fp b/wadsrc/static/shaders_gles/glsl/func_warp3.fp deleted file mode 100644 index 9edea0004..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_warp3.fp +++ /dev/null @@ -1,21 +0,0 @@ - - -vec2 GetTexCoord() -{ - vec2 texCoord = vTexCoord.st; - - const float pi = 3.14159265358979323846; - vec2 offset = vec2(0.0,0.0); - - float siny = sin(pi * 2.0 * (texCoord.y * 2.0 + timer * 0.75)) * 0.03; - offset.y = siny + sin(pi * 2.0 * (texCoord.x + timer * 0.75)) * 0.03; - offset.x = siny + sin(pi * 2.0 * (texCoord.x + timer * 0.45)) * 0.02; - - return texCoord + offset; -} - -vec4 ProcessTexel() -{ - return getTexel(GetTexCoord()); -} - diff --git a/wadsrc/static/shaders_gles/glsl/func_wavex.fp b/wadsrc/static/shaders_gles/glsl/func_wavex.fp deleted file mode 100644 index 3b892da9d..000000000 --- a/wadsrc/static/shaders_gles/glsl/func_wavex.fp +++ /dev/null @@ -1,17 +0,0 @@ - -vec2 GetTexCoord() -{ - vec2 texCoord = vTexCoord.st; - - const float pi = 3.14159265358979323846; - - texCoord.x += sin(pi * 2.0 * (texCoord.y + timer * 0.125)) * 0.1; - - return texCoord; -} - -vec4 ProcessTexel() -{ - return getTexel(GetTexCoord()); -} - diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_jagged.fp b/wadsrc/static/shaders_gles/glsl/fuzz_jagged.fp deleted file mode 100644 index 083c22068..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_jagged.fp +++ /dev/null @@ -1,24 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - - vec2 texSplat; - const float pi = 3.14159265358979323846; - texSplat.x = texCoord.x + mod(sin(pi * 2.0 * (texCoord.y + timer * 2.0)),0.1) * 0.1; - texSplat.y = texCoord.y + mod(cos(pi * 2.0 * (texCoord.x + timer * 2.0)),0.1) * 0.1; - - vec4 basicColor = getTexel(texSplat); - - float texX = sin(texCoord.x * 100.0 + timer*5.0); - float texY = cos(texCoord.x * 100.0 + timer*5.0); - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_noise.fp b/wadsrc/static/shaders_gles/glsl/fuzz_noise.fp deleted file mode 100644 index 0107ebbd2..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_noise.fp +++ /dev/null @@ -1,20 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - texCoord.x = float( int(texCoord.x * 128.0) ) / 128.0; - texCoord.y = float( int(texCoord.y * 128.0) ) / 128.0; - - float texX = sin(mod(texCoord.x * 100.0 + timer*5.0, 3.489)) + texCoord.x / 4.0; - float texY = cos(mod(texCoord.y * 100.0 + timer*5.0, 3.489)) + texCoord.y / 4.0; - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - - float test = mod(timer*2.0+(vX + vY), 0.5); - basicColor.a = basicColor.a * test; - basicColor.rgb = vec3(0.0,0.0,0.0); - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_smooth.fp b/wadsrc/static/shaders_gles/glsl/fuzz_smooth.fp deleted file mode 100644 index 3c642c399..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_smooth.fp +++ /dev/null @@ -1,18 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - float texX = texCoord.x / 3.0 + 0.66; - float texY = 0.34 - texCoord.y / 3.0; - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - basicColor.r = basicColor.g = basicColor.b = 0.0; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_smoothnoise.fp b/wadsrc/static/shaders_gles/glsl/fuzz_smoothnoise.fp deleted file mode 100644 index d446a3d0a..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_smoothnoise.fp +++ /dev/null @@ -1,19 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - float texX = sin(mod(texCoord.x * 100.0 + timer*5.0, 3.489)) + texCoord.x / 4.0; - float texY = cos(mod(texCoord.y * 100.0 + timer*5.0, 3.489)) + texCoord.y / 4.0; - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - - - float test = mod(timer*2.0+(vX + vY), 0.5); - basicColor.a = basicColor.a * test; - - basicColor.rgb = vec3(0.0,0.0,0.0); - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_smoothtranslucent.fp b/wadsrc/static/shaders_gles/glsl/fuzz_smoothtranslucent.fp deleted file mode 100644 index 1b727a1bc..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_smoothtranslucent.fp +++ /dev/null @@ -1,18 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - float texX = sin(texCoord.x * 100.0 + timer*5.0); - float texY = cos(texCoord.x * 100.0 + timer*5.0); - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_software.fp b/wadsrc/static/shaders_gles/glsl/fuzz_software.fp deleted file mode 100644 index 1edcb0099..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_software.fp +++ /dev/null @@ -1,21 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - texCoord.x = float( int(texCoord.x * 128.0) ) / 128.0; - texCoord.y = float( int(texCoord.y * 128.0) ) / 128.0; - - float texX = texCoord.x / 3.0 + 0.66; - float texY = 0.34 - texCoord.y / 3.0; - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - basicColor.r = basicColor.g = basicColor.b = 0.0; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_standard.fp b/wadsrc/static/shaders_gles/glsl/fuzz_standard.fp deleted file mode 100644 index 1edcb0099..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_standard.fp +++ /dev/null @@ -1,21 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - texCoord.x = float( int(texCoord.x * 128.0) ) / 128.0; - texCoord.y = float( int(texCoord.y * 128.0) ) / 128.0; - - float texX = texCoord.x / 3.0 + 0.66; - float texY = 0.34 - texCoord.y / 3.0; - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - basicColor.r = basicColor.g = basicColor.b = 0.0; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/fuzz_swirly.fp b/wadsrc/static/shaders_gles/glsl/fuzz_swirly.fp deleted file mode 100644 index 266858999..000000000 --- a/wadsrc/static/shaders_gles/glsl/fuzz_swirly.fp +++ /dev/null @@ -1,18 +0,0 @@ -//created by Evil Space Tomato - -vec4 ProcessTexel() -{ - vec2 texCoord = vTexCoord.st; - vec4 basicColor = getTexel(texCoord); - - float texX = sin(texCoord.x * 100.0 + timer*5.0); - float texY = cos(texCoord.x * 100.0 + timer*5.0); - float vX = (texX/texY)*21.0; - float vY = (texY/texX)*13.0; - float test = mod(timer*2.0+(vX + vY), 0.5); - - basicColor.a = basicColor.a * test; - basicColor.r = basicColor.g = basicColor.b = 0.0; - - return basicColor; -} diff --git a/wadsrc/static/shaders_gles/glsl/main.fp b/wadsrc/static/shaders_gles/glsl/main.fp deleted file mode 100644 index 99e64ca76..000000000 --- a/wadsrc/static/shaders_gles/glsl/main.fp +++ /dev/null @@ -1,566 +0,0 @@ - -varying vec4 vTexCoord; -varying vec4 vColor; -varying vec4 pixelpos; -varying vec3 glowdist; -varying vec3 gradientdist; -varying vec4 vWorldNormal; -varying vec4 vEyeNormal; - -#ifdef NO_CLIPDISTANCE_SUPPORT -varying vec4 ClipDistanceA; -varying vec4 ClipDistanceB; -#endif - - -struct Material -{ - vec4 Base; - vec4 Bright; - vec4 Glow; - vec3 Normal; - vec3 Specular; - float Glossiness; - float SpecularLevel; -}; - -vec4 Process(vec4 color); -vec4 ProcessTexel(); -Material ProcessMaterial(); // note that this is deprecated. Use SetupMaterial! -void SetupMaterial(inout Material mat); -vec4 ProcessLight(Material mat, vec4 color); -vec3 ProcessMaterialLight(Material material, vec3 color); -vec2 GetTexCoord(); - -// These get Or'ed into uTextureMode because it only uses its 3 lowermost bits. -//const int TEXF_Brightmap = 0x10000; -//const int TEXF_Detailmap = 0x20000; -//const int TEXF_Glowmap = 0x40000; - - -//=========================================================================== -// -// Color to grayscale -// -//=========================================================================== - -float grayscale(vec4 color) -{ - return dot(color.rgb, vec3(0.3, 0.56, 0.14)); -} - -//=========================================================================== -// -// Desaturate a color -// -//=========================================================================== - -vec4 dodesaturate(vec4 texel, float factor) -{ - if (factor != 0.0) - { - float gray = grayscale(texel); - return mix (texel, vec4(gray,gray,gray,texel.a), factor); - } - else - { - return texel; - } -} - -//=========================================================================== -// -// Desaturate a color -// -//=========================================================================== - -vec4 desaturate(vec4 texel) -{ -#if (DEF_DO_DESATURATE == 1) - return dodesaturate(texel, uDesaturationFactor); -#else - return texel; -#endif -} - -//=========================================================================== -// -// Texture tinting code originally from JFDuke but with a few more options -// -//=========================================================================== - -const int Tex_Blend_Alpha = 1; -const int Tex_Blend_Screen = 2; -const int Tex_Blend_Overlay = 3; -const int Tex_Blend_Hardlight = 4; - - vec4 ApplyTextureManipulation(vec4 texel) - { - // Step 1: desaturate according to the material's desaturation factor. - texel = dodesaturate(texel, uTextureModulateColor.a); - - // Step 2: Invert if requested // TODO FIX - //if ((blendflags & 8) != 0) - //{ - // texel.rgb = vec3(1.0 - texel.r, 1.0 - texel.g, 1.0 - texel.b); - //} - - // Step 3: Apply additive color - texel.rgb += uTextureAddColor.rgb; - - // Step 4: Colorization, including gradient if set. - texel.rgb *= uTextureModulateColor.rgb; - - // Before applying the blend the value needs to be clamped to [0..1] range. - texel.rgb = clamp(texel.rgb, 0.0, 1.0); - - // Step 5: Apply a blend. This may just be a translucent overlay or one of the blend modes present in current Build engines. -#if (DEF_BLEND_FLAGS != 0) - - vec3 tcol = texel.rgb * 255.0; // * 255.0 to make it easier to reuse the integer math. - vec4 tint = uTextureBlendColor * 255.0; - -#if (DEF_BLEND_FLAGS == 1) - - tcol.b = tcol.b * (1.0 - uTextureBlendColor.a) + tint.b * uTextureBlendColor.a; - tcol.g = tcol.g * (1.0 - uTextureBlendColor.a) + tint.g * uTextureBlendColor.a; - tcol.r = tcol.r * (1.0 - uTextureBlendColor.a) + tint.r * uTextureBlendColor.a; - -#elif (DEF_BLEND_FLAGS == 2) // Tex_Blend_Screen: - tcol.b = 255.0 - (((255.0 - tcol.b) * (255.0 - tint.r)) / 256.0); - tcol.g = 255.0 - (((255.0 - tcol.g) * (255.0 - tint.g)) / 256.0); - tcol.r = 255.0 - (((255.0 - tcol.r) * (255.0 - tint.b)) / 256.0); - -#elif (DEF_BLEND_FLAGS == 3) // Tex_Blend_Overlay: - - tcol.b = tcol.b < 128.0? (tcol.b * tint.b) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - tint.b)) / 128.0); - tcol.g = tcol.g < 128.0? (tcol.g * tint.g) / 128.0 : 255.0 - (((255.0 - tcol.g) * (255.0 - tint.g)) / 128.0); - tcol.r = tcol.r < 128.0? (tcol.r * tint.r) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - tint.r)) / 128.0); - -#elif (DEF_BLEND_FLAGS == 4) // Tex_Blend_Hardlight: - - tcol.b = tint.b < 128.0 ? (tcol.b * tint.b) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - tint.b)) / 128.0); - tcol.g = tint.g < 128.0 ? (tcol.g * tint.g) / 128.0 : 255.0 - (((255.0 - tcol.g) * (255.0 - tint.g)) / 128.0); - tcol.r = tint.r < 128.0 ? (tcol.r * tint.r) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - tint.r)) / 128.0); - -#endif - - texel.rgb = tcol / 255.0; - -#endif - - return texel; -} - -//=========================================================================== -// -// This function is common for all (non-special-effect) fragment shaders -// -//=========================================================================== - -vec4 getTexel(vec2 st) -{ - vec4 texel = texture2D(tex, st); - -#if (DEF_TEXTURE_MODE == 1) - - texel.rgb = vec3(1.0,1.0,1.0); - -#elif (DEF_TEXTURE_MODE == 2)// TM_OPAQUE - - texel.a = 1.0; - -#elif (DEF_TEXTURE_MODE == 3)// TM_INVERSE - - texel = vec4(1.0-texel.r, 1.0-texel.b, 1.0-texel.g, texel.a); - -#elif (DEF_TEXTURE_MODE == 4)// TM_ALPHATEXTURE - - float gray = grayscale(texel); - texel = vec4(1.0, 1.0, 1.0, gray*texel.a); - -#elif (DEF_TEXTURE_MODE == 5)// TM_CLAMPY - - if (st.t < 0.0 || st.t > 1.0) - { - texel.a = 0.0; - } - -#elif (DEF_TEXTURE_MODE == 6)// TM_OPAQUEINVERSE - - texel = vec4(1.0-texel.r, 1.0-texel.b, 1.0-texel.g, 1.0); - - -#elif (DEF_TEXTURE_MODE == 7)//TM_FOGLAYER - - return texel; - -#endif - - // Apply the texture modification colors. -#if (DEF_BLEND_FLAGS != 0) - - // only apply the texture manipulation if it contains something. - texel = ApplyTextureManipulation(texel); - -#endif - - // Apply the Doom64 style material colors on top of everything from the texture modification settings. - // This may be a bit redundant in terms of features but the data comes from different sources so this is unavoidable. - - texel.rgb += uAddColor.rgb; - -#if (DEF_USE_OBJECT_COLOR_2 == 1) - texel *= mix(uObjectColor, uObjectColor2, gradientdist.z); -#else - texel *= uObjectColor; -#endif - - // Last but not least apply the desaturation from the sector's light. - return desaturate(texel); -} - - - - -//=========================================================================== -// -// Doom software lighting equation -// -//=========================================================================== - -#define DOOMLIGHTFACTOR 232.0 - -float R_DoomLightingEquation_OLD(float light) -{ - // z is the depth in view space, positive going into the screen - float z = pixelpos.w; - - - /* L in the range 0 to 63 */ - float L = light * 63.0/31.0; - - float min_L = clamp(36.0/31.0 - L, 0.0, 1.0); - - // Fix objects getting totally black when close. - if (z < 0.0001) - z = 0.0001; - - float scale = 1.0 / z; - float index = (59.0/31.0 - L) - (scale * DOOMLIGHTFACTOR/31.0 - DOOMLIGHTFACTOR/31.0); - - // Result is the normalized colormap index (0 bright .. 1 dark) - return clamp(index, min_L, 1.0) / 32.0; -} - - -//=========================================================================== -// -// zdoom colormap equation -// -//=========================================================================== -float R_ZDoomColormap(float light, float z) -{ - float L = light * 255.0; - float vis = min(uGlobVis / z, 24.0 / 32.0); - float shade = 2.0 - (L + 12.0) / 128.0; - float lightscale = shade - vis; - return lightscale * 31.0; -} - -//=========================================================================== -// -// Doom software lighting equation -// -//=========================================================================== -float R_DoomLightingEquation(float light) -{ - // z is the depth in view space, positive going into the screen - float z; - -#if (DEF_FOG_RADIAL == 1) - z = distance(pixelpos.xyz, uCameraPos.xyz); -#else - z = pixelpos.w; -#endif - -#if (DEF_BUILD_LIGHTING == 1) // gl_lightmode 5: Build software lighting emulation. - // This is a lot more primitive than Doom's lighting... - float numShades = float(uPalLightLevels); - float curshade = (1.0 - light) * (numShades - 1.0); - float visibility = max(uGlobVis * uLightFactor * abs(z), 0.0); - float shade = clamp((curshade + visibility), 0.0, numShades - 1.0); - return clamp(shade * uLightDist, 0.0, 1.0); -#endif - - float colormap = R_ZDoomColormap(light, z); // ONLY Software mode, vanilla not yet working - -#if (DEF_BANDED_SW_LIGHTING == 1) - colormap = floor(colormap) + 0.5; -#endif - - // Result is the normalized colormap index (0 bright .. 1 dark) - return clamp(colormap, 0.0, 31.0) / 32.0; -} - - -float shadowAttenuation(vec4 lightpos, float lightcolorA) -{ - return 1.0; -} - - -float spotLightAttenuation(vec4 lightpos, vec3 spotdir, float lightCosInnerAngle, float lightCosOuterAngle) -{ - vec3 lightDirection = normalize(lightpos.xyz - pixelpos.xyz); - float cosDir = dot(lightDirection, spotdir); - return smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir); -} - -vec3 ApplyNormalMap(vec2 texcoord) -{ - return normalize(vWorldNormal.xyz); -} - -//=========================================================================== -// -// Sets the common material properties. -// -//=========================================================================== - -void SetMaterialProps(inout Material material, vec2 texCoord) -{ - -#ifdef NPOT_EMULATION - -#if (DEF_NPOT_EMULATION == 1) - float period = floor(texCoord.t / uNpotEmulation.y); - texCoord.s += uNpotEmulation.x * floor(mod(texCoord.t, uNpotEmulation.y)); - texCoord.t = period + mod(texCoord.t, uNpotEmulation.y); -#endif - -#endif - - material.Base = getTexel(texCoord.st); - material.Normal = ApplyNormalMap(texCoord.st); - - #if (DEF_TEXTURE_FLAGS & 0x1) - material.Bright = texture2D(brighttexture, texCoord.st); - #endif - - #if (DEF_TEXTURE_FLAGS & 0x2) - { - vec4 Detail = texture2D(detailtexture, texCoord.st * uDetailParms.xy) * uDetailParms.z; - material.Base *= Detail; - } - #endif - - #if (DEF_TEXTURE_FLAGS & 0x4) - { - material.Glow = texture2D(glowtexture, texCoord.st); - } - #endif - -} - -//=========================================================================== -// -// Calculate light -// -// It is important to note that the light color is not desaturated -// due to ZDoom's implementation weirdness. Everything that's added -// on top of it, e.g. dynamic lights and glows are, though, because -// the objects emitting these lights are also. -// -// This is making this a bit more complicated than it needs to -// because we can't just desaturate the final fragment color. -// -//=========================================================================== - -vec4 getLightColor(Material material, float fogdist, float fogfactor) -{ - vec4 color = vColor; - -#if (DEF_USE_U_LIGHT_LEVEL == 1) - { - float newlightlevel = 1.0 - R_DoomLightingEquation(uLightLevel); - color.rgb *= newlightlevel; - } -#else - { - - #if (DEF_FOG_ENABLED == 1) && (DEF_FOG_COLOURED == 0) - { - // brightening around the player for light mode 2 - if (fogdist < uLightDist) - { - color.rgb *= uLightFactor - (fogdist / uLightDist) * (uLightFactor - 1.0); - } - - // - // apply light diminishing through fog equation - // - color.rgb = mix(vec3(0.0, 0.0, 0.0), color.rgb, fogfactor); - } - #endif - } -#endif - - - // - // handle glowing walls - // -#if (DEF_USE_GLOW_TOP_COLOR) - if (glowdist.x < uGlowTopColor.a) - { - color.rgb += desaturate(uGlowTopColor * (1.0 - glowdist.x / uGlowTopColor.a)).rgb; - } -#endif - - -#if (DEF_USE_GLOW_BOTTOM_COLOR) - if (glowdist.y < uGlowBottomColor.a) - { - color.rgb += desaturate(uGlowBottomColor * (1.0 - glowdist.y / uGlowBottomColor.a)).rgb; - } -#endif - - color = min(color, 1.0); - - // these cannot be safely applied by the legacy format where the implementation cannot guarantee that the values are set. -#ifndef LEGACY_USER_SHADER - // - // apply glow - // - color.rgb = mix(color.rgb, material.Glow.rgb, material.Glow.a); - - // - // apply brightmaps - // - color.rgb = min(color.rgb + material.Bright.rgb, 1.0); -#endif - - // - // apply other light manipulation by custom shaders, default is a NOP. - // - color = ProcessLight(material, color); - - // - // apply dynamic lights - // - return vec4(ProcessMaterialLight(material, color.rgb), material.Base.a * vColor.a); -} - -//=========================================================================== -// -// Applies colored fog -// -//=========================================================================== - -vec4 applyFog(vec4 frag, float fogfactor) -{ - return vec4(mix(uFogColor.rgb, frag.rgb, fogfactor), frag.a); -} - -//=========================================================================== -// -// Main shader routine -// -//=========================================================================== - -void main() -{ - - //if (ClipDistanceA.x < 0.0 || ClipDistanceA.y < 0.0 || ClipDistanceA.z < 0.0 || ClipDistanceA.w < 0.0 || ClipDistanceB.x < 0.0) discard; - -#ifndef LEGACY_USER_SHADER - Material material; - - material.Base = vec4(0.0); - material.Bright = vec4(0.0); - material.Glow = vec4(0.0); - material.Normal = vec3(0.0); - material.Specular = vec3(0.0); - material.Glossiness = 0.0; - material.SpecularLevel = 0.0; - SetupMaterial(material); -#else - Material material = ProcessMaterial(); -#endif - vec4 frag = material.Base; - -#ifndef NO_ALPHATEST - if (frag.a <= uAlphaThreshold) discard; -#endif - - #if (DEF_FOG_2D == 0) // check for special 2D 'fog' mode. - { - float fogdist = 0.0; - float fogfactor = 0.0; - - // - // calculate fog factor - // - #if (DEF_FOG_ENABLED == 1) - { - #if (DEF_FOG_RADIAL == 0) - fogdist = max(16.0, pixelpos.w); - #else - fogdist = max(16.0, distance(pixelpos.xyz, uCameraPos.xyz)); - #endif - - fogfactor = exp2 (uFogDensity * fogdist); - } - #endif - - #if (DEF_TEXTURE_MODE != 7) - { - frag = getLightColor(material, fogdist, fogfactor); - - // - // colored fog - // - #if (DEF_FOG_ENABLED == 1) && (DEF_FOG_COLOURED == 1) - { - frag = applyFog(frag, fogfactor); - } - #endif - } - #else - { - frag = vec4(uFogColor.rgb, (1.0 - fogfactor) * frag.a * 0.75 * vColor.a); - } - #endif - } - #else - { - #if (DEF_TEXTURE_MODE == 7) - { - float gray = grayscale(frag); - vec4 cm = (uObjectColor + gray * (uAddColor - uObjectColor)) * 2.0; - frag = vec4(clamp(cm.rgb, 0.0, 1.0), frag.a); - } - #endif - - frag = frag * ProcessLight(material, vColor); - frag.rgb = frag.rgb + uFogColor.rgb; - } - #endif // (DEF_2D_FOG == 0) - -#if (DEF_USE_COLOR_MAP == 1) // This mostly works but doesn't look great because of the blending. - { - frag.rgb = clamp(pow(frag.rgb, vec3(uFixedColormapStart.a)), 0.0, 1.0); - if (uFixedColormapRange.a == 0.0) - { - float gray = (frag.r * 0.3 + frag.g * 0.56 + frag.b * 0.14); - vec4 cm = uFixedColormapStart + gray * uFixedColormapRange; - frag.rgb = clamp(cm.rgb, 0.0, 1.0); - } - } -#endif - - gl_FragColor = frag; - - //gl_FragColor = vec4(0.8, 0.2, 0.5, 1); - -} diff --git a/wadsrc/static/shaders_gles/glsl/main.vp b/wadsrc/static/shaders_gles/glsl/main.vp deleted file mode 100644 index efa1ff008..000000000 --- a/wadsrc/static/shaders_gles/glsl/main.vp +++ /dev/null @@ -1,219 +0,0 @@ - -attribute vec4 aPosition; -attribute vec2 aTexCoord; -attribute vec4 aColor; - -varying vec4 vTexCoord; -varying vec4 vColor; - -#ifndef SIMPLE // we do not need these for simple shaders -attribute vec4 aVertex2; -attribute vec4 aNormal; -attribute vec4 aNormal2; -#if __VERSION__ >= 300 -attribute vec4 aBoneWeight; -attribute uvec4 aBoneSelector; -#endif - -varying vec4 pixelpos; -varying vec3 glowdist; -varying vec3 gradientdist; -varying vec4 vWorldNormal; -varying vec4 vEyeNormal; -#endif - -#ifdef NO_CLIPDISTANCE_SUPPORT -varying vec4 ClipDistanceA; -varying vec4 ClipDistanceB; -#endif - -struct BonesResult -{ - vec3 Normal; - vec4 Position; -}; - -BonesResult ApplyBones(); - - -void main() -{ - float ClipDistance0, ClipDistance1, ClipDistance2, ClipDistance3, ClipDistance4; - - vec2 parmTexCoord; - vec4 parmPosition; - - BonesResult bones = ApplyBones(); - - parmTexCoord = aTexCoord; - parmPosition = bones.Position; - - #ifndef SIMPLE - vec4 worldcoord = ModelMatrix * mix(parmPosition, aVertex2, uInterpolationFactor); - #else - vec4 worldcoord = ModelMatrix * parmPosition; - #endif - - vec4 eyeCoordPos = ViewMatrix * worldcoord; - - #ifdef HAS_UNIFORM_VERTEX_DATA - if ((useVertexData & 1) == 0) - vColor = uVertexColor; - else - vColor = aColor; - #else - vColor = aColor; - #endif - - #ifndef SIMPLE - pixelpos.xyz = worldcoord.xyz; - pixelpos.w = -eyeCoordPos.z/eyeCoordPos.w; - - if (uGlowTopColor.a > 0.0 || uGlowBottomColor.a > 0.0) - { - float topatpoint = (uGlowTopPlane.w + uGlowTopPlane.x * worldcoord.x + uGlowTopPlane.y * worldcoord.z) * uGlowTopPlane.z; - float bottomatpoint = (uGlowBottomPlane.w + uGlowBottomPlane.x * worldcoord.x + uGlowBottomPlane.y * worldcoord.z) * uGlowBottomPlane.z; - glowdist.x = topatpoint - worldcoord.y; - glowdist.y = worldcoord.y - bottomatpoint; - glowdist.z = clamp(glowdist.x / (topatpoint - bottomatpoint), 0.0, 1.0); - } - - if (uObjectColor2.a != 0.0) - { - float topatpoint = (uGradientTopPlane.w + uGradientTopPlane.x * worldcoord.x + uGradientTopPlane.y * worldcoord.z) * uGradientTopPlane.z; - float bottomatpoint = (uGradientBottomPlane.w + uGradientBottomPlane.x * worldcoord.x + uGradientBottomPlane.y * worldcoord.z) * uGradientBottomPlane.z; - gradientdist.x = topatpoint - worldcoord.y; - gradientdist.y = worldcoord.y - bottomatpoint; - gradientdist.z = clamp(gradientdist.x / (topatpoint - bottomatpoint), 0.0, 1.0); - } - - if (uSplitBottomPlane.z != 0.0) - { - ClipDistance3 = ((uSplitTopPlane.w + uSplitTopPlane.x * worldcoord.x + uSplitTopPlane.y * worldcoord.z) * uSplitTopPlane.z) - worldcoord.y; - ClipDistance4 = worldcoord.y - ((uSplitBottomPlane.w + uSplitBottomPlane.x * worldcoord.x + uSplitBottomPlane.y * worldcoord.z) * uSplitBottomPlane.z); - } - - vWorldNormal = NormalModelMatrix * vec4(normalize(bones.Normal), 1.0); - - vEyeNormal = NormalViewMatrix * vWorldNormal; - #endif - - #ifdef SPHEREMAP - vec3 u = normalize(eyeCoordPos.xyz); - vec4 n = normalize(NormalViewMatrix * vec4(parmTexCoord.x, 0.0, parmTexCoord.y, 0.0)); - vec3 r = reflect(u, n.xyz); - float m = 2.0 * sqrt( r.x*r.x + r.y*r.y + (r.z+1.0)*(r.z+1.0) ); - vec2 sst = vec2(r.x/m + 0.5, r.y/m + 0.5); - vTexCoord.xy = sst; - #else - vTexCoord = TextureMatrix * vec4(parmTexCoord, 0.0, 1.0); - #endif - - - if (uClipHeightDirection != 0.0) // clip planes used for reflective flats - { - ClipDistance0 = (worldcoord.y - uClipHeight) * uClipHeightDirection; - } - else if (uClipLine.x > -1000000.0) // and for line portals - this will never be active at the same time as the reflective planes clipping so it can use the same hardware clip plane. - { - ClipDistance0 = -( (worldcoord.z - uClipLine.y) * uClipLine.z + (uClipLine.x - worldcoord.x) * uClipLine.w ) + 1.0/32768.0; // allow a tiny bit of imprecisions for colinear linedefs. - } - else - { - ClipDistance0 = 1.0; - } - - // clip planes used for translucency splitting - ClipDistance1 = worldcoord.y - uClipSplit.x; - ClipDistance2 = uClipSplit.y - worldcoord.y; - - if (uSplitTopPlane == vec4(0.0)) - { - ClipDistance3 = 1.0; - ClipDistance4 = 1.0; - } - - ClipDistanceA = vec4(ClipDistance0, ClipDistance1, ClipDistance2, ClipDistance3); - ClipDistanceB = vec4(ClipDistance4, 0.0, 0.0, 0.0); - - gl_Position = ProjectionMatrix * eyeCoordPos; -} - -#if !defined(SIMPLE) - -vec3 GetAttrNormal() -{ - #ifdef HAS_UNIFORM_VERTEX_DATA - if ((useVertexData & 2) == 0) - return uVertexNormal.xyz; - else - return mix(aNormal.xyz, aNormal2.xyz, uInterpolationFactor); - #else - return mix(aNormal.xyz, aNormal2.xyz, uInterpolationFactor); - #endif -} - -#if __VERSION__ >= 300 - -void AddWeightedBone(uint boneIndex, float weight, inout vec4 position, inout vec3 normal) -{ - if (weight != 0.0) - { - mat4 transform = bones[uBoneIndexBase + int(boneIndex)]; - mat3 rotation = mat3(transform); - position += (transform * aPosition) * weight; - normal += (rotation * aNormal.xyz) * weight; - } -} - -BonesResult ApplyBones() -{ - BonesResult result; - if (uBoneIndexBase >= 0 && aBoneWeight != vec4(0.0)) - { - result.Position = vec4(0.0); - result.Normal = vec3(0.0); - - // We use low precision input for our bone weights. Rescale so the sum still is 1.0 - float totalWeight = aBoneWeight.x + aBoneWeight.y + aBoneWeight.z + aBoneWeight.w; - float weightMultiplier = 1.0 / totalWeight; - vec4 boneWeight = aBoneWeight * weightMultiplier; - - AddWeightedBone(aBoneSelector.x, boneWeight.x, result.Position, result.Normal); - AddWeightedBone(aBoneSelector.y, boneWeight.y, result.Position, result.Normal); - AddWeightedBone(aBoneSelector.z, boneWeight.z, result.Position, result.Normal); - AddWeightedBone(aBoneSelector.w, boneWeight.w, result.Position, result.Normal); - - result.Position.w = 1.0; // For numerical stability - } - else - { - result.Position = aPosition; - result.Normal = GetAttrNormal(); - } - return result; -} - -#else - -BonesResult ApplyBones() -{ - BonesResult result; - - result.Position = aPosition; - result.Normal = GetAttrNormal(); - - return result; -} -#endif - -#else // SIMPLE - -BonesResult ApplyBones() -{ - BonesResult result; - result.Position = aPosition; - return result; -} - -#endif diff --git a/wadsrc/static/shaders_gles/glsl/material_nolight.fp b/wadsrc/static/shaders_gles/glsl/material_nolight.fp deleted file mode 100644 index b71404423..000000000 --- a/wadsrc/static/shaders_gles/glsl/material_nolight.fp +++ /dev/null @@ -1,5 +0,0 @@ - -vec3 ProcessMaterialLight(Material material, vec3 color) -{ - return material.Base.rgb * clamp(color + desaturate(uDynLightColor).rgb, 0.0, 1.4); -} diff --git a/wadsrc/static/shaders_gles/glsl/material_normal.fp b/wadsrc/static/shaders_gles/glsl/material_normal.fp deleted file mode 100644 index 0fceef675..000000000 --- a/wadsrc/static/shaders_gles/glsl/material_normal.fp +++ /dev/null @@ -1,118 +0,0 @@ - -vec3 lightContribution(int i, vec3 normal) -{ - vec4 lightpos = lights[i]; - vec4 lightcolor = lights[i+1]; - vec4 lightspot1 = lights[i+2]; - vec4 lightspot2 = lights[i+3]; - - float lightdistance = distance(lightpos.xyz, pixelpos.xyz); - - //if (lightpos.w < lightdistance) - // return vec3(0.0); // Early out lights touching surface but not this fragment - - vec3 lightdir = normalize(lightpos.xyz - pixelpos.xyz); - float dotprod = dot(normal, lightdir); - - if (dotprod < -0.0001) return vec3(0.0); // light hits from the backside. This can happen with full sector light lists and must be rejected for all cases. Note that this can cause precision issues. - - float attenuation = clamp((lightpos.w - lightdistance) / lightpos.w, 0.0, 1.0); - - -#if (DEF_HAS_SPOTLIGHT == 1) // Only perform test below if there are ANY spot lights on this surface. - - if (lightspot1.w == 1.0) - attenuation *= spotLightAttenuation(lightpos, lightspot1.xyz, lightspot2.x, lightspot2.y); - -#endif - - if (lightcolor.a < 0.0) // Sign bit is the attenuated light flag - { - attenuation *= clamp(dotprod, 0.0, 1.0); - } - return lightcolor.rgb * attenuation; -} - - -vec3 ProcessMaterialLight(Material material, vec3 color) -{ - vec4 dynlight = uDynLightColor; - vec3 normal = material.Normal; - -#if (DEF_DYNAMIC_LIGHTS_MOD == 1) - // modulated lights - - // Some very old GLES2 hardware does not allow non-constants in a for-loop expression because it can not unroll it. - // However they do allow 'break', so use stupid hack - #if (USE_GLSL_V100 == 1) - - for(int i = 0; i < 8; i++) // Max 8 lights - { - if(i == ((uLightRange.y - uLightRange.x) / 4)) - break; - - dynlight.rgb += lightContribution(i * 4, normal); - } - - #else - - for(int i=uLightRange.x; i