From 75bf7fc139af57d2cb06a4153113a716486eed62 Mon Sep 17 00:00:00 2001 From: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com> Date: Wed, 26 Aug 2026 18:12:08 +0800 Subject: [PATCH] make new opengl source generator --- Directory.Build.targets | 3 +- GenerateGL.sln | 37 - .../CPUanimation.IImageProvider.cs.old} | 0 .../CPUanimation.ImageHelper.cs.old} | 0 .../Define.BufferObjectBase.cs.old} | 0 .../GraphicInitializer.cs.old} | 0 .../.discard/Image.Native.cs.old | 36 + src/StgSharp.Graphics/.discard/Image.cs.old | 176 + .../ImageInfo.cs.old} | 0 .../OpenGL.Buffer.AutoTexture.cs.old} | 0 .../OpenGL.Buffer.GLBufferObjectBase.cs.old} | 0 ...penGL.Generated.GlCommandHistory.g.cs.old} | 0 .../OpenGL.ShaderEdit.IglConvertable.cs.old} | 0 .../OpenGL.glApiManager.Const.cs.old} | 0 .../.discard/OpenGL.glApiManager.cs.old | 3406 +++++ .../OpenGL.glRenderObjectGenrator.cs.old} | 2 +- ...enGL.glRenderStream.ThreadSecurity.cs.old} | 0 .../OpenGL.glType.cs.old} | 0 .../{Pixels.cs => .discard/Pixels.cs.old} | 0 src/StgSharp.Graphics/.discard/README.md | 67 + .../ShaderEdit.InternalShaderType.cs.old | 37 + .../ShaderEdit.ShaderGenerator.cs.old} | 0 .../ShaderEdit.ShaderStruct.cs.old} | 0 .../TexturePipeline.cs.old} | 0 .../Vulkan.vkEnum.cs.old} | 0 .../Vulkan.vkHandle.cs.old} | 0 .../framework.cs.old} | 0 .../{gl.cs => .discard/gl.cs.old} | 0 .../glfw.dtruct.cs.old} | 0 src/StgSharp.Graphics/Camera.cs | 49 +- src/StgSharp.Graphics/Image.cs | 216 +- .../OpenGL/Api/OpenGLFunction.Buffer.cs | 144 +- .../OpenGL/Api/OpenGLFunction.Framebuffer.cs | 32 + .../OpenGL/Api/OpenGLFunction.Shader.cs | 206 +- .../OpenGL/Api/OpenGLFunction.Texture.cs | 97 +- .../OpenGL/Api/OpenGLFunction.VertexArray.cs | 29 +- src/StgSharp.Graphics/OpenGL/Buffer/EBO.cs | 69 +- src/StgSharp.Graphics/OpenGL/Buffer/FBO.cs | 81 +- src/StgSharp.Graphics/OpenGL/Buffer/RBO.cs | 48 +- .../OpenGL/Buffer/TextureGL.cs | 238 +- src/StgSharp.Graphics/OpenGL/Buffer/VAO.cs | 59 +- src/StgSharp.Graphics/OpenGL/Buffer/VBO.cs | 154 +- .../OpenGL/ShaderEdit/Shader.cs | 285 +- .../OpenGL/ShaderEdit/Uniform.cs | 92 +- src/StgSharp.Graphics/OpenGL/glApiManager.cs | 3439 +---- src/StgSharp.Graphics/OpenGL/glConst.cs | 7 +- src/StgSharp.Graphics/OpenGL/glException.cs | 67 - .../OpenGL/glRenderStream.cs | 9 - src/StgSharp.Graphics/OpenGL/glSync.cs | 20 + src/StgSharp.Graphics/PlainGeometryMesh.cs | 10 +- src/StgSharp.Graphics/RenderStream.cs | 32 - src/StgSharp.Graphics/Rgba8.cs | 38 + src/StgSharp.Graphics/TextureProvider.cs | 41 +- src/StgSharp.Graphics/glfw.cs | 9 +- src/StgSharp.Graphics/glfw.struct.cs | 32 + src/StgSharp.Native/CMakeLists.txt | 4 - src/StgSharp.Native/StgSharp.Native.vcxproj | 8 +- .../StgSharp.Native.vcxproj.filters | 14 +- src/StgSharp.Native/sn-head/StgSharpNative.h | 25 - src/StgSharp.Native/sn-head/gl.h | 10775 ---------------- src/StgSharp.Native/sn-head/glfw_function.h | 4 + src/StgSharp.Native/sn-head/khrplatform.h | 310 - src/StgSharp.Native/sn-head/wgl.h | 1076 -- src/StgSharp.Native/sn-src/load_glfw.c | 1 - src/StgSharp.Native/sn-src/sn_native.c | 64 - .../CodeGen/CsTypeMapper.cs | 192 - test/StgSharp.GenerateGL/CodeGen/Generator.cs | 532 - .../CodeGen/GlXmlParser.cs | 185 - .../CodeGen/ManagedNameResolver.cs | 140 - .../CodeGen/ManagedParameterPlanner.cs | 138 - test/StgSharp.GenerateGL/CodeGen/Models.cs | 58 - .../CodeGen/UniformOverloadEmitter.cs | 219 - .../Docs/ArchitectureAssessment.md | 691 - .../Docs/SourceGenerator.md | 93 - test/StgSharp.GenerateGL/GenerateGL.csproj | 15 - .../Generated/GlCommandHistory.g.cs | 1027 -- .../Generated/OpenGLFunction.Raw.v3_3.g.cs | 2187 ---- .../Generated/OpenGLFunction.Raw.v4_0.g.cs | 238 - .../Generated/OpenGLFunction.Raw.v4_1.g.cs | 286 - .../Generated/OpenGLFunction.Raw.v4_2.g.cs | 93 - .../Generated/OpenGLFunction.Raw.v4_3.g.cs | 379 - .../Generated/OpenGLFunction.Raw.v4_4.g.cs | 111 - .../Generated/OpenGLFunction.Raw.v4_5.g.cs | 822 -- .../Generated/OpenGLFunction.Raw.v4_6.g.cs | 51 - .../OpenGLFunction.Uniform.v3_3.g.cs | 261 - .../OpenGLFunction.Uniform.v4_0.g.cs | 87 - .../OpenGLFunction.Uniform.v4_1.g.cs | 334 - .../Generated/OpenglContext.g.cs | 670 - test/StgSharp.GenerateGL/Program.cs | 58 - test/StgSharpDebug/RenderStream/Partical.cs | 330 +- test/StgSharpDebug/TestRender.cs | 1 - tools/StgSharp.GenerateGL/GenerateCli.cs | 156 + .../Generation/CSharpAbiTypePolicy.cs | 64 + .../Generation/GeneratedFileSet.cs | 63 + .../Generation/GlEquivalentTypeMapper.cs | 242 + .../Generation/OpenGlGenerator.cs | 422 + tools/StgSharp.GenerateGL/Program.cs | 60 + .../Registry/GlApiDefinition.cs | 59 + .../Registry/GlCommandDefinition.cs | 56 + .../Registry/GlEnumDefinition.cs | 50 + .../Registry/GlRegistryElement.cs | 30 + .../Registry/GlRegistryModel.cs | 126 + .../Registry/GlRegistryReader.cs | 511 + .../Registry/GlTypeDefinition.cs | 25 + tools/StgSharp.GenerateGL/RegistryCli.cs | 860 ++ .../StgSharp.GenerateGL.csproj | 18 + .../Tree/XmlTreeDocument.cs | 20 + .../StgSharp.GenerateGL/Tree/XmlTreeReader.cs | 56 + tools/StgSharp.GenerateGL/XmlCli.cs | 1509 +++ {test => tools}/StgSharp.GenerateGL/gl.h | 0 .../StgSharp.GenerateGL/xml/Genglvnd | 0 .../StgSharp.GenerateGL/xml/README.adoc | 0 .../StgSharp.GenerateGL/xml/genglvnd.py | 0 .../StgSharp.GenerateGL/xml/genheaders.py | 0 .../StgSharp.GenerateGL/xml/gl.xml | 0 .../StgSharp.GenerateGL/xml/glx.xml | 0 .../xml/glxproto.reserved.txt | 0 .../StgSharp.GenerateGL/xml/readme.pdf | Bin .../StgSharp.GenerateGL/xml/readme.tex | 0 .../StgSharp.GenerateGL/xml/reg.py | 0 .../StgSharp.GenerateGL/xml/registry.rnc | 0 .../StgSharp.GenerateGL/xml/testesext.c | 0 .../StgSharp.GenerateGL/xml/testglext.c | 0 .../StgSharp.GenerateGL/xml/vendors.txt | 0 .../StgSharp.GenerateGL/xml/wgl.xml | 0 .../StgSharp.GenerateGL/xml/wgltypes.txt | 0 126 files changed, 8934 insertions(+), 26139 deletions(-) delete mode 100644 GenerateGL.sln rename src/StgSharp.Graphics/{CPUanimation/IImageProvider.cs => .discard/CPUanimation.IImageProvider.cs.old} (100%) rename src/StgSharp.Graphics/{CPUanimation/ImageHelper.cs => .discard/CPUanimation.ImageHelper.cs.old} (100%) rename src/StgSharp.Graphics/{Define/BufferObjectBase.cs => .discard/Define.BufferObjectBase.cs.old} (100%) rename src/StgSharp.Graphics/{GraphicInitializer.cs => .discard/GraphicInitializer.cs.old} (100%) create mode 100644 src/StgSharp.Graphics/.discard/Image.Native.cs.old create mode 100644 src/StgSharp.Graphics/.discard/Image.cs.old rename src/StgSharp.Graphics/{ImageInfo.cs => .discard/ImageInfo.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/Buffer/AutoTexture.cs => .discard/OpenGL.Buffer.AutoTexture.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/Buffer/GLBufferObjectBase.cs => .discard/OpenGL.Buffer.GLBufferObjectBase.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/Generated/GlCommandHistory.g.cs => .discard/OpenGL.Generated.GlCommandHistory.g.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/ShaderEdit/IglConvertable.cs => .discard/OpenGL.ShaderEdit.IglConvertable.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/glApiManager.Const.cs => .discard/OpenGL.glApiManager.Const.cs.old} (100%) create mode 100644 src/StgSharp.Graphics/.discard/OpenGL.glApiManager.cs.old rename src/StgSharp.Graphics/{OpenGL/glRenderObjectGenrator.cs => .discard/OpenGL.glRenderObjectGenrator.cs.old} (99%) rename src/StgSharp.Graphics/{OpenGL/glRenderStream.ThreadSecurity.cs => .discard/OpenGL.glRenderStream.ThreadSecurity.cs.old} (100%) rename src/StgSharp.Graphics/{OpenGL/glType.cs => .discard/OpenGL.glType.cs.old} (100%) rename src/StgSharp.Graphics/{Pixels.cs => .discard/Pixels.cs.old} (100%) create mode 100644 src/StgSharp.Graphics/.discard/README.md create mode 100644 src/StgSharp.Graphics/.discard/ShaderEdit.InternalShaderType.cs.old rename src/StgSharp.Graphics/{ShaderEdit/ShaderGenerator.cs => .discard/ShaderEdit.ShaderGenerator.cs.old} (100%) rename src/StgSharp.Graphics/{ShaderEdit/ShaderStruct.cs => .discard/ShaderEdit.ShaderStruct.cs.old} (100%) rename src/StgSharp.Graphics/{TexturePipeline.cs => .discard/TexturePipeline.cs.old} (100%) rename src/StgSharp.Graphics/{Vulkan/vkEnum.cs => .discard/Vulkan.vkEnum.cs.old} (100%) rename src/StgSharp.Graphics/{Vulkan/vkHandle.cs => .discard/Vulkan.vkHandle.cs.old} (100%) rename src/StgSharp.Graphics/{framework.cs => .discard/framework.cs.old} (100%) rename src/StgSharp.Graphics/{gl.cs => .discard/gl.cs.old} (100%) rename src/StgSharp.Graphics/{glfw.dtruct.cs => .discard/glfw.dtruct.cs.old} (100%) create mode 100644 src/StgSharp.Graphics/OpenGL/glSync.cs create mode 100644 src/StgSharp.Graphics/Rgba8.cs create mode 100644 src/StgSharp.Graphics/glfw.struct.cs delete mode 100644 src/StgSharp.Native/sn-head/gl.h delete mode 100644 src/StgSharp.Native/sn-head/khrplatform.h delete mode 100644 src/StgSharp.Native/sn-head/wgl.h delete mode 100644 src/StgSharp.Native/sn-src/sn_native.c delete mode 100644 test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/Generator.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/Models.cs delete mode 100644 test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs delete mode 100644 test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md delete mode 100644 test/StgSharp.GenerateGL/Docs/SourceGenerator.md delete mode 100644 test/StgSharp.GenerateGL/GenerateGL.csproj delete mode 100644 test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs delete mode 100644 test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs delete mode 100644 test/StgSharp.GenerateGL/Program.cs create mode 100644 tools/StgSharp.GenerateGL/GenerateCli.cs create mode 100644 tools/StgSharp.GenerateGL/Generation/CSharpAbiTypePolicy.cs create mode 100644 tools/StgSharp.GenerateGL/Generation/GeneratedFileSet.cs create mode 100644 tools/StgSharp.GenerateGL/Generation/GlEquivalentTypeMapper.cs create mode 100644 tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs create mode 100644 tools/StgSharp.GenerateGL/Program.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlApiDefinition.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlCommandDefinition.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlEnumDefinition.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlRegistryElement.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlRegistryModel.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlRegistryReader.cs create mode 100644 tools/StgSharp.GenerateGL/Registry/GlTypeDefinition.cs create mode 100644 tools/StgSharp.GenerateGL/RegistryCli.cs create mode 100644 tools/StgSharp.GenerateGL/StgSharp.GenerateGL.csproj create mode 100644 tools/StgSharp.GenerateGL/Tree/XmlTreeDocument.cs create mode 100644 tools/StgSharp.GenerateGL/Tree/XmlTreeReader.cs create mode 100644 tools/StgSharp.GenerateGL/XmlCli.cs rename {test => tools}/StgSharp.GenerateGL/gl.h (100%) rename {test => tools}/StgSharp.GenerateGL/xml/Genglvnd (100%) rename {test => tools}/StgSharp.GenerateGL/xml/README.adoc (100%) rename {test => tools}/StgSharp.GenerateGL/xml/genglvnd.py (100%) rename {test => tools}/StgSharp.GenerateGL/xml/genheaders.py (100%) rename {test => tools}/StgSharp.GenerateGL/xml/gl.xml (100%) rename {test => tools}/StgSharp.GenerateGL/xml/glx.xml (100%) rename {test => tools}/StgSharp.GenerateGL/xml/glxproto.reserved.txt (100%) rename {test => tools}/StgSharp.GenerateGL/xml/readme.pdf (100%) rename {test => tools}/StgSharp.GenerateGL/xml/readme.tex (100%) rename {test => tools}/StgSharp.GenerateGL/xml/reg.py (100%) rename {test => tools}/StgSharp.GenerateGL/xml/registry.rnc (100%) rename {test => tools}/StgSharp.GenerateGL/xml/testesext.c (100%) rename {test => tools}/StgSharp.GenerateGL/xml/testglext.c (100%) rename {test => tools}/StgSharp.GenerateGL/xml/vendors.txt (100%) rename {test => tools}/StgSharp.GenerateGL/xml/wgl.xml (100%) rename {test => tools}/StgSharp.GenerateGL/xml/wgltypes.txt (100%) diff --git a/Directory.Build.targets b/Directory.Build.targets index 356949fe..29e3f05f 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -29,7 +29,8 @@ + AfterTargets="Build" + Condition="'$(DisableNativeCopy)'!='true'"> diff --git a/GenerateGL.sln b/GenerateGL.sln deleted file mode 100644 index 14e45def..00000000 --- a/GenerateGL.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36705.20 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenerateGL", "test\StgSharp.GenerateGL\GenerateGL.csproj", "{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Common", "src\StgSharp.Common\StgSharp.Common.csproj", "{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|x64.ActiveCfg = Debug|x64 - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|x64.Build.0 = Debug|x64 - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|Any CPU.Build.0 = Release|Any CPU - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|x64.ActiveCfg = Release|x64 - {9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|x64.Build.0 = Release|x64 - {5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Debug|Any CPU.ActiveCfg = Debug|x64 - {5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Debug|x64.ActiveCfg = Debug|x64 - {5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Release|Any CPU.ActiveCfg = Release|x64 - {5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Release|x64.ActiveCfg = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {AC71C01F-9867-4E43-85AB-4A8A7896B1BC} - EndGlobalSection -EndGlobal diff --git a/src/StgSharp.Graphics/CPUanimation/IImageProvider.cs b/src/StgSharp.Graphics/.discard/CPUanimation.IImageProvider.cs.old similarity index 100% rename from src/StgSharp.Graphics/CPUanimation/IImageProvider.cs rename to src/StgSharp.Graphics/.discard/CPUanimation.IImageProvider.cs.old diff --git a/src/StgSharp.Graphics/CPUanimation/ImageHelper.cs b/src/StgSharp.Graphics/.discard/CPUanimation.ImageHelper.cs.old similarity index 100% rename from src/StgSharp.Graphics/CPUanimation/ImageHelper.cs rename to src/StgSharp.Graphics/.discard/CPUanimation.ImageHelper.cs.old diff --git a/src/StgSharp.Graphics/Define/BufferObjectBase.cs b/src/StgSharp.Graphics/.discard/Define.BufferObjectBase.cs.old similarity index 100% rename from src/StgSharp.Graphics/Define/BufferObjectBase.cs rename to src/StgSharp.Graphics/.discard/Define.BufferObjectBase.cs.old diff --git a/src/StgSharp.Graphics/GraphicInitializer.cs b/src/StgSharp.Graphics/.discard/GraphicInitializer.cs.old similarity index 100% rename from src/StgSharp.Graphics/GraphicInitializer.cs rename to src/StgSharp.Graphics/.discard/GraphicInitializer.cs.old diff --git a/src/StgSharp.Graphics/.discard/Image.Native.cs.old b/src/StgSharp.Graphics/.discard/Image.Native.cs.old new file mode 100644 index 00000000..183b0b08 --- /dev/null +++ b/src/StgSharp.Graphics/.discard/Image.Native.cs.old @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------------- +// file="Image.Native" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Internal; + +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics +{ + internal static unsafe partial class GraphicFramework + { + + [LibraryImport( + Native.LibName, + EntryPoint = "loadImageData", + StringMarshalling = StringMarshalling.Utf8)] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial void InternalLoadImage( + string fileName, + ImageInfo* output, + ImageLoader loader + ); + + [LibraryImport(Native.LibName, EntryPoint = "unloadImageData")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial void InternalUnloadImage( + ImageInfo* output + ); + + } +} diff --git a/src/StgSharp.Graphics/.discard/Image.cs.old b/src/StgSharp.Graphics/.discard/Image.cs.old new file mode 100644 index 00000000..61ef26bd --- /dev/null +++ b/src/StgSharp.Graphics/.discard/Image.cs.old @@ -0,0 +1,176 @@ +// ----------------------------------------------------------------------------- +// file="Image" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Graphics.OpenGL; + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics +{ + public class Image : IImageProvider + { + + private byte[] _data; + private ImageInfo _rawInfo; + private int _pixelUpdateCount = 0; + + internal unsafe Image() + { + _rawInfo = new ImageInfo(); + } + + internal Image( + ImageInfo information + ) + { + _rawInfo = information; + _data = []; + + // int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel; + } + + public (int width, int height) Size => (_rawInfo.Width, _rawInfo.Height); + + public byte[] PixelBuffer + { + get + { + if ((_data.Length == 0) || (_data == null)) + { + GetBytes(); + return _data!; + } + return _data; + } + } + + public ImageChannel Channel => _rawInfo.Channel; + + /// + /// Hash code of time pixels updated last time. + /// + public int PixelUpdateCount + { + get => _pixelUpdateCount; + internal set => _pixelUpdateCount = value; + } + + public int ChannelCount => _rawInfo.ChannelCount; + + public int Height + { + get => _rawInfo.Height; + internal set => _rawInfo.Height = value; + } + + public int Width + { + get => _rawInfo.Width; + internal set => _rawInfo.Width = value; + } + + public int PixelSize => ImageInfo.GetPixelSize(_rawInfo.pixelLayout, _rawInfo.Channel); + + public PixelChannelLayout PixelLayout + { + get => _rawInfo.pixelLayout; + private set => _rawInfo.pixelLayout = value; + } + + internal ref byte[] Data => ref _data; + + public void FromBytes( + byte[] stream + ) { } + + public static unsafe Image FromFile( + string route, + ImageLoader loader + ) + { + Image ret = new Image(); + fixed (ImageInfo* iptr = &ret._rawInfo) { + GraphicFramework.InternalLoadImage(route, iptr, loader); + } + return ret; + } + + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + byte[] stream + ) + { + ImageInfo _info = new ImageInfo + { + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image(_info); + ret.PixelLayout = PixelChannelLayout.Byte; + ret._data = stream; + return ret; + } + + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream + ) + { + ImageInfo _info = new ImageInfo + { + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image(_info); + ret.PixelLayout = layout; + ret._data = stream; + return ret; + } + + public unsafe byte[] GetBytes() + { + if (_data.Length == 0) + { + int size = Width * Height * ImageInfo.GetPixelSize(PixelLayout, Channel); + _data = new Span((byte*)_rawInfo.StreamPtr, size).ToArray(); + fixed (ImageInfo* pptr = &_rawInfo) { + GraphicFramework.InternalUnloadImage(pptr); + } + _rawInfo.StreamPtr = IntPtr.Zero; + } + return _data; + } + + public Image ProvideImage() + { + return this; + } + + internal static Image FromMemory( + ImageInfo info, + byte[] data, + int operationCount + ) + { + return new Image + { + _rawInfo = info, + _data = data, + _pixelUpdateCount = operationCount + }; + } + + } +} \ No newline at end of file diff --git a/src/StgSharp.Graphics/ImageInfo.cs b/src/StgSharp.Graphics/.discard/ImageInfo.cs.old similarity index 100% rename from src/StgSharp.Graphics/ImageInfo.cs rename to src/StgSharp.Graphics/.discard/ImageInfo.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/AutoTexture.cs b/src/StgSharp.Graphics/.discard/OpenGL.Buffer.AutoTexture.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/Buffer/AutoTexture.cs rename to src/StgSharp.Graphics/.discard/OpenGL.Buffer.AutoTexture.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/GLBufferObjectBase.cs b/src/StgSharp.Graphics/.discard/OpenGL.Buffer.GLBufferObjectBase.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/Buffer/GLBufferObjectBase.cs rename to src/StgSharp.Graphics/.discard/OpenGL.Buffer.GLBufferObjectBase.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs b/src/StgSharp.Graphics/.discard/OpenGL.Generated.GlCommandHistory.g.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs rename to src/StgSharp.Graphics/.discard/OpenGL.Generated.GlCommandHistory.g.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/src/StgSharp.Graphics/.discard/OpenGL.ShaderEdit.IglConvertable.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/ShaderEdit/IglConvertable.cs rename to src/StgSharp.Graphics/.discard/OpenGL.ShaderEdit.IglConvertable.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/glApiManager.Const.cs b/src/StgSharp.Graphics/.discard/OpenGL.glApiManager.Const.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/glApiManager.Const.cs rename to src/StgSharp.Graphics/.discard/OpenGL.glApiManager.Const.cs.old diff --git a/src/StgSharp.Graphics/.discard/OpenGL.glApiManager.cs.old b/src/StgSharp.Graphics/.discard/OpenGL.glApiManager.cs.old new file mode 100644 index 00000000..d9a9bf74 --- /dev/null +++ b/src/StgSharp.Graphics/.discard/OpenGL.glApiManager.cs.old @@ -0,0 +1,3406 @@ +// ----------------------------------------------------------------------------- +// file="glApiManager" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Internal; +using StgSharp.Mathematics; +using StgSharp.Mathematics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + + private const int glExtension = 0x1f03; + private const int glVersion = 0x1f02; + + private static readonly string[] glBranch = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC " + }; + + /// + /// Load all supported OpenGL APIs and bind them to given . + /// + /// + /// The handle to current OpenGL viewPortDisplay + /// + public static unsafe void LoadOpenGLApiTo( + IntPtr contextHandle + ) + { + OpenglContext* context = (OpenglContext*)contextHandle; + if (context->glGetString != null) { + return; + } + delegate*, IntPtr> loader = &GraphicFramework.glfwGetProcAddress; + IntPtr proc = GraphicFramework.glfwGetProcAddress("glGetString"u8); + if (proc == IntPtr.Zero) + { + #if DEBUG + Console.WriteLine("Cannot load GL."); + #endif + throw new NotSupportedException("Cannot load gl"); + } + context->glGetString = (delegate*)proc; + + string coreVersion; + if (context->glGetString(glVersion) == null) { + DefaultLog.InternalWriteLog("Failed to call glGetString", LogType.Error); + } + coreVersion = Marshal.PtrToStringAnsi((nint)context->glGetString(glVersion)) ?? + string.Empty; + + foreach (string branch in glBranch) + { + if (coreVersion.Contains(branch, StringComparison.Ordinal)) { + coreVersion.Replace(branch, string.Empty, StringComparison.Ordinal); + } + } + string[] versionSep = coreVersion!.Split('.'); + int majorVersion = int.Parse(versionSep[0]); + int minorVersion = int.Parse(versionSep[1]); + CheckCoreVersion(majorVersion, minorVersion); + + + if (LoadGLcore10((glContextShadow*)context, loader) && + LoadGLcore11((glContextShadow*)context, loader) && + LoadGLcore12((glContextShadow*)context, loader) && + LoadGLcore13((glContextShadow*)context, loader) && + LoadGLcore14((glContextShadow*)context, loader) && + LoadGLcore15((glContextShadow*)context, loader) && + LoadGLcore20((glContextShadow*)context, loader) && + LoadGLcore21((glContextShadow*)context, loader) && + LoadGLcore30((glContextShadow*)context, loader) && + LoadGLcore31((glContextShadow*)context, loader) && + LoadGLcore32((glContextShadow*)context, loader) && + LoadGLcore33((glContextShadow*)context, loader) && + LoadGLcore40((glContextShadow*)context, loader) && + LoadGLcore41((glContextShadow*)context, loader) && + LoadGLcore42((glContextShadow*)context, loader) && + LoadGLcore43((glContextShadow*)context, loader) && + LoadGLcore44((glContextShadow*)context, loader) && + LoadGLcore45((glContextShadow*)context, loader) && + LoadGLcore46((glContextShadow*)context, loader)) { } + + uint code = context->glGetError(); + if (code != 0) + { + Console.WriteLine(code); + throw new GlExecutionException(code); + } + + int extensionCount; + context->glGetIntegerv(glConst.NUM_EXTENSIONS, &extensionCount); + if (extensionCount == 0) + { + DefaultLog.InternalWriteLog( + "No supported OpenGL extensions are found.", LogType.Info); + return; + } + + HashSet extensions = []; + + for (uint i = 0; i < extensionCount; i++) + { + byte* strPtr = context->glGetStringi(glConst.EXTENSIONS, i); + extensions.Add(Marshal.PtrToStringAnsi((IntPtr)strPtr) ?? string.Empty); + } + + DefaultLog.InternalWriteLog( + $"{$"Find OpenGL extensions:"}{Environment.NewLine}{string.Join(';', extensions)}", + LogType.Info); + + #region checkGLextensions + + if (extensions.Contains("gl_4DFX_multisample")) + { + _4DFX_multisample = true; + extensions.Remove("gl_4DFX_multisample"); + } + if (extensions.Contains("gl_3DFX_tbuffer")) + { + _3DFX_tbuffer = true; + extensions.Remove("gl_3DFX_tbuffer"); + } + if (extensions.Contains("gl_3DFX_texture_compression_FXT1")) + { + _3DFX_texture_compression_FXT1 = true; + extensions.Remove("gl_3DFX_texture_compression_FXT1"); + } + if (extensions.Contains("gl_AMD_blend_minmax_factor")) + { + AMD_blend_minmax_factor = true; + extensions.Remove("gl_AMD_blend_minmax_factor"); + } + if (extensions.Contains("gl_AMD_conservative_depth")) + { + AMD_conservative_depth = true; + extensions.Remove("gl_AMD_conservative_depth"); + } + if (extensions.Contains("gl_AMD_debug_output")) + { + AMD_debug_output = true; + extensions.Remove("gl_AMD_debug_output"); + } + if (extensions.Contains("gl_AMD_depth_clamp_separate")) + { + AMD_depth_clamp_separate = true; + extensions.Remove("gl_AMD_depth_clamp_separate"); + } + if (extensions.Contains("gl_AMD_draw_buffers_blend")) + { + AMD_draw_buffers_blend = true; + extensions.Remove("gl_AMD_draw_buffers_blend"); + } + if (extensions.Contains("gl_AMD_framebuffer_multisample_advanced")) + { + AMD_framebuffer_multisample_advanced = true; + extensions.Remove("gl_AMD_framebuffer_multisample_advanced"); + } + if (extensions.Contains("gl_AMD_framebuffer_sample_positions")) + { + AMD_framebuffer_sample_positions = true; + extensions.Remove("gl_AMD_framebuffer_sample_positions"); + } + if (extensions.Contains("gl_AMD_gcn_shader")) + { + AMD_gcn_shader = true; + extensions.Remove("gl_AMD_gcn_shader"); + } + if (extensions.Contains("gl_AMD_gpu_shader_half_float")) + { + AMD_gpu_shader_half_float = true; + extensions.Remove("gl_AMD_gpu_shader_half_float"); + } + if (extensions.Contains("gl_AMD_gpu_shader_int16")) + { + AMD_gpu_shader_int16 = true; + extensions.Remove("gl_AMD_gpu_shader_int16"); + } + if (extensions.Contains("gl_AMD_gpu_shader_int64")) + { + AMD_gpu_shader_int64 = true; + extensions.Remove("gl_AMD_gpu_shader_int64"); + } + if (extensions.Contains("gl_AMD_interleaved_elements")) + { + AMD_interleaved_elements = true; + extensions.Remove("gl_AMD_interleaved_elements"); + } + if (extensions.Contains("gl_AMD_multi_draw_indirect")) + { + AMD_multi_draw_indirect = true; + extensions.Remove("gl_AMD_multi_draw_indirect"); + } + if (extensions.Contains("gl_AMD_name_gen_delete")) + { + AMD_name_gen_delete = true; + extensions.Remove("gl_AMD_name_gen_delete"); + } + if (extensions.Contains("gl_AMD_occlusion_query_event")) + { + AMD_occlusion_query_event = true; + extensions.Remove("gl_AMD_occlusion_query_event"); + } + if (extensions.Contains("gl_AMD_performance_monitor")) + { + AMD_performance_monitor = true; + extensions.Remove("gl_AMD_performance_monitor"); + } + if (extensions.Contains("gl_AMD_pinned_memory")) + { + AMD_pinned_memory = true; + extensions.Remove("gl_AMD_pinned_memory"); + } + if (extensions.Contains("gl_AMD_query_buffer_object")) + { + AMD_query_buffer_object = true; + extensions.Remove("gl_AMD_query_buffer_object"); + } + if (extensions.Contains("gl_AMD_sample_positions")) + { + AMD_sample_positions = true; + extensions.Remove("gl_AMD_sample_positions"); + } + if (extensions.Contains("gl_AMD_seamless_cubemap_per_texture")) + { + AMD_seamless_cubemap_per_texture = true; + extensions.Remove("gl_AMD_seamless_cubemap_per_texture"); + } + if (extensions.Contains("gl_AMD_shader_atomic_counter_ops")) + { + AMD_shader_atomic_counter_ops = true; + extensions.Remove("gl_AMD_shader_atomic_counter_ops"); + } + if (extensions.Contains("gl_AMD_shader_ballot")) + { + AMD_shader_ballot = true; + extensions.Remove("gl_AMD_shader_ballot"); + } + if (extensions.Contains("gl_AMD_shader_explicit_vertex_parameter")) + { + AMD_shader_explicit_vertex_parameter = true; + extensions.Remove("gl_AMD_shader_explicit_vertex_parameter"); + } + if (extensions.Contains("gl_AMD_shader_gpu_shader_half_float_fetch")) + { + AMD_shader_gpu_shader_half_float_fetch = true; + extensions.Remove("gl_AMD_shader_gpu_shader_half_float_fetch"); + } + if (extensions.Contains("gl_AMD_shader_image_load_store_lod")) + { + AMD_shader_image_load_store_lod = true; + extensions.Remove("gl_AMD_shader_image_load_store_lod"); + } + if (extensions.Contains("gl_AMD_shader_stencil_export")) + { + AMD_shader_stencil_export = true; + extensions.Remove("gl_AMD_shader_stencil_export"); + } + if (extensions.Contains("gl_AMD_shader_trinary_minmax")) + { + AMD_shader_trinary_minmax = true; + extensions.Remove("gl_AMD_shader_trinary_minmax"); + } + if (extensions.Contains("gl_AMD_sparse_texture")) + { + AMD_sparse_texture = true; + extensions.Remove("gl_AMD_sparse_texture"); + } + if (extensions.Contains("gl_AMD_stencil_operation_extended")) + { + AMD_stencil_operation_extended = true; + extensions.Remove("gl_AMD_stencil_operation_extended"); + } + if (extensions.Contains("gl_AMD_texture_gather_bias_lod")) + { + AMD_texture_gather_bias_lod = true; + extensions.Remove("gl_AMD_texture_gather_bias_lod"); + } + if (extensions.Contains("gl_AMD_texture_texture4")) + { + AMD_texture_texture4 = true; + extensions.Remove("gl_AMD_texture_texture4"); + } + if (extensions.Contains("gl_AMD_transform_feedback3_lines_triangles")) + { + AMD_transform_feedback3_lines_triangles = true; + extensions.Remove("gl_AMD_transform_feedback3_lines_triangles"); + } + if (extensions.Contains("gl_AMD_transform_feedback4")) + { + AMD_transform_feedback4 = true; + extensions.Remove("gl_AMD_transform_feedback4"); + } + if (extensions.Contains("gl_AMD_vertex_shader_layer")) + { + AMD_vertex_shader_layer = true; + extensions.Remove("gl_AMD_vertex_shader_layer"); + } + if (extensions.Contains("gl_AMD_vertex_shader_tessellator")) + { + AMD_vertex_shader_tessellator = true; + extensions.Remove("gl_AMD_vertex_shader_tessellator"); + } + if (extensions.Contains("gl_AMD_vertex_shader_viewport_index")) + { + AMD_vertex_shader_viewport_index = true; + extensions.Remove("gl_AMD_vertex_shader_viewport_index"); + } + if (extensions.Contains("gl_APPLE_aux_depth_stencil")) + { + APPLE_aux_depth_stencil = true; + extensions.Remove("glAPPLE_aux_depth_stencil"); + } + if (extensions.Contains("gl_APPLE_client_storage")) + { + APPLE_client_storage = true; + extensions.Remove("glAPPLE_client_storage"); + } + if (extensions.Contains("gl_APPLE_element_array")) + { + APPLE_element_array = true; + extensions.Remove("glAPPLE_element_array"); + } + if (extensions.Contains("gl_APPLE_fence")) + { + APPLE_fence = true; + extensions.Remove("glAPPLE_fence"); + } + if (extensions.Contains("gl_APPLE_float_pixels")) + { + APPLE_float_pixels = true; + extensions.Remove("glAPPLE_float_pixels"); + } + if (extensions.Contains("gl_APPLE_flush_buffer_range")) + { + APPLE_flush_buffer_range = true; + extensions.Remove("glAPPLE_flush_buffer_range"); + } + if (extensions.Contains("gl_APPLE_object_purgeable")) + { + APPLE_object_purgeable = true; + extensions.Remove("glAPPLE_object_purgeable"); + } + if (extensions.Contains("gl_APPLE_rgb_422")) + { + APPLE_rgb_422 = true; + extensions.Remove("glAPPLE_rgb_422"); + } + if (extensions.Contains("gl_APPLE_row_bytes")) + { + APPLE_row_bytes = true; + extensions.Remove("glAPPLE_row_bytes"); + } + if (extensions.Contains("gl_APPLE_specular_vector")) + { + APPLE_specular_vector = true; + extensions.Remove("glAPPLE_specular_vector"); + } + if (extensions.Contains("gl_APPLE_texture_range")) + { + APPLE_texture_range = true; + extensions.Remove("glAPPLE_texture_range"); + } + if (extensions.Contains("gl_APPLE_transform_hint")) + { + APPLE_transform_hint = true; + extensions.Remove("glAPPLE_transform_hint"); + } + if (extensions.Contains("gl_APPLE_vertex_array_object")) + { + APPLE_vertex_array_object = true; + extensions.Remove("glAPPLE_vertex_array_object"); + } + if (extensions.Contains("gl_APPLE_vertex_array_range")) + { + APPLE_vertex_array_range = true; + extensions.Remove("glAPPLE_vertex_array_range"); + } + if (extensions.Contains("gl_APPLE_vertex_program_evaluators")) + { + APPLE_vertex_program_evaluators = true; + extensions.Remove("glAPPLE_vertex_program_evaluators"); + } + if (extensions.Contains("gl_APPLE_ycbcr_422")) + { + APPLE_ycbcr_422 = true; + extensions.Remove("glAPPLE_ycbcr_422"); + } + if (extensions.Contains("gl_ARB_ES2_compatibility")) + { + ARB_ES2_compatibility = true; + extensions.Remove("glARB_ES2_compatibility"); + } + if (extensions.Contains("gl_ARB_ES3_1_compatibility")) + { + ARB_ES3_1_compatibility = true; + extensions.Remove("glARB_ES3_1_compatibility"); + } + if (extensions.Contains("gl_ARB_ES3_2_compatibility")) + { + ARB_ES3_2_compatibility = true; + extensions.Remove("glARB_ES3_2_compatibility"); + } + if (extensions.Contains("gl_ARB_ES3_compatibility")) + { + ARB_ES3_compatibility = true; + extensions.Remove("glARB_ES3_compatibility"); + } + if (extensions.Contains("gl_ARB_arrays_of_arrays")) + { + ARB_arrays_of_arrays = true; + extensions.Remove("glARB_arrays_of_arrays"); + } + if (extensions.Contains("gl_ARB_base_instance")) + { + ARB_base_instance = true; + extensions.Remove("glARB_base_instance"); + } + if (extensions.Contains("gl_ARB_bindless_texture")) + { + ARB_bindless_texture = true; + extensions.Remove("glARB_bindless_texture"); + } + if (extensions.Contains("gl_ARB_blend_func_extended")) + { + ARB_blend_func_extended = true; + extensions.Remove("glARB_blend_func_extended"); + } + if (extensions.Contains("gl_ARB_buffer_storage")) + { + ARB_buffer_storage = true; + extensions.Remove("glARB_buffer_storage"); + } + if (extensions.Contains("gl_ARB_cl_event")) + { + ARB_cl_event = true; + extensions.Remove("glARB_cl_event"); + } + if (extensions.Contains("gl_ARB_clear_buffer_object")) + { + ARB_clear_buffer_object = true; + extensions.Remove("glARB_clear_buffer_object"); + } + if (extensions.Contains("gl_ARB_clear_texture")) + { + ARB_clear_texture = true; + extensions.Remove("glARB_clear_texture"); + } + if (extensions.Contains("gl_ARB_clip_control")) + { + ARB_clip_control = true; + extensions.Remove("glARB_clip_control"); + } + if (extensions.Contains("gl_ARB_color_buffer_float")) + { + ARB_color_buffer_float = true; + extensions.Remove("glARB_color_buffer_float"); + } + if (extensions.Contains("gl_ARB_compatibility")) + { + ARB_compatibility = true; + extensions.Remove("glARB_compatibility"); + } + if (extensions.Contains("gl_ARB_compressed_texture_pixel_storage")) + { + ARB_compressed_texture_pixel_storage = true; + extensions.Remove("glARB_compressed_texture_pixel_storage"); + } + if (extensions.Contains("gl_ARB_compute_shader")) + { + ARB_compute_shader = true; + extensions.Remove("glARB_compute_shader"); + } + if (extensions.Contains("gl_ARB_compute_variable_group_size")) + { + ARB_compute_variable_group_size = true; + extensions.Remove("glARB_compute_variable_group_size"); + } + if (extensions.Contains("gl_ARB_conditional_render_inverted")) + { + ARB_conditional_render_inverted = true; + extensions.Remove("glARB_conditional_render_inverted"); + } + if (extensions.Contains("gl_ARB_conservative_depth")) + { + ARB_conservative_depth = true; + extensions.Remove("glARB_conservative_depth"); + } + if (extensions.Contains("gl_ARB_copy_buffer")) + { + ARB_copy_buffer = true; + extensions.Remove("glARB_copy_buffer"); + } + if (extensions.Contains("gl_ARB_copy_image")) + { + ARB_copy_image = true; + extensions.Remove("glARB_copy_image"); + } + if (extensions.Contains("gl_ARB_cull_distance")) + { + ARB_cull_distance = true; + extensions.Remove("glARB_cull_distance"); + } + if (extensions.Contains("gl_ARB_debug_output")) + { + ARB_debug_output = true; + extensions.Remove("glARB_debug_output"); + } + if (extensions.Contains("gl_ARB_depth_buffer_float")) + { + ARB_depth_buffer_float = true; + extensions.Remove("glARB_depth_buffer_float"); + } + if (extensions.Contains("gl_ARB_depth_clamp")) + { + ARB_depth_clamp = true; + extensions.Remove("glARB_depth_clamp"); + } + if (extensions.Contains("gl_ARB_depth_texture")) + { + ARB_depth_texture = true; + extensions.Remove("glARB_depth_texture"); + } + if (extensions.Contains("gl_ARB_derivative_control")) + { + ARB_derivative_control = true; + extensions.Remove("glARB_derivative_control"); + } + if (extensions.Contains("gl_ARB_direct_state_access")) + { + ARB_direct_state_access = true; + extensions.Remove("glARB_direct_state_access"); + } + if (extensions.Contains("gl_ARB_draw_buffers")) + { + ARB_draw_buffers = true; + extensions.Remove("glARB_draw_buffers"); + } + if (extensions.Contains("gl_ARB_draw_buffers_blend")) + { + ARB_draw_buffers_blend = true; + extensions.Remove("glARB_draw_buffers_blend"); + } + if (extensions.Contains("gl_ARB_draw_elements_base_vertex")) + { + ARB_draw_elements_base_vertex = true; + extensions.Remove("glARB_draw_elements_base_vertex"); + } + if (extensions.Contains("gl_ARB_draw_indirect")) + { + ARB_draw_indirect = true; + extensions.Remove("glARB_draw_indirect"); + } + if (extensions.Contains("gl_ARB_draw_instanced")) + { + ARB_draw_instanced = true; + extensions.Remove("glARB_draw_instanced"); + } + if (extensions.Contains("gl_ARB_enhanced_layouts")) + { + ARB_enhanced_layouts = true; + extensions.Remove("glARB_enhanced_layouts"); + } + if (extensions.Contains("gl_ARB_explicit_attrib_location")) + { + ARB_explicit_attrib_location = true; + extensions.Remove("glARB_explicit_attrib_location"); + } + if (extensions.Contains("gl_ARB_explicit_uniform_location")) + { + ARB_explicit_uniform_location = true; + extensions.Remove("glARB_explicit_uniform_location"); + } + if (extensions.Contains("gl_ARB_fragment_coord_conventions")) + { + ARB_fragment_coord_conventions = true; + extensions.Remove("glARB_fragment_coord_conventions"); + } + if (extensions.Contains("gl_ARB_fragment_layer_viewport")) + { + ARB_fragment_layer_viewport = true; + extensions.Remove("glARB_fragment_layer_viewport"); + } + if (extensions.Contains("gl_ARB_fragment_program")) + { + ARB_fragment_program = true; + extensions.Remove("glARB_fragment_program"); + } + if (extensions.Contains("gl_ARB_fragment_program_shadow")) + { + ARB_fragment_program_shadow = true; + extensions.Remove("glARB_fragment_program_shadow"); + } + if (extensions.Contains("gl_ARB_fragment_shader")) + { + ARB_fragment_shader = true; + extensions.Remove("glARB_fragment_shader"); + } + if (extensions.Contains("gl_ARB_fragment_shader_interlock")) + { + ARB_fragment_shader_interlock = true; + extensions.Remove("glARB_fragment_shader_interlock"); + } + if (extensions.Contains("gl_ARB_framebuffer_no_attachments")) + { + ARB_framebuffer_no_attachments = true; + extensions.Remove("glARB_framebuffer_no_attachments"); + } + if (extensions.Contains("gl_ARB_framebuffer_object")) + { + ARB_framebuffer_object = true; + extensions.Remove("glARB_framebuffer_object"); + } + if (extensions.Contains("gl_ARB_framebuffer_sRGB")) + { + ARB_framebuffer_sRGB = true; + extensions.Remove("glARB_framebuffer_sRGB"); + } + if (extensions.Contains("gl_ARB_geometry_shader4")) + { + ARB_geometry_shader4 = true; + extensions.Remove("glARB_geometry_shader4"); + } + if (extensions.Contains("gl_ARB_get_program_binary")) + { + ARB_get_program_binary = true; + extensions.Remove("glARB_get_program_binary"); + } + if (extensions.Contains("gl_ARB_get_texture_sub_image")) + { + ARB_get_texture_sub_image = true; + extensions.Remove("glARB_get_texture_sub_image"); + } + if (extensions.Contains("gl_ARB_gl_spirv")) + { + ARB_gl_spirv = true; + extensions.Remove("glARB_gl_spirv"); + } + if (extensions.Contains("gl_ARB_gpu_shader5")) + { + ARB_gpu_shader5 = true; + extensions.Remove("glARB_gpu_shader5"); + } + if (extensions.Contains("gl_ARB_gpu_shader_fp64")) + { + ARB_gpu_shader_fp64 = true; + extensions.Remove("glARB_gpu_shader_fp64"); + } + if (extensions.Contains("gl_ARB_gpu_shader_int64")) + { + ARB_gpu_shader_int64 = true; + extensions.Remove("glARB_gpu_shader_int64"); + } + if (extensions.Contains("gl_ARB_half_float_pixel")) + { + ARB_half_float_pixel = true; + extensions.Remove("glARB_half_float_pixel"); + } + if (extensions.Contains("gl_ARB_half_float_vertex")) + { + ARB_half_float_vertex = true; + extensions.Remove("glARB_half_float_vertex"); + } + if (extensions.Contains("gl_ARB_imaging")) + { + ARB_imaging = true; + extensions.Remove("glARB_imaging"); + } + if (extensions.Contains("gl_ARB_indirect_parameters")) + { + ARB_indirect_parameters = true; + extensions.Remove("glARB_indirect_parameters"); + } + if (extensions.Contains("gl_ARB_instanced_arrays")) + { + ARB_instanced_arrays = true; + extensions.Remove("glARB_instanced_arrays"); + } + if (extensions.Contains("gl_ARB_internalformat_query")) + { + ARB_internalformat_query = true; + extensions.Remove("glARB_internalformat_query"); + } + if (extensions.Contains("gl_ARB_internalformat_query2")) + { + ARB_internalformat_query2 = true; + extensions.Remove("glARB_internalformat_query2"); + } + if (extensions.Contains("gl_ARB_invalidate_subdata")) + { + ARB_invalidate_subdata = true; + extensions.Remove("glARB_invalidate_subdata"); + } + if (extensions.Contains("gl_ARB_map_buffer_alignment")) + { + ARB_map_buffer_alignment = true; + extensions.Remove("glARB_map_buffer_alignment"); + } + if (extensions.Contains("gl_ARB_map_buffer_range")) + { + ARB_map_buffer_range = true; + extensions.Remove("glARB_map_buffer_range"); + } + if (extensions.Contains("gl_ARB_matrix_palette")) + { + ARB_matrix_palette = true; + extensions.Remove("glARB_matrix_palette"); + } + if (extensions.Contains("gl_ARB_multi_bind")) + { + ARB_multi_bind = true; + extensions.Remove("glARB_multi_bind"); + } + if (extensions.Contains("gl_ARB_multi_draw_indirect")) + { + ARB_multi_draw_indirect = true; + extensions.Remove("glARB_multi_draw_indirect"); + } + if (extensions.Contains("gl_ARB_multisample")) + { + ARB_multisample = true; + extensions.Remove("glARB_multisample"); + } + if (extensions.Contains("gl_ARB_multitexture")) + { + ARB_multitexture = true; + extensions.Remove("glARB_multitexture"); + } + if (extensions.Contains("gl_ARB_occlusion_query")) + { + ARB_occlusion_query = true; + extensions.Remove("glARB_occlusion_query"); + } + if (extensions.Contains("gl_ARB_occlusion_query2")) + { + ARB_occlusion_query2 = true; + extensions.Remove("glARB_occlusion_query2"); + } + if (extensions.Contains("gl_ARB_parallel_shader_compile")) + { + ARB_parallel_shader_compile = true; + extensions.Remove("glARB_parallel_shader_compile"); + } + if (extensions.Contains("gl_ARB_pipeline_statistics_query")) + { + ARB_pipeline_statistics_query = true; + extensions.Remove("glARB_pipeline_statistics_query"); + } + if (extensions.Contains("gl_ARB_pixel_buffer_object")) + { + ARB_pixel_buffer_object = true; + extensions.Remove("glARB_pixel_buffer_object"); + } + if (extensions.Contains("gl_ARB_point_parameters")) + { + ARB_point_parameters = true; + extensions.Remove("glARB_point_parameters"); + } + if (extensions.Contains("gl_ARB_point_sprite")) + { + ARB_point_sprite = true; + extensions.Remove("glARB_point_sprite"); + } + if (extensions.Contains("gl_ARB_polygon_offset_clamp")) + { + ARB_polygon_offset_clamp = true; + extensions.Remove("glARB_polygon_offset_clamp"); + } + if (extensions.Contains("gl_ARB_post_depth_coverage")) + { + ARB_post_depth_coverage = true; + extensions.Remove("glARB_post_depth_coverage"); + } + if (extensions.Contains("gl_ARB_program_interface_query")) + { + ARB_program_interface_query = true; + extensions.Remove("glARB_program_interface_query"); + } + if (extensions.Contains("gl_ARB_provoking_vertex")) + { + ARB_provoking_vertex = true; + extensions.Remove("glARB_provoking_vertex"); + } + if (extensions.Contains("gl_ARB_query_buffer_object")) + { + ARB_query_buffer_object = true; + extensions.Remove("glARB_query_buffer_object"); + } + if (extensions.Contains("gl_ARB_robust_buffer_access_behavior")) + { + ARB_robust_buffer_access_behavior = true; + extensions.Remove("glARB_robust_buffer_access_behavior"); + } + if (extensions.Contains("gl_ARB_robustness")) + { + ARB_robustness = true; + extensions.Remove("glARB_robustness"); + } + if (extensions.Contains("gl_ARB_robustness_isolation")) + { + ARB_robustness_isolation = true; + extensions.Remove("glARB_robustness_isolation"); + } + if (extensions.Contains("gl_ARB_sample_locations")) + { + ARB_sample_locations = true; + extensions.Remove("glARB_sample_locations"); + } + if (extensions.Contains("gl_ARB_sample_shading")) + { + ARB_sample_shading = true; + extensions.Remove("glARB_sample_shading"); + } + if (extensions.Contains("gl_ARB_sampler_objects")) + { + ARB_sampler_objects = true; + extensions.Remove("glARB_sampler_objects"); + } + if (extensions.Contains("gl_ARB_seamless_cube_map")) + { + ARB_seamless_cube_map = true; + extensions.Remove("glARB_seamless_cube_map"); + } + if (extensions.Contains("gl_ARB_seamless_cubemap_per_texture")) + { + ARB_seamless_cubemap_per_texture = true; + extensions.Remove("glARB_seamless_cubemap_per_texture"); + } + if (extensions.Contains("gl_ARB_separate_shader_objects")) + { + ARB_separate_shader_objects = true; + extensions.Remove("glARB_separate_shader_objects"); + } + if (extensions.Contains("gl_ARB_shader_atomic_counter_ops")) + { + ARB_shader_atomic_counter_ops = true; + extensions.Remove("glARB_shader_atomic_counter_ops"); + } + if (extensions.Contains("gl_ARB_shader_atomic_counters")) + { + ARB_shader_atomic_counters = true; + extensions.Remove("glARB_shader_atomic_counters"); + } + if (extensions.Contains("gl_ARB_shader_ballot")) + { + ARB_shader_ballot = true; + extensions.Remove("glARB_shader_ballot"); + } + if (extensions.Contains("gl_ARB_shader_bit_encoding")) + { + ARB_shader_bit_encoding = true; + extensions.Remove("glARB_shader_bit_encoding"); + } + if (extensions.Contains("gl_ARB_shader_clock")) + { + ARB_shader_clock = true; + extensions.Remove("glARB_shader_clock"); + } + if (extensions.Contains("gl_ARB_shader_draw_parameters")) + { + ARB_shader_draw_parameters = true; + extensions.Remove("glARB_shader_draw_parameters"); + } + if (extensions.Contains("gl_ARB_shader_group_vote")) + { + ARB_shader_group_vote = true; + extensions.Remove("glARB_shader_group_vote"); + } + if (extensions.Contains("gl_ARB_shader_image_load_store")) + { + ARB_shader_image_load_store = true; + extensions.Remove("glARB_shader_image_load_store"); + } + if (extensions.Contains("gl_ARB_shader_image_size")) + { + ARB_shader_image_size = true; + extensions.Remove("glARB_shader_image_size"); + } + if (extensions.Contains("gl_ARB_shader_objects")) + { + ARB_shader_objects = true; + extensions.Remove("glARB_shader_objects"); + } + if (extensions.Contains("gl_ARB_shader_precision")) + { + ARB_shader_precision = true; + extensions.Remove("glARB_shader_precision"); + } + if (extensions.Contains("gl_ARB_shader_stencil_export")) + { + ARB_shader_stencil_export = true; + extensions.Remove("glARB_shader_stencil_export"); + } + if (extensions.Contains("gl_ARB_shader_storage_buffer_object")) + { + ARB_shader_storage_buffer_object = true; + extensions.Remove("glARB_shader_storage_buffer_object"); + } + if (extensions.Contains("gl_ARB_shader_subroutine")) + { + ARB_shader_subroutine = true; + extensions.Remove("glARB_shader_subroutine"); + } + if (extensions.Contains("gl_ARB_shader_texture_image_samples")) + { + ARB_shader_texture_image_samples = true; + extensions.Remove("glARB_shader_texture_image_samples"); + } + if (extensions.Contains("gl_ARB_shader_texture_lod")) + { + ARB_shader_texture_lod = true; + extensions.Remove("glARB_shader_texture_lod"); + } + if (extensions.Contains("gl_ARB_shader_viewport_layer_array")) + { + ARB_shader_viewport_layer_array = true; + extensions.Remove("glARB_shader_viewport_layer_array"); + } + if (extensions.Contains("gl_ARB_shading_language_100")) + { + ARB_shading_language_100 = true; + extensions.Remove("glARB_shading_language_100"); + } + if (extensions.Contains("gl_ARB_shading_language_420pack")) + { + ARB_shading_language_420pack = true; + extensions.Remove("glARB_shading_language_420pack"); + } + if (extensions.Contains("gl_ARB_shading_language_include")) + { + ARB_shading_language_include = true; + extensions.Remove("glARB_shading_language_include"); + } + if (extensions.Contains("gl_ARB_shading_language_packing")) + { + ARB_shading_language_packing = true; + extensions.Remove("glARB_shading_language_packing"); + } + if (extensions.Contains("gl_ARB_shadow")) + { + ARB_shadow = true; + extensions.Remove("glARB_shadow"); + } + if (extensions.Contains("gl_ARB_shadow_ambient")) + { + ARB_shadow_ambient = true; + extensions.Remove("glARB_shadow_ambient"); + } + if (extensions.Contains("gl_ARB_sparse_buffer")) + { + ARB_sparse_buffer = true; + extensions.Remove("glARB_sparse_buffer"); + } + if (extensions.Contains("gl_ARB_sparse_texture")) + { + ARB_sparse_texture = true; + extensions.Remove("glARB_sparse_texture"); + } + if (extensions.Contains("gl_ARB_sparse_texture2")) + { + ARB_sparse_texture2 = true; + extensions.Remove("glARB_sparse_texture2"); + } + if (extensions.Contains("gl_ARB_sparse_texture_clamp")) + { + ARB_sparse_texture_clamp = true; + extensions.Remove("glARB_sparse_texture_clamp"); + } + if (extensions.Contains("gl_ARB_spirv_extensions")) + { + ARB_spirv_extensions = true; + extensions.Remove("glARB_spirv_extensions"); + } + if (extensions.Contains("gl_ARB_stencil_texturing")) + { + ARB_stencil_texturing = true; + extensions.Remove("glARB_stencil_texturing"); + } + if (extensions.Contains("gl_ARB_sync")) + { + ARB_sync = true; + extensions.Remove("glARB_sync"); + } + if (extensions.Contains("gl_ARB_tessellation_shader")) + { + ARB_tessellation_shader = true; + extensions.Remove("glARB_tessellation_shader"); + } + if (extensions.Contains("gl_ARB_texture_barrier")) + { + ARB_texture_barrier = true; + extensions.Remove("glARB_texture_barrier"); + } + if (extensions.Contains("gl_ARB_texture_border_clamp")) + { + ARB_texture_border_clamp = true; + extensions.Remove("glARB_texture_border_clamp"); + } + if (extensions.Contains("gl_ARB_texture_buffer_object")) + { + ARB_texture_buffer_object = true; + extensions.Remove("glARB_texture_buffer_object"); + } + if (extensions.Contains("gl_ARB_texture_buffer_object_rgb32")) + { + ARB_texture_buffer_object_rgb32 = true; + extensions.Remove("glARB_texture_buffer_object_rgb32"); + } + if (extensions.Contains("gl_ARB_texture_buffer_range")) + { + ARB_texture_buffer_range = true; + extensions.Remove("glARB_texture_buffer_range"); + } + if (extensions.Contains("gl_ARB_texture_compression")) + { + ARB_texture_compression = true; + extensions.Remove("glARB_texture_compression"); + } + if (extensions.Contains("gl_ARB_texture_compression_bptc")) + { + ARB_texture_compression_bptc = true; + extensions.Remove("glARB_texture_compression_bptc"); + } + if (extensions.Contains("gl_ARB_texture_compression_rgtc")) + { + ARB_texture_compression_rgtc = true; + extensions.Remove("glARB_texture_compression_rgtc"); + } + if (extensions.Contains("gl_ARB_texture_cube_map")) + { + ARB_texture_cube_map = true; + extensions.Remove("glARB_texture_cube_map"); + } + if (extensions.Contains("gl_ARB_texture_cube_map_array")) + { + ARB_texture_cube_map_array = true; + extensions.Remove("glARB_texture_cube_map_array"); + } + if (extensions.Contains("gl_ARB_texture_env_add")) + { + ARB_texture_env_add = true; + extensions.Remove("glARB_texture_env_add"); + } + if (extensions.Contains("gl_ARB_texture_env_combine")) + { + ARB_texture_env_combine = true; + extensions.Remove("glARB_texture_env_combine"); + } + if (extensions.Contains("gl_ARB_texture_env_crossbar")) + { + ARB_texture_env_crossbar = true; + extensions.Remove("glARB_texture_env_crossbar"); + } + if (extensions.Contains("gl_ARB_texture_env_dot3")) + { + ARB_texture_env_dot3 = true; + extensions.Remove("glARB_texture_env_dot3"); + } + if (extensions.Contains("gl_ARB_texture_filter_anisotropic")) + { + ARB_texture_filter_anisotropic = true; + extensions.Remove("glARB_texture_filter_anisotropic"); + } + if (extensions.Contains("gl_ARB_texture_filter_minmax")) + { + ARB_texture_filter_minmax = true; + extensions.Remove("glARB_texture_filter_minmax"); + } + if (extensions.Contains("gl_ARB_texture_float")) + { + ARB_texture_float = true; + extensions.Remove("glARB_texture_float"); + } + if (extensions.Contains("gl_ARB_texture_gather")) + { + ARB_texture_gather = true; + extensions.Remove("glARB_texture_gather"); + } + if (extensions.Contains("gl_ARB_texture_mirror_clamp_to_edge")) + { + ARB_texture_mirror_clamp_to_edge = true; + extensions.Remove("glARB_texture_mirror_clamp_to_edge"); + } + if (extensions.Contains("gl_ARB_texture_mirrored_repeat")) + { + ARB_texture_mirrored_repeat = true; + extensions.Remove("glARB_texture_mirrored_repeat"); + } + if (extensions.Contains("gl_ARB_texture_multisample")) + { + ARB_texture_multisample = true; + extensions.Remove("glARB_texture_multisample"); + } + if (extensions.Contains("gl_ARB_texture_non_power_of_two")) + { + ARB_texture_non_power_of_two = true; + extensions.Remove("glARB_texture_non_power_of_two"); + } + if (extensions.Contains("gl_ARB_texture_query_levels")) + { + ARB_texture_query_levels = true; + extensions.Remove("glARB_texture_query_levels"); + } + if (extensions.Contains("gl_ARB_texture_query_lod")) + { + ARB_texture_query_lod = true; + extensions.Remove("glARB_texture_query_lod"); + } + if (extensions.Contains("gl_ARB_texture_rectangle")) + { + ARB_texture_rectangle = true; + extensions.Remove("glARB_texture_rectangle"); + } + if (extensions.Contains("gl_ARB_texture_rg")) + { + ARB_texture_rg = true; + extensions.Remove("glARB_texture_rg"); + } + if (extensions.Contains("gl_ARB_texture_rgb10_a2ui")) + { + ARB_texture_rgb10_a2ui = true; + extensions.Remove("glARB_texture_rgb10_a2ui"); + } + if (extensions.Contains("gl_ARB_texture_stencil8")) + { + ARB_texture_stencil8 = true; + extensions.Remove("glARB_texture_stencil8"); + } + if (extensions.Contains("gl_ARB_texture_storage")) + { + ARB_texture_storage = true; + extensions.Remove("glARB_texture_storage"); + } + if (extensions.Contains("gl_ARB_texture_storage_multisample")) + { + ARB_texture_storage_multisample = true; + extensions.Remove("glARB_texture_storage_multisample"); + } + if (extensions.Contains("gl_ARB_texture_swizzle")) + { + ARB_texture_swizzle = true; + extensions.Remove("glARB_texture_swizzle"); + } + if (extensions.Contains("gl_ARB_texture_view")) + { + ARB_texture_view = true; + extensions.Remove("glARB_texture_view"); + } + if (extensions.Contains("gl_ARB_timer_query")) + { + ARB_timer_query = true; + extensions.Remove("glARB_timer_query"); + } + if (extensions.Contains("gl_ARB_transform_feedback2")) + { + ARB_transform_feedback2 = true; + extensions.Remove("glARB_transform_feedback2"); + } + if (extensions.Contains("gl_ARB_transform_feedback3")) + { + ARB_transform_feedback3 = true; + extensions.Remove("glARB_transform_feedback3"); + } + if (extensions.Contains("gl_ARB_transform_feedback_instanced")) + { + ARB_transform_feedback_instanced = true; + extensions.Remove("glARB_transform_feedback_instanced"); + } + if (extensions.Contains("gl_ARB_transform_feedback_overflow_query")) + { + ARB_transform_feedback_overflow_query = true; + extensions.Remove("glARB_transform_feedback_overflow_query"); + } + if (extensions.Contains("gl_ARB_transpose_matrix")) + { + ARB_transpose_matrix = true; + extensions.Remove("glARB_transpose_matrix"); + } + if (extensions.Contains("gl_ARB_uniform_buffer_object")) + { + ARB_uniform_buffer_object = true; + extensions.Remove("glARB_uniform_buffer_object"); + } + if (extensions.Contains("gl_ARB_vertex_array_bgra")) + { + ARB_vertex_array_bgra = true; + extensions.Remove("glARB_vertex_array_bgra"); + } + if (extensions.Contains("gl_ARB_vertex_array_object")) + { + ARB_vertex_array_object = true; + extensions.Remove("glARB_vertex_array_object"); + } + if (extensions.Contains("gl_ARB_vertex_attrib_64bit")) + { + ARB_vertex_attrib_64bit = true; + extensions.Remove("glARB_vertex_attrib_64bit"); + } + if (extensions.Contains("gl_ARB_vertex_attrib_binding")) + { + ARB_vertex_attrib_binding = true; + extensions.Remove("glARB_vertex_attrib_binding"); + } + if (extensions.Contains("gl_ARB_vertex_blend")) + { + ARB_vertex_blend = true; + extensions.Remove("glARB_vertex_blend"); + } + if (extensions.Contains("gl_ARB_vertex_buffer_object")) + { + ARB_vertex_buffer_object = true; + extensions.Remove("glARB_vertex_buffer_object"); + } + if (extensions.Contains("gl_ARB_vertex_program")) + { + ARB_vertex_program = true; + extensions.Remove("glARB_vertex_program"); + } + if (extensions.Contains("gl_ARB_vertex_shader")) + { + ARB_vertex_shader = true; + extensions.Remove("glARB_vertex_shader"); + } + if (extensions.Contains("gl_ARB_vertex_type_10f_11f_11f_rev")) + { + ARB_vertex_type_10f_11f_11f_rev = true; + extensions.Remove("glARB_vertex_type_10f_11f_11f_rev"); + } + if (extensions.Contains("gl_ARB_vertex_type_2_10_10_10_rev")) + { + ARB_vertex_type_2_10_10_10_rev = true; + extensions.Remove("glARB_vertex_type_2_10_10_10_rev"); + } + if (extensions.Contains("gl_ARB_viewport_array")) + { + ARB_viewport_array = true; + extensions.Remove("glARB_viewport_array"); + } + if (extensions.Contains("gl_ARB_window_pos")) + { + ARB_window_pos = true; + extensions.Remove("glARB_window_pos"); + } + if (extensions.Contains("gl_ATI_draw_buffers")) + { + ATI_draw_buffers = true; + extensions.Remove("glATI_draw_buffers"); + } + if (extensions.Contains("gl_ATI_element_array")) + { + ATI_element_array = true; + extensions.Remove("glATI_element_array"); + } + if (extensions.Contains("gl_ATI_envmap_bumpmap")) + { + ATI_envmap_bumpmap = true; + extensions.Remove("glATI_envmap_bumpmap"); + } + if (extensions.Contains("gl_ATI_fragment_shader")) + { + ATI_fragment_shader = true; + extensions.Remove("glATI_fragment_shader"); + } + if (extensions.Contains("gl_ATI_map_object_buffer")) + { + ATI_map_object_buffer = true; + extensions.Remove("glATI_map_object_buffer"); + } + if (extensions.Contains("gl_ATI_meminfo")) + { + ATI_meminfo = true; + extensions.Remove("glATI_meminfo"); + } + if (extensions.Contains("gl_ATI_pixel_format_float")) + { + ATI_pixel_format_float = true; + extensions.Remove("glATI_pixel_format_float"); + } + if (extensions.Contains("gl_ATI_pn_triangles")) + { + ATI_pn_triangles = true; + extensions.Remove("glATI_pn_triangles"); + } + if (extensions.Contains("gl_ATI_separate_stencil")) + { + ATI_separate_stencil = true; + extensions.Remove("glATI_separate_stencil"); + } + if (extensions.Contains("gl_ATI_text_fragment_shader")) + { + ATI_text_fragment_shader = true; + extensions.Remove("glATI_text_fragment_shader"); + } + if (extensions.Contains("gl_ATI_texture_env_combine3")) + { + ATI_texture_env_combine3 = true; + extensions.Remove("glATI_texture_env_combine3"); + } + if (extensions.Contains("gl_ATI_texture_float")) + { + ATI_texture_float = true; + extensions.Remove("glATI_texture_float"); + } + if (extensions.Contains("gl_ATI_texture_mirror_once")) + { + ATI_texture_mirror_once = true; + extensions.Remove("glATI_texture_mirror_once"); + } + if (extensions.Contains("gl_ATI_vertex_array_object")) + { + ATI_vertex_array_object = true; + extensions.Remove("glATI_vertex_array_object"); + } + if (extensions.Contains("gl_ATI_vertex_attrib_array_object")) + { + ATI_vertex_attrib_array_object = true; + extensions.Remove("glATI_vertex_attrib_array_object"); + } + if (extensions.Contains("gl_ATI_vertex_streams")) + { + ATI_vertex_streams = true; + extensions.Remove("glATI_vertex_streams"); + } + if (extensions.Contains("gl_EXT_422_pixels")) + { + EXT_422_pixels = true; + extensions.Remove("glEXT_422_pixels"); + } + if (extensions.Contains("gl_EXT_EGL_image_storage")) + { + EXT_EGL_image_storage = true; + extensions.Remove("glEXT_EGL_image_storage"); + } + if (extensions.Contains("gl_EXT_EGL_sync")) + { + EXT_EGL_sync = true; + extensions.Remove("glEXT_EGL_sync"); + } + if (extensions.Contains("gl_EXT_abgr")) + { + EXT_abgr = true; + extensions.Remove("glEXT_abgr"); + } + if (extensions.Contains("gl_EXT_bgra")) + { + EXT_bgra = true; + extensions.Remove("glEXT_bgra"); + } + if (extensions.Contains("gl_EXT_bindable_uniform")) + { + EXT_bindable_uniform = true; + extensions.Remove("glEXT_bindable_uniform"); + } + if (extensions.Contains("gl_EXT_blend_color")) + { + EXT_blend_color = true; + extensions.Remove("glEXT_blend_color"); + } + if (extensions.Contains("gl_EXT_blend_equation_separate")) + { + EXT_blend_equation_separate = true; + extensions.Remove("glEXT_blend_equation_separate"); + } + if (extensions.Contains("gl_EXT_blend_func_separate")) + { + EXT_blend_func_separate = true; + extensions.Remove("glEXT_blend_func_separate"); + } + if (extensions.Contains("gl_EXT_blend_logic_op")) + { + EXT_blend_logic_op = true; + extensions.Remove("glEXT_blend_logic_op"); + } + if (extensions.Contains("gl_EXT_blend_minmax")) + { + EXT_blend_minmax = true; + extensions.Remove("glEXT_blend_minmax"); + } + if (extensions.Contains("gl_EXT_blend_subtract")) + { + EXT_blend_subtract = true; + extensions.Remove("glEXT_blend_subtract"); + } + if (extensions.Contains("gl_EXT_clip_volume_hint")) + { + EXT_clip_volume_hint = true; + extensions.Remove("glEXT_clip_volume_hint"); + } + if (extensions.Contains("gl_EXT_cmyka")) + { + EXT_cmyka = true; + extensions.Remove("glEXT_cmyka"); + } + if (extensions.Contains("gl_EXT_color_subtable")) + { + EXT_color_subtable = true; + extensions.Remove("glEXT_color_subtable"); + } + if (extensions.Contains("gl_EXT_compiled_vertex_array")) + { + EXT_compiled_vertex_array = true; + extensions.Remove("glEXT_compiled_vertex_array"); + } + if (extensions.Contains("gl_EXT_convolution")) + { + EXT_convolution = true; + extensions.Remove("glEXT_convolution"); + } + if (extensions.Contains("gl_EXT_coordinate_frame")) + { + EXT_coordinate_frame = true; + extensions.Remove("glEXT_coordinate_frame"); + } + if (extensions.Contains("gl_EXT_copy_texture")) + { + EXT_copy_texture = true; + extensions.Remove("glEXT_copy_texture"); + } + if (extensions.Contains("gl_EXT_cull_vertex")) + { + EXT_cull_vertex = true; + extensions.Remove("glEXT_cull_vertex"); + } + if (extensions.Contains("gl_EXT_debug_label")) + { + EXT_debug_label = true; + extensions.Remove("glEXT_debug_label"); + } + if (extensions.Contains("gl_EXT_debug_marker")) + { + EXT_debug_marker = true; + extensions.Remove("glEXT_debug_marker"); + } + if (extensions.Contains("gl_EXT_depth_bounds_test")) + { + EXT_depth_bounds_test = true; + extensions.Remove("glEXT_depth_bounds_test"); + } + if (extensions.Contains("gl_EXT_direct_state_access")) + { + EXT_direct_state_access = true; + extensions.Remove("glEXT_direct_state_access"); + } + if (extensions.Contains("gl_EXT_draw_buffers2")) + { + EXT_draw_buffers2 = true; + extensions.Remove("glEXT_draw_buffers2"); + } + if (extensions.Contains("gl_EXT_draw_instanced")) + { + EXT_draw_instanced = true; + extensions.Remove("glEXT_draw_instanced"); + } + if (extensions.Contains("gl_EXT_draw_range_elements")) + { + EXT_draw_range_elements = true; + extensions.Remove("glEXT_draw_range_elements"); + } + if (extensions.Contains("gl_EXT_external_buffer")) + { + EXT_external_buffer = true; + extensions.Remove("glEXT_external_buffer"); + } + if (extensions.Contains("gl_EXT_fog_coord")) + { + EXT_fog_coord = true; + extensions.Remove("glEXT_fog_coord"); + } + if (extensions.Contains("gl_EXT_framebuffer_blit")) + { + EXT_framebuffer_blit = true; + extensions.Remove("glEXT_framebuffer_blit"); + } + if (extensions.Contains("gl_EXT_framebuffer_blit_layers")) + { + EXT_framebuffer_blit_layers = true; + extensions.Remove("glEXT_framebuffer_blit_layers"); + } + if (extensions.Contains("gl_EXT_framebuffer_multisample")) + { + EXT_framebuffer_multisample = true; + extensions.Remove("glEXT_framebuffer_multisample"); + } + if (extensions.Contains("gl_EXT_framebuffer_multisample_blit_scaled")) + { + EXT_framebuffer_multisample_blit_scaled = true; + extensions.Remove("glEXT_framebuffer_multisample_blit_scaled"); + } + if (extensions.Contains("gl_EXT_framebuffer_object")) + { + EXT_framebuffer_object = true; + extensions.Remove("glEXT_framebuffer_object"); + } + if (extensions.Contains("gl_EXT_framebuffer_sRGB")) + { + EXT_framebuffer_sRGB = true; + extensions.Remove("glEXT_framebuffer_sRGB"); + } + if (extensions.Contains("gl_EXT_geometry_shader4")) + { + EXT_geometry_shader4 = true; + extensions.Remove("glEXT_geometry_shader4"); + } + if (extensions.Contains("gl_EXT_gpu_program_parameters")) + { + EXT_gpu_program_parameters = true; + extensions.Remove("glEXT_gpu_program_parameters"); + } + if (extensions.Contains("gl_EXT_gpu_shader4")) + { + EXT_gpu_shader4 = true; + extensions.Remove("glEXT_gpu_shader4"); + } + if (extensions.Contains("gl_EXT_histogram")) + { + EXT_histogram = true; + extensions.Remove("glEXT_histogram"); + } + if (extensions.Contains("gl_EXT_index_array_formats")) + { + EXT_index_array_formats = true; + extensions.Remove("glEXT_index_array_formats"); + } + if (extensions.Contains("gl_EXT_index_func")) + { + EXT_index_func = true; + extensions.Remove("glEXT_index_func"); + } + if (extensions.Contains("gl_EXT_index_material")) + { + EXT_index_material = true; + extensions.Remove("glEXT_index_material"); + } + if (extensions.Contains("gl_EXT_index_texture")) + { + EXT_index_texture = true; + extensions.Remove("glEXT_index_texture"); + } + if (extensions.Contains("gl_EXT_light_texture")) + { + EXT_light_texture = true; + extensions.Remove("glEXT_light_texture"); + } + if (extensions.Contains("gl_EXT_memory_object")) + { + EXT_memory_object = true; + extensions.Remove("glEXT_memory_object"); + } + if (extensions.Contains("gl_EXT_memory_object_fd")) + { + EXT_memory_object_fd = true; + extensions.Remove("glEXT_memory_object_fd"); + } + if (extensions.Contains("gl_EXT_memory_object_win32")) + { + EXT_memory_object_win32 = true; + extensions.Remove("glEXT_memory_object_win32"); + } + if (extensions.Contains("gl_EXT_misc_attribute")) + { + EXT_misc_attribute = true; + extensions.Remove("glEXT_misc_attribute"); + } + if (extensions.Contains("gl_EXT_multi_draw_arrays")) + { + EXT_multi_draw_arrays = true; + extensions.Remove("glEXT_multi_draw_arrays"); + } + if (extensions.Contains("gl_EXT_multisample")) + { + EXT_multisample = true; + extensions.Remove("glEXT_multisample"); + } + if (extensions.Contains("gl_EXT_multiview_tessellation_geometry_shader")) + { + EXT_multiview_tessellation_geometry_shader = true; + extensions.Remove("glEXT_multiview_tessellation_geometry_shader"); + } + if (extensions.Contains("gl_EXT_multiview_texture_multisample")) + { + EXT_multiview_texture_multisample = true; + extensions.Remove("glEXT_multiview_texture_multisample"); + } + if (extensions.Contains("gl_EXT_multiview_timer_query")) + { + EXT_multiview_timer_query = true; + extensions.Remove("glEXT_multiview_timer_query"); + } + if (extensions.Contains("gl_EXT_packed_depth_stencil")) + { + EXT_packed_depth_stencil = true; + extensions.Remove("glEXT_packed_depth_stencil"); + } + if (extensions.Contains("gl_EXT_packed_float")) + { + EXT_packed_float = true; + extensions.Remove("glEXT_packed_float"); + } + if (extensions.Contains("gl_EXT_packed_pixels")) + { + EXT_packed_pixels = true; + extensions.Remove("glEXT_packed_pixels"); + } + if (extensions.Contains("gl_EXT_paletted_texture")) + { + EXT_paletted_texture = true; + extensions.Remove("glEXT_paletted_texture"); + } + if (extensions.Contains("gl_EXT_pixel_buffer_object")) + { + EXT_pixel_buffer_object = true; + extensions.Remove("glEXT_pixel_buffer_object"); + } + if (extensions.Contains("gl_EXT_pixel_transform")) + { + EXT_pixel_transform = true; + extensions.Remove("glEXT_pixel_transform"); + } + if (extensions.Contains("gl_EXT_pixel_transform_color_table")) + { + EXT_pixel_transform_color_table = true; + extensions.Remove("glEXT_pixel_transform_color_table"); + } + if (extensions.Contains("gl_EXT_point_parameters")) + { + EXT_point_parameters = true; + extensions.Remove("glEXT_point_parameters"); + } + if (extensions.Contains("gl_EXT_polygon_offset")) + { + EXT_polygon_offset = true; + extensions.Remove("glEXT_polygon_offset"); + } + if (extensions.Contains("gl_EXT_polygon_offset_clamp")) + { + EXT_polygon_offset_clamp = true; + extensions.Remove("glEXT_polygon_offset_clamp"); + } + if (extensions.Contains("gl_EXT_post_depth_coverage")) + { + EXT_post_depth_coverage = true; + extensions.Remove("glEXT_post_depth_coverage"); + } + if (extensions.Contains("gl_EXT_provoking_vertex")) + { + EXT_provoking_vertex = true; + extensions.Remove("glEXT_provoking_vertex"); + } + if (extensions.Contains("gl_EXT_raster_multisample")) + { + EXT_raster_multisample = true; + extensions.Remove("glEXT_raster_multisample"); + } + if (extensions.Contains("gl_EXT_rescale_normal")) + { + EXT_rescale_normal = true; + extensions.Remove("glEXT_rescale_normal"); + } + if (extensions.Contains("gl_EXT_secondary_color")) + { + EXT_secondary_color = true; + extensions.Remove("glEXT_secondary_color"); + } + if (extensions.Contains("gl_EXT_semaphore")) + { + EXT_semaphore = true; + extensions.Remove("glEXT_semaphore"); + } + if (extensions.Contains("gl_EXT_semaphore_fd")) + { + EXT_semaphore_fd = true; + extensions.Remove("glEXT_semaphore_fd"); + } + if (extensions.Contains("gl_EXT_semaphore_win32")) + { + EXT_semaphore_win32 = true; + extensions.Remove("glEXT_semaphore_win32"); + } + if (extensions.Contains("gl_EXT_separate_shader_objects")) + { + EXT_separate_shader_objects = true; + extensions.Remove("glEXT_separate_shader_objects"); + } + if (extensions.Contains("gl_EXT_separate_specular_color")) + { + EXT_separate_specular_color = true; + extensions.Remove("glEXT_separate_specular_color"); + } + if (extensions.Contains("gl_EXT_shader_framebuffer_fetch")) + { + EXT_shader_framebuffer_fetch = true; + extensions.Remove("glEXT_shader_framebuffer_fetch"); + } + if (extensions.Contains("gl_EXT_shader_framebuffer_fetch_non_coherent")) + { + EXT_shader_framebuffer_fetch_non_coherent = true; + extensions.Remove("glEXT_shader_framebuffer_fetch_non_coherent"); + } + if (extensions.Contains("gl_EXT_shader_image_load_formatted")) + { + EXT_shader_image_load_formatted = true; + extensions.Remove("glEXT_shader_image_load_formatted"); + } + if (extensions.Contains("gl_EXT_shader_image_load_store")) + { + EXT_shader_image_load_store = true; + extensions.Remove("glEXT_shader_image_load_store"); + } + if (extensions.Contains("gl_EXT_shader_integer_mix")) + { + EXT_shader_integer_mix = true; + extensions.Remove("glEXT_shader_integer_mix"); + } + if (extensions.Contains("gl_EXT_shader_samples_identical")) + { + EXT_shader_samples_identical = true; + extensions.Remove("glEXT_shader_samples_identical"); + } + if (extensions.Contains("gl_EXT_shadow_funcs")) + { + EXT_shadow_funcs = true; + extensions.Remove("glEXT_shadow_funcs"); + } + if (extensions.Contains("gl_EXT_shared_texture_palette")) + { + EXT_shared_texture_palette = true; + extensions.Remove("glEXT_shared_texture_palette"); + } + if (extensions.Contains("gl_EXT_sparse_texture2")) + { + EXT_sparse_texture2 = true; + extensions.Remove("glEXT_sparse_texture2"); + } + if (extensions.Contains("gl_EXT_stencil_clear_tag")) + { + EXT_stencil_clear_tag = true; + extensions.Remove("glEXT_stencil_clear_tag"); + } + if (extensions.Contains("gl_EXT_stencil_two_side")) + { + EXT_stencil_two_side = true; + extensions.Remove("glEXT_stencil_two_side"); + } + if (extensions.Contains("gl_EXT_stencil_wrap")) + { + EXT_stencil_wrap = true; + extensions.Remove("glEXT_stencil_wrap"); + } + if (extensions.Contains("gl_EXT_subtexture")) + { + EXT_subtexture = true; + extensions.Remove("glEXT_subtexture"); + } + if (extensions.Contains("gl_EXT_texture")) + { + EXT_texture = true; + extensions.Remove("glEXT_texture"); + } + if (extensions.Contains("gl_EXT_texture3D")) + { + EXT_texture3D = true; + extensions.Remove("glEXT_texture3D"); + } + if (extensions.Contains("gl_EXT_texture_array")) + { + EXT_texture_array = true; + extensions.Remove("glEXT_texture_array"); + } + if (extensions.Contains("gl_EXT_texture_buffer_object")) + { + EXT_texture_buffer_object = true; + extensions.Remove("glEXT_texture_buffer_object"); + } + if (extensions.Contains("gl_EXT_texture_compression_latc")) + { + EXT_texture_compression_latc = true; + extensions.Remove("glEXT_texture_compression_latc"); + } + if (extensions.Contains("gl_EXT_texture_compression_rgtc")) + { + EXT_texture_compression_rgtc = true; + extensions.Remove("glEXT_texture_compression_rgtc"); + } + if (extensions.Contains("gl_EXT_texture_compression_s3tc")) + { + EXT_texture_compression_s3tc = true; + extensions.Remove("glEXT_texture_compression_s3tc"); + } + if (extensions.Contains("gl_EXT_texture_cube_map")) + { + EXT_texture_cube_map = true; + extensions.Remove("glEXT_texture_cube_map"); + } + if (extensions.Contains("gl_EXT_texture_env_add")) + { + EXT_texture_env_add = true; + extensions.Remove("glEXT_texture_env_add"); + } + if (extensions.Contains("gl_EXT_texture_env_combine")) + { + EXT_texture_env_combine = true; + extensions.Remove("glEXT_texture_env_combine"); + } + if (extensions.Contains("gl_EXT_texture_env_dot3")) + { + EXT_texture_env_dot3 = true; + extensions.Remove("glEXT_texture_env_dot3"); + } + if (extensions.Contains("gl_EXT_texture_filter_anisotropic")) + { + EXT_texture_filter_anisotropic = true; + extensions.Remove("glEXT_texture_filter_anisotropic"); + } + if (extensions.Contains("gl_EXT_texture_filter_minmax")) + { + EXT_texture_filter_minmax = true; + extensions.Remove("glEXT_texture_filter_minmax"); + } + if (extensions.Contains("gl_EXT_texture_integer")) + { + EXT_texture_integer = true; + extensions.Remove("glEXT_texture_integer"); + } + if (extensions.Contains("gl_EXT_texture_lod_bias")) + { + EXT_texture_lod_bias = true; + extensions.Remove("glEXT_texture_lod_bias"); + } + if (extensions.Contains("gl_EXT_texture_mirror_clamp")) + { + EXT_texture_mirror_clamp = true; + extensions.Remove("glEXT_texture_mirror_clamp"); + } + if (extensions.Contains("gl_EXT_texture_object")) + { + EXT_texture_object = true; + extensions.Remove("glEXT_texture_object"); + } + if (extensions.Contains("gl_EXT_texture_perturb_normal")) + { + EXT_texture_perturb_normal = true; + extensions.Remove("glEXT_texture_perturb_normal"); + } + if (extensions.Contains("gl_EXT_texture_sRGB")) + { + EXT_texture_sRGB = true; + extensions.Remove("glEXT_texture_sRGB"); + } + if (extensions.Contains("gl_EXT_texture_sRGB_R8")) + { + EXT_texture_sRGB_R8 = true; + extensions.Remove("glEXT_texture_sRGB_R8"); + } + if (extensions.Contains("gl_EXT_texture_sRGB_RG8")) + { + EXT_texture_sRGB_RG8 = true; + extensions.Remove("glEXT_texture_sRGB_RG8"); + } + if (extensions.Contains("gl_EXT_texture_sRGB_decode")) + { + EXT_texture_sRGB_decode = true; + extensions.Remove("glEXT_texture_sRGB_decode"); + } + if (extensions.Contains("gl_EXT_texture_shadow_lod")) + { + EXT_texture_shadow_lod = true; + extensions.Remove("glEXT_texture_shadow_lod"); + } + if (extensions.Contains("gl_EXT_texture_shared_exponent")) + { + EXT_texture_shared_exponent = true; + extensions.Remove("glEXT_texture_shared_exponent"); + } + if (extensions.Contains("gl_EXT_texture_snorm")) + { + EXT_texture_snorm = true; + extensions.Remove("glEXT_texture_snorm"); + } + if (extensions.Contains("gl_EXT_texture_storage")) + { + EXT_texture_storage = true; + extensions.Remove("glEXT_texture_storage"); + } + if (extensions.Contains("gl_EXT_texture_swizzle")) + { + EXT_texture_swizzle = true; + extensions.Remove("glEXT_texture_swizzle"); + } + if (extensions.Contains("gl_EXT_timer_query")) + { + EXT_timer_query = true; + extensions.Remove("glEXT_timer_query"); + } + if (extensions.Contains("gl_EXT_transform_feedback")) + { + EXT_transform_feedback = true; + extensions.Remove("glEXT_transform_feedback"); + } + if (extensions.Contains("gl_EXT_vertex_array")) + { + EXT_vertex_array = true; + extensions.Remove("glEXT_vertex_array"); + } + if (extensions.Contains("gl_EXT_vertex_array_bgra")) + { + EXT_vertex_array_bgra = true; + extensions.Remove("glEXT_vertex_array_bgra"); + } + if (extensions.Contains("gl_EXT_vertex_attrib_64bit")) + { + EXT_vertex_attrib_64bit = true; + extensions.Remove("glEXT_vertex_attrib_64bit"); + } + if (extensions.Contains("gl_EXT_vertex_shader")) + { + EXT_vertex_shader = true; + extensions.Remove("glEXT_vertex_shader"); + } + if (extensions.Contains("gl_EXT_vertex_weighting")) + { + EXT_vertex_weighting = true; + extensions.Remove("glEXT_vertex_weighting"); + } + if (extensions.Contains("gl_EXT_win32_keyed_mutex")) + { + EXT_win32_keyed_mutex = true; + extensions.Remove("glEXT_win32_keyed_mutex"); + } + if (extensions.Contains("gl_EXT_window_rectangles")) + { + EXT_window_rectangles = true; + extensions.Remove("glEXT_window_rectangles"); + } + if (extensions.Contains("gl_EXT_x11_sync_object")) + { + EXT_x11_sync_object = true; + extensions.Remove("glEXT_x11_sync_object"); + } + if (extensions.Contains("gl_GREMEDY_frame_terminator")) + { + GREMEDY_frame_terminator = true; + extensions.Remove("glGREMEDY_frame_terminator"); + } + if (extensions.Contains("gl_GREMEDY_string_marker")) + { + GREMEDY_string_marker = true; + extensions.Remove("glGREMEDY_string_marker"); + } + if (extensions.Contains("gl_HP_convolution_border_modes")) + { + HP_convolution_border_modes = true; + extensions.Remove("glHP_convolution_border_modes"); + } + if (extensions.Contains("gl_HP_image_transform")) + { + HP_image_transform = true; + extensions.Remove("glHP_image_transform"); + } + if (extensions.Contains("gl_HP_occlusion_test")) + { + HP_occlusion_test = true; + extensions.Remove("glHP_occlusion_test"); + } + if (extensions.Contains("gl_HP_texture_lighting")) + { + HP_texture_lighting = true; + extensions.Remove("glHP_texture_lighting"); + } + if (extensions.Contains("gl_IBM_cull_vertex")) + { + IBM_cull_vertex = true; + extensions.Remove("glIBM_cull_vertex"); + } + if (extensions.Contains("gl_IBM_multimode_draw_arrays")) + { + IBM_multimode_draw_arrays = true; + extensions.Remove("glIBM_multimode_draw_arrays"); + } + if (extensions.Contains("gl_IBM_rasterpos_clip")) + { + IBM_rasterpos_clip = true; + extensions.Remove("glIBM_rasterpos_clip"); + } + if (extensions.Contains("gl_IBM_static_data")) + { + IBM_static_data = true; + extensions.Remove("glIBM_static_data"); + } + if (extensions.Contains("gl_IBM_texture_mirrored_repeat")) + { + IBM_texture_mirrored_repeat = true; + extensions.Remove("glIBM_texture_mirrored_repeat"); + } + if (extensions.Contains("gl_IBM_vertex_array_lists")) + { + IBM_vertex_array_lists = true; + extensions.Remove("glIBM_vertex_array_lists"); + } + if (extensions.Contains("gl_INGR_blend_func_separate")) + { + INGR_blend_func_separate = true; + extensions.Remove("glINGR_blend_func_separate"); + } + if (extensions.Contains("gl_INGR_color_clamp")) + { + INGR_color_clamp = true; + extensions.Remove("glINGR_color_clamp"); + } + if (extensions.Contains("gl_INGR_interlace_read")) + { + INGR_interlace_read = true; + extensions.Remove("glINGR_interlace_read"); + } + if (extensions.Contains("gl_INTEL_blackhole_render")) + { + INTEL_blackhole_render = true; + extensions.Remove("glINTEL_blackhole_render"); + } + if (extensions.Contains("gl_INTEL_conservative_rasterization")) + { + INTEL_conservative_rasterization = true; + extensions.Remove("glINTEL_conservative_rasterization"); + } + if (extensions.Contains("gl_INTEL_fragment_shader_ordering")) + { + INTEL_fragment_shader_ordering = true; + extensions.Remove("glINTEL_fragment_shader_ordering"); + } + if (extensions.Contains("gl_INTEL_framebuffer_CMAA")) + { + INTEL_framebuffer_CMAA = true; + extensions.Remove("glINTEL_framebuffer_CMAA"); + } + if (extensions.Contains("gl_INTEL_map_texture")) + { + INTEL_map_texture = true; + extensions.Remove("glINTEL_map_texture"); + } + if (extensions.Contains("gl_INTEL_parallel_arrays")) + { + INTEL_parallel_arrays = true; + extensions.Remove("glINTEL_parallel_arrays"); + } + if (extensions.Contains("gl_INTEL_performance_query")) + { + INTEL_performance_query = true; + extensions.Remove("glINTEL_performance_query"); + } + if (extensions.Contains("gl_KHR_blend_equation_advanced")) + { + KHR_blend_equation_advanced = true; + extensions.Remove("glKHR_blend_equation_advanced"); + } + if (extensions.Contains("gl_KHR_blend_equation_advanced_coherent")) + { + KHR_blend_equation_advanced_coherent = true; + extensions.Remove("glKHR_blend_equation_advanced_coherent"); + } + if (extensions.Contains("gl_KHR_context_flush_control")) + { + KHR_context_flush_control = true; + extensions.Remove("glKHR_context_flush_control"); + } + if (extensions.Contains("gl_KHR_debug")) + { + KHR_debug = true; + extensions.Remove("glKHR_debug"); + } + if (extensions.Contains("gl_KHR_no_error")) + { + KHR_no_error = true; + extensions.Remove("glKHR_no_error"); + } + if (extensions.Contains("gl_KHR_parallel_shader_compile")) + { + KHR_parallel_shader_compile = true; + extensions.Remove("glKHR_parallel_shader_compile"); + } + if (extensions.Contains("gl_KHR_robust_buffer_access_behavior")) + { + KHR_robust_buffer_access_behavior = true; + extensions.Remove("glKHR_robust_buffer_access_behavior"); + } + if (extensions.Contains("gl_KHR_robustness")) + { + KHR_robustness = true; + extensions.Remove("glKHR_robustness"); + } + if (extensions.Contains("gl_KHR_shader_subgroup")) + { + KHR_shader_subgroup = true; + extensions.Remove("glKHR_shader_subgroup"); + } + if (extensions.Contains("gl_KHR_texture_compression_astc_hdr")) + { + KHR_texture_compression_astc_hdr = true; + extensions.Remove("glKHR_texture_compression_astc_hdr"); + } + if (extensions.Contains("gl_KHR_texture_compression_astc_ldr")) + { + KHR_texture_compression_astc_ldr = true; + extensions.Remove("glKHR_texture_compression_astc_ldr"); + } + if (extensions.Contains("gl_KHR_texture_compression_astc_sliced_3d")) + { + KHR_texture_compression_astc_sliced_3d = true; + extensions.Remove("glKHR_texture_compression_astc_sliced_3d"); + } + if (extensions.Contains("gl_MESAX_texture_stack")) + { + MESAX_texture_stack = true; + extensions.Remove("glMESAX_texture_stack"); + } + if (extensions.Contains("gl_MESA_framebuffer_flip_x")) + { + MESA_framebuffer_flip_x = true; + extensions.Remove("glMESA_framebuffer_flip_x"); + } + if (extensions.Contains("gl_MESA_framebuffer_flip_y")) + { + MESA_framebuffer_flip_y = true; + extensions.Remove("glMESA_framebuffer_flip_y"); + } + if (extensions.Contains("gl_MESA_framebuffer_swap_xy")) + { + MESA_framebuffer_swap_xy = true; + extensions.Remove("glMESA_framebuffer_swap_xy"); + } + if (extensions.Contains("gl_MESA_pack_invert")) + { + MESA_pack_invert = true; + extensions.Remove("glMESA_pack_invert"); + } + if (extensions.Contains("gl_MESA_program_binary_formats")) + { + MESA_program_binary_formats = true; + extensions.Remove("glMESA_program_binary_formats"); + } + if (extensions.Contains("gl_MESA_resize_buffers")) + { + MESA_resize_buffers = true; + extensions.Remove("glMESA_resize_buffers"); + } + if (extensions.Contains("gl_MESA_shader_integer_functions")) + { + MESA_shader_integer_functions = true; + extensions.Remove("glMESA_shader_integer_functions"); + } + if (extensions.Contains("gl_MESA_tile_raster_order")) + { + MESA_tile_raster_order = true; + extensions.Remove("glMESA_tile_raster_order"); + } + if (extensions.Contains("gl_MESA_window_pos")) + { + MESA_window_pos = true; + extensions.Remove("glMESA_window_pos"); + } + if (extensions.Contains("gl_MESA_ycbcr_texture")) + { + MESA_ycbcr_texture = true; + extensions.Remove("glMESA_ycbcr_texture"); + } + if (extensions.Contains("gl_NVX_blend_equation_advanced_multi_draw_buffers")) + { + NVX_blend_equation_advanced_multi_draw_buffers = true; + extensions.Remove("glNVX_blend_equation_advanced_multi_draw_buffers"); + } + if (extensions.Contains("gl_NVX_conditional_render")) + { + NVX_conditional_render = true; + extensions.Remove("glNVX_conditional_render"); + } + if (extensions.Contains("gl_NVX_gpu_memory_info")) + { + NVX_gpu_memory_info = true; + extensions.Remove("glNVX_gpu_memory_info"); + } + if (extensions.Contains("gl_NVX_gpu_multicast2")) + { + NVX_gpu_multicast2 = true; + extensions.Remove("glNVX_gpu_multicast2"); + } + if (extensions.Contains("gl_NVX_linked_gpu_multicast")) + { + NVX_linked_gpu_multicast = true; + extensions.Remove("glNVX_linked_gpu_multicast"); + } + if (extensions.Contains("gl_NVX_progress_fence")) + { + NVX_progress_fence = true; + extensions.Remove("glNVX_progress_fence"); + } + if (extensions.Contains("gl_NV_alpha_to_coverage_dither_control")) + { + NV_alpha_to_coverage_dither_control = true; + extensions.Remove("glNV_alpha_to_coverage_dither_control"); + } + if (extensions.Contains("gl_NV_bindless_multi_draw_indirect")) + { + NV_bindless_multi_draw_indirect = true; + extensions.Remove("glNV_bindless_multi_draw_indirect"); + } + if (extensions.Contains("gl_NV_bindless_multi_draw_indirect_count")) + { + NV_bindless_multi_draw_indirect_count = true; + extensions.Remove("glNV_bindless_multi_draw_indirect_count"); + } + if (extensions.Contains("gl_NV_bindless_texture")) + { + NV_bindless_texture = true; + extensions.Remove("glNV_bindless_texture"); + } + if (extensions.Contains("gl_NV_blend_equation_advanced")) + { + NV_blend_equation_advanced = true; + extensions.Remove("glNV_blend_equation_advanced"); + } + if (extensions.Contains("gl_NV_blend_equation_advanced_coherent")) + { + NV_blend_equation_advanced_coherent = true; + extensions.Remove("glNV_blend_equation_advanced_coherent"); + } + if (extensions.Contains("gl_NV_blend_minmax_factor")) + { + NV_blend_minmax_factor = true; + extensions.Remove("glNV_blend_minmax_factor"); + } + if (extensions.Contains("gl_NV_blend_square")) + { + NV_blend_square = true; + extensions.Remove("glNV_blend_square"); + } + if (extensions.Contains("gl_NV_clip_space_w_scaling")) + { + NV_clip_space_w_scaling = true; + extensions.Remove("glNV_clip_space_w_scaling"); + } + if (extensions.Contains("gl_NV_command_list")) + { + NV_command_list = true; + extensions.Remove("glNV_command_list"); + } + if (extensions.Contains("gl_NV_compute_program5")) + { + NV_compute_program5 = true; + extensions.Remove("glNV_compute_program5"); + } + if (extensions.Contains("gl_NV_compute_shader_derivatives")) + { + NV_compute_shader_derivatives = true; + extensions.Remove("glNV_compute_shader_derivatives"); + } + if (extensions.Contains("gl_NV_conditional_render")) + { + NV_conditional_render = true; + extensions.Remove("glNV_conditional_render"); + } + if (extensions.Contains("gl_NV_conservative_raster")) + { + NV_conservative_raster = true; + extensions.Remove("glNV_conservative_raster"); + } + if (extensions.Contains("gl_NV_conservative_raster_dilate")) + { + NV_conservative_raster_dilate = true; + extensions.Remove("glNV_conservative_raster_dilate"); + } + if (extensions.Contains("gl_NV_conservative_raster_pre_snap")) + { + NV_conservative_raster_pre_snap = true; + extensions.Remove("glNV_conservative_raster_pre_snap"); + } + if (extensions.Contains("gl_NV_conservative_raster_pre_snap_triangles")) + { + NV_conservative_raster_pre_snap_triangles = true; + extensions.Remove("glNV_conservative_raster_pre_snap_triangles"); + } + if (extensions.Contains("gl_NV_conservative_raster_underestimation")) + { + NV_conservative_raster_underestimation = true; + extensions.Remove("glNV_conservative_raster_underestimation"); + } + if (extensions.Contains("gl_NV_copy_depth_to_color")) + { + NV_copy_depth_to_color = true; + extensions.Remove("glNV_copy_depth_to_color"); + } + if (extensions.Contains("gl_NV_copy_image")) + { + NV_copy_image = true; + extensions.Remove("glNV_copy_image"); + } + if (extensions.Contains("gl_NV_deep_texture3D")) + { + NV_deep_texture3D = true; + extensions.Remove("glNV_deep_texture3D"); + } + if (extensions.Contains("gl_NV_depth_buffer_float")) + { + NV_depth_buffer_float = true; + extensions.Remove("glNV_depth_buffer_float"); + } + if (extensions.Contains("gl_NV_depth_clamp")) + { + NV_depth_clamp = true; + extensions.Remove("glNV_depth_clamp"); + } + if (extensions.Contains("gl_NV_draw_texture")) + { + NV_draw_texture = true; + extensions.Remove("glNV_draw_texture"); + } + if (extensions.Contains("gl_NV_draw_vulkan_image")) + { + NV_draw_vulkan_image = true; + extensions.Remove("glNV_draw_vulkan_image"); + } + if (extensions.Contains("gl_NV_evaluators")) + { + NV_evaluators = true; + extensions.Remove("glNV_evaluators"); + } + if (extensions.Contains("gl_NV_explicit_multisample")) + { + NV_explicit_multisample = true; + extensions.Remove("glNV_explicit_multisample"); + } + if (extensions.Contains("gl_NV_fence")) + { + NV_fence = true; + extensions.Remove("glNV_fence"); + } + if (extensions.Contains("gl_NV_fill_rectangle")) + { + NV_fill_rectangle = true; + extensions.Remove("glNV_fill_rectangle"); + } + if (extensions.Contains("gl_NV_float_buffer")) + { + NV_float_buffer = true; + extensions.Remove("glNV_float_buffer"); + } + if (extensions.Contains("gl_NV_fog_distance")) + { + NV_fog_distance = true; + extensions.Remove("glNV_fog_distance"); + } + if (extensions.Contains("gl_NV_fragment_coverage_to_color")) + { + NV_fragment_coverage_to_color = true; + extensions.Remove("glNV_fragment_coverage_to_color"); + } + if (extensions.Contains("gl_NV_fragment_program")) + { + NV_fragment_program = true; + extensions.Remove("glNV_fragment_program"); + } + if (extensions.Contains("gl_NV_fragment_program2")) + { + NV_fragment_program2 = true; + extensions.Remove("glNV_fragment_program2"); + } + if (extensions.Contains("gl_NV_fragment_program4")) + { + NV_fragment_program4 = true; + extensions.Remove("glNV_fragment_program4"); + } + if (extensions.Contains("gl_NV_fragment_program_option")) + { + NV_fragment_program_option = true; + extensions.Remove("glNV_fragment_program_option"); + } + if (extensions.Contains("gl_NV_fragment_shader_barycentric")) + { + NV_fragment_shader_barycentric = true; + extensions.Remove("glNV_fragment_shader_barycentric"); + } + if (extensions.Contains("gl_NV_fragment_shader_interlock")) + { + NV_fragment_shader_interlock = true; + extensions.Remove("glNV_fragment_shader_interlock"); + } + if (extensions.Contains("gl_NV_framebuffer_mixed_samples")) + { + NV_framebuffer_mixed_samples = true; + extensions.Remove("glNV_framebuffer_mixed_samples"); + } + if (extensions.Contains("gl_NV_framebuffer_multisample_coverage")) + { + NV_framebuffer_multisample_coverage = true; + extensions.Remove("glNV_framebuffer_multisample_coverage"); + } + if (extensions.Contains("gl_NV_geometry_program4")) + { + NV_geometry_program4 = true; + extensions.Remove("glNV_geometry_program4"); + } + if (extensions.Contains("gl_NV_geometry_shader4")) + { + NV_geometry_shader4 = true; + extensions.Remove("glNV_geometry_shader4"); + } + if (extensions.Contains("gl_NV_geometry_shader_passthrough")) + { + NV_geometry_shader_passthrough = true; + extensions.Remove("glNV_geometry_shader_passthrough"); + } + if (extensions.Contains("gl_NV_gpu_multicast")) + { + NV_gpu_multicast = true; + extensions.Remove("glNV_gpu_multicast"); + } + if (extensions.Contains("gl_NV_gpu_program4")) + { + NV_gpu_program4 = true; + extensions.Remove("glNV_gpu_program4"); + } + if (extensions.Contains("gl_NV_gpu_program5")) + { + NV_gpu_program5 = true; + extensions.Remove("glNV_gpu_program5"); + } + if (extensions.Contains("gl_NV_gpu_program5_mem_extended")) + { + NV_gpu_program5_mem_extended = true; + extensions.Remove("glNV_gpu_program5_mem_extended"); + } + if (extensions.Contains("gl_NV_gpu_shader5")) + { + NV_gpu_shader5 = true; + extensions.Remove("glNV_gpu_shader5"); + } + if (extensions.Contains("gl_NV_half_float")) + { + NV_half_float = true; + extensions.Remove("glNV_half_float"); + } + if (extensions.Contains("gl_NV_internalformat_sample_query")) + { + NV_internalformat_sample_query = true; + extensions.Remove("glNV_internalformat_sample_query"); + } + if (extensions.Contains("gl_NV_light_max_exponent")) + { + NV_light_max_exponent = true; + extensions.Remove("glNV_light_max_exponent"); + } + if (extensions.Contains("gl_NV_memory_attachment")) + { + NV_memory_attachment = true; + extensions.Remove("glNV_memory_attachment"); + } + if (extensions.Contains("gl_NV_memory_object_sparse")) + { + NV_memory_object_sparse = true; + extensions.Remove("glNV_memory_object_sparse"); + } + if (extensions.Contains("gl_NV_mesh_shader")) + { + NV_mesh_shader = true; + extensions.Remove("glNV_mesh_shader"); + } + if (extensions.Contains("gl_NV_multisample_coverage")) + { + NV_multisample_coverage = true; + extensions.Remove("glNV_multisample_coverage"); + } + if (extensions.Contains("gl_NV_multisample_filter_hint")) + { + NV_multisample_filter_hint = true; + extensions.Remove("glNV_multisample_filter_hint"); + } + if (extensions.Contains("gl_NV_occlusion_query")) + { + NV_occlusion_query = true; + extensions.Remove("glNV_occlusion_query"); + } + if (extensions.Contains("gl_NV_packed_depth_stencil")) + { + NV_packed_depth_stencil = true; + extensions.Remove("glNV_packed_depth_stencil"); + } + if (extensions.Contains("gl_NV_parameter_buffer_object")) + { + NV_parameter_buffer_object = true; + extensions.Remove("glNV_parameter_buffer_object"); + } + if (extensions.Contains("gl_NV_parameter_buffer_object2")) + { + NV_parameter_buffer_object2 = true; + extensions.Remove("glNV_parameter_buffer_object2"); + } + if (extensions.Contains("gl_NV_path_rendering")) + { + NV_path_rendering = true; + extensions.Remove("glNV_path_rendering"); + } + if (extensions.Contains("gl_NV_path_rendering_shared_edge")) + { + NV_path_rendering_shared_edge = true; + extensions.Remove("glNV_path_rendering_shared_edge"); + } + if (extensions.Contains("gl_NV_pixel_data_range")) + { + NV_pixel_data_range = true; + extensions.Remove("glNV_pixel_data_range"); + } + if (extensions.Contains("gl_NV_point_sprite")) + { + NV_point_sprite = true; + extensions.Remove("glNV_point_sprite"); + } + if (extensions.Contains("gl_NV_present_video")) + { + NV_present_video = true; + extensions.Remove("glNV_present_video"); + } + if (extensions.Contains("gl_NV_primitive_restart")) + { + NV_primitive_restart = true; + extensions.Remove("glNV_primitive_restart"); + } + if (extensions.Contains("gl_NV_primitive_shading_rate")) + { + NV_primitive_shading_rate = true; + extensions.Remove("glNV_primitive_shading_rate"); + } + if (extensions.Contains("gl_NV_query_resource")) + { + NV_query_resource = true; + extensions.Remove("glNV_query_resource"); + } + if (extensions.Contains("gl_NV_query_resource_tag")) + { + NV_query_resource_tag = true; + extensions.Remove("glNV_query_resource_tag"); + } + if (extensions.Contains("gl_NV_register_combiners")) + { + NV_register_combiners = true; + extensions.Remove("glNV_register_combiners"); + } + if (extensions.Contains("gl_NV_register_combiners2")) + { + NV_register_combiners2 = true; + extensions.Remove("glNV_register_combiners2"); + } + if (extensions.Contains("gl_NV_representative_fragment_test")) + { + NV_representative_fragment_test = true; + extensions.Remove("glNV_representative_fragment_test"); + } + if (extensions.Contains("gl_NV_robustness_video_memory_purge")) + { + NV_robustness_video_memory_purge = true; + extensions.Remove("glNV_robustness_video_memory_purge"); + } + if (extensions.Contains("gl_NV_sample_locations")) + { + NV_sample_locations = true; + extensions.Remove("glNV_sample_locations"); + } + if (extensions.Contains("gl_NV_sample_mask_override_coverage")) + { + NV_sample_mask_override_coverage = true; + extensions.Remove("glNV_sample_mask_override_coverage"); + } + if (extensions.Contains("gl_NV_scissor_exclusive")) + { + NV_scissor_exclusive = true; + extensions.Remove("glNV_scissor_exclusive"); + } + if (extensions.Contains("gl_NV_shader_atomic_counters")) + { + NV_shader_atomic_counters = true; + extensions.Remove("glNV_shader_atomic_counters"); + } + if (extensions.Contains("gl_NV_shader_atomic_float")) + { + NV_shader_atomic_float = true; + extensions.Remove("glNV_shader_atomic_float"); + } + if (extensions.Contains("gl_NV_shader_atomic_float64")) + { + NV_shader_atomic_float64 = true; + extensions.Remove("glNV_shader_atomic_float64"); + } + if (extensions.Contains("gl_NV_shader_atomic_fp16_vector")) + { + NV_shader_atomic_fp16_vector = true; + extensions.Remove("glNV_shader_atomic_fp16_vector"); + } + if (extensions.Contains("gl_NV_shader_atomic_int64")) + { + NV_shader_atomic_int64 = true; + extensions.Remove("glNV_shader_atomic_int64"); + } + if (extensions.Contains("gl_NV_shader_buffer_load")) + { + NV_shader_buffer_load = true; + extensions.Remove("glNV_shader_buffer_load"); + } + if (extensions.Contains("gl_NV_shader_buffer_store")) + { + NV_shader_buffer_store = true; + extensions.Remove("glNV_shader_buffer_store"); + } + if (extensions.Contains("gl_NV_shader_storage_buffer_object")) + { + NV_shader_storage_buffer_object = true; + extensions.Remove("glNV_shader_storage_buffer_object"); + } + if (extensions.Contains("gl_NV_shader_subgroup_partitioned")) + { + NV_shader_subgroup_partitioned = true; + extensions.Remove("glNV_shader_subgroup_partitioned"); + } + if (extensions.Contains("gl_NV_shader_texture_footprint")) + { + NV_shader_texture_footprint = true; + extensions.Remove("glNV_shader_texture_footprint"); + } + if (extensions.Contains("gl_NV_shader_thread_group")) + { + NV_shader_thread_group = true; + extensions.Remove("glNV_shader_thread_group"); + } + if (extensions.Contains("gl_NV_shader_thread_shuffle")) + { + NV_shader_thread_shuffle = true; + extensions.Remove("glNV_shader_thread_shuffle"); + } + if (extensions.Contains("gl_NV_shading_rate_image")) + { + NV_shading_rate_image = true; + extensions.Remove("glNV_shading_rate_image"); + } + if (extensions.Contains("gl_NV_stereo_view_rendering")) + { + NV_stereo_view_rendering = true; + extensions.Remove("glNV_stereo_view_rendering"); + } + if (extensions.Contains("gl_NV_tessellation_program5")) + { + NV_tessellation_program5 = true; + extensions.Remove("glNV_tessellation_program5"); + } + if (extensions.Contains("gl_NV_texgen_emboss")) + { + NV_texgen_emboss = true; + extensions.Remove("glNV_texgen_emboss"); + } + if (extensions.Contains("gl_NV_texgen_reflection")) + { + NV_texgen_reflection = true; + extensions.Remove("glNV_texgen_reflection"); + } + if (extensions.Contains("gl_NV_texture_barrier")) + { + NV_texture_barrier = true; + extensions.Remove("glNV_texture_barrier"); + } + if (extensions.Contains("gl_NV_texture_compression_vtc")) + { + NV_texture_compression_vtc = true; + extensions.Remove("glNV_texture_compression_vtc"); + } + if (extensions.Contains("gl_NV_texture_env_combine4")) + { + NV_texture_env_combine4 = true; + extensions.Remove("glNV_texture_env_combine4"); + } + if (extensions.Contains("gl_NV_texture_expand_normal")) + { + NV_texture_expand_normal = true; + extensions.Remove("glNV_texture_expand_normal"); + } + if (extensions.Contains("gl_NV_texture_multisample")) + { + NV_texture_multisample = true; + extensions.Remove("glNV_texture_multisample"); + } + if (extensions.Contains("gl_NV_texture_rectangle")) + { + NV_texture_rectangle = true; + extensions.Remove("glNV_texture_rectangle"); + } + if (extensions.Contains("gl_NV_texture_rectangle_compressed")) + { + NV_texture_rectangle_compressed = true; + extensions.Remove("glNV_texture_rectangle_compressed"); + } + if (extensions.Contains("gl_NV_texture_shader")) + { + NV_texture_shader = true; + extensions.Remove("glNV_texture_shader"); + } + if (extensions.Contains("gl_NV_texture_shader2")) + { + NV_texture_shader2 = true; + extensions.Remove("glNV_texture_shader2"); + } + if (extensions.Contains("gl_NV_texture_shader3")) + { + NV_texture_shader3 = true; + extensions.Remove("glNV_texture_shader3"); + } + if (extensions.Contains("gl_NV_timeline_semaphore")) + { + NV_timeline_semaphore = true; + extensions.Remove("glNV_timeline_semaphore"); + } + if (extensions.Contains("gl_NV_transform_feedback")) + { + NV_transform_feedback = true; + extensions.Remove("glNV_transform_feedback"); + } + if (extensions.Contains("gl_NV_transform_feedback2")) + { + NV_transform_feedback2 = true; + extensions.Remove("glNV_transform_feedback2"); + } + if (extensions.Contains("gl_NV_uniform_buffer_std430_layout")) + { + NV_uniform_buffer_std430_layout = true; + extensions.Remove("glNV_uniform_buffer_std430_layout"); + } + if (extensions.Contains("gl_NV_uniform_buffer_unified_memory")) + { + NV_uniform_buffer_unified_memory = true; + extensions.Remove("glNV_uniform_buffer_unified_memory"); + } + if (extensions.Contains("gl_NV_vdpau_interop")) + { + NV_vdpau_interop = true; + extensions.Remove("glNV_vdpau_interop"); + } + if (extensions.Contains("gl_NV_vdpau_interop2")) + { + NV_vdpau_interop2 = true; + extensions.Remove("glNV_vdpau_interop2"); + } + if (extensions.Contains("gl_NV_vertex_array_range")) + { + NV_vertex_array_range = true; + extensions.Remove("glNV_vertex_array_range"); + } + if (extensions.Contains("gl_NV_vertex_array_range2")) + { + NV_vertex_array_range2 = true; + extensions.Remove("glNV_vertex_array_range2"); + } + if (extensions.Contains("gl_NV_vertex_attrib_integer_64bit")) + { + NV_vertex_attrib_integer_64bit = true; + extensions.Remove("glNV_vertex_attrib_integer_64bit"); + } + if (extensions.Contains("gl_NV_vertex_buffer_unified_memory")) + { + NV_vertex_buffer_unified_memory = true; + extensions.Remove("glNV_vertex_buffer_unified_memory"); + } + if (extensions.Contains("gl_NV_vertex_program")) + { + NV_vertex_program = true; + extensions.Remove("glNV_vertex_program"); + } + if (extensions.Contains("gl_NV_vertex_program1_1")) + { + NV_vertex_program1_1 = true; + extensions.Remove("glNV_vertex_program1_1"); + } + if (extensions.Contains("gl_NV_vertex_program2")) + { + NV_vertex_program2 = true; + extensions.Remove("glNV_vertex_program2"); + } + if (extensions.Contains("gl_NV_vertex_program2_option")) + { + NV_vertex_program2_option = true; + extensions.Remove("glNV_vertex_program2_option"); + } + if (extensions.Contains("gl_NV_vertex_program3")) + { + NV_vertex_program3 = true; + extensions.Remove("glNV_vertex_program3"); + } + if (extensions.Contains("gl_NV_vertex_program4")) + { + NV_vertex_program4 = true; + extensions.Remove("glNV_vertex_program4"); + } + if (extensions.Contains("gl_NV_video_capture")) + { + NV_video_capture = true; + extensions.Remove("glNV_video_capture"); + } + if (extensions.Contains("gl_NV_viewport_array2")) + { + NV_viewport_array2 = true; + extensions.Remove("glNV_viewport_array2"); + } + if (extensions.Contains("gl_NV_viewport_swizzle")) + { + NV_viewport_swizzle = true; + extensions.Remove("glNV_viewport_swizzle"); + } + if (extensions.Contains("gl_OES_byte_coordinates")) + { + OES_byte_coordinates = true; + extensions.Remove("glOES_byte_coordinates"); + } + if (extensions.Contains("gl_OES_compressed_paletted_texture")) + { + OES_compressed_paletted_texture = true; + extensions.Remove("glOES_compressed_paletted_texture"); + } + if (extensions.Contains("gl_OES_fixed_point")) + { + OES_fixed_point = true; + extensions.Remove("glOES_fixed_point"); + } + if (extensions.Contains("gl_OES_query_matrix")) + { + OES_query_matrix = true; + extensions.Remove("glOES_query_matrix"); + } + if (extensions.Contains("gl_OES_read_format")) + { + OES_read_format = true; + extensions.Remove("glOES_read_format"); + } + if (extensions.Contains("gl_OES_single_precision")) + { + OES_single_precision = true; + extensions.Remove("glOES_single_precision"); + } + if (extensions.Contains("gl_OML_interlace")) + { + OML_interlace = true; + extensions.Remove("glOML_interlace"); + } + if (extensions.Contains("gl_OML_resample")) + { + OML_resample = true; + extensions.Remove("glOML_resample"); + } + if (extensions.Contains("gl_OML_subsample")) + { + OML_subsample = true; + extensions.Remove("glOML_subsample"); + } + if (extensions.Contains("gl_OVR_multiview")) + { + OVR_multiview = true; + extensions.Remove("glOVR_multiview"); + } + if (extensions.Contains("gl_OVR_multiview2")) + { + OVR_multiview2 = true; + extensions.Remove("glOVR_multiview2"); + } + if (extensions.Contains("gl_PGI_misc_hints")) + { + PGI_misc_hints = true; + extensions.Remove("glPGI_misc_hints"); + } + if (extensions.Contains("gl_PGI_vertex_hints")) + { + PGI_vertex_hints = true; + extensions.Remove("glPGI_vertex_hints"); + } + if (extensions.Contains("gl_REND_screen_coordinates")) + { + REND_screen_coordinates = true; + extensions.Remove("glREND_screen_coordinates"); + } + if (extensions.Contains("gl_S3_s3tc")) + { + S3_s3tc = true; + extensions.Remove("glS3_s3tc"); + } + if (extensions.Contains("gl_SGIS_detail_texture")) + { + SGIS_detail_texture = true; + extensions.Remove("glSGIS_detail_texture"); + } + if (extensions.Contains("gl_SGIS_fog_function")) + { + SGIS_fog_function = true; + extensions.Remove("glSGIS_fog_function"); + } + if (extensions.Contains("gl_SGIS_generate_mipmap")) + { + SGIS_generate_mipmap = true; + extensions.Remove("glSGIS_generate_mipmap"); + } + if (extensions.Contains("gl_SGIS_multisample")) + { + SGIS_multisample = true; + extensions.Remove("glSGIS_multisample"); + } + if (extensions.Contains("gl_SGIS_pixel_texture")) + { + SGIS_pixel_texture = true; + extensions.Remove("glSGIS_pixel_texture"); + } + if (extensions.Contains("gl_SGIS_point_line_texgen")) + { + SGIS_point_line_texgen = true; + extensions.Remove("glSGIS_point_line_texgen"); + } + if (extensions.Contains("gl_SGIS_point_parameters")) + { + SGIS_point_parameters = true; + extensions.Remove("glSGIS_point_parameters"); + } + if (extensions.Contains("gl_SGIS_sharpen_texture")) + { + SGIS_sharpen_texture = true; + extensions.Remove("glSGIS_sharpen_texture"); + } + if (extensions.Contains("gl_SGIS_texture4D")) + { + SGIS_texture4D = true; + extensions.Remove("glSGIS_texture4D"); + } + if (extensions.Contains("gl_SGIS_texture_border_clamp")) + { + SGIS_texture_border_clamp = true; + extensions.Remove("glSGIS_texture_border_clamp"); + } + if (extensions.Contains("gl_SGIS_texture_color_mask")) + { + SGIS_texture_color_mask = true; + extensions.Remove("glSGIS_texture_color_mask"); + } + if (extensions.Contains("gl_SGIS_texture_edge_clamp")) + { + SGIS_texture_edge_clamp = true; + extensions.Remove("glSGIS_texture_edge_clamp"); + } + if (extensions.Contains("gl_SGIS_texture_filter4")) + { + SGIS_texture_filter4 = true; + extensions.Remove("glSGIS_texture_filter4"); + } + if (extensions.Contains("gl_SGIS_texture_lod")) + { + SGIS_texture_lod = true; + extensions.Remove("glSGIS_texture_lod"); + } + if (extensions.Contains("gl_SGIS_texture_select")) + { + SGIS_texture_select = true; + extensions.Remove("glSGIS_texture_select"); + } + if (extensions.Contains("gl_SGIX_async")) + { + SGIX_async = true; + extensions.Remove("glSGIX_async"); + } + if (extensions.Contains("gl_SGIX_async_histogram")) + { + SGIX_async_histogram = true; + extensions.Remove("glSGIX_async_histogram"); + } + if (extensions.Contains("gl_SGIX_async_pixel")) + { + SGIX_async_pixel = true; + extensions.Remove("glSGIX_async_pixel"); + } + if (extensions.Contains("gl_SGIX_blend_alpha_minmax")) + { + SGIX_blend_alpha_minmax = true; + extensions.Remove("glSGIX_blend_alpha_minmax"); + } + if (extensions.Contains("gl_SGIX_calligraphic_fragment")) + { + SGIX_calligraphic_fragment = true; + extensions.Remove("glSGIX_calligraphic_fragment"); + } + if (extensions.Contains("gl_SGIX_clipmap")) + { + SGIX_clipmap = true; + extensions.Remove("glSGIX_clipmap"); + } + if (extensions.Contains("gl_SGIX_convolution_accuracy")) + { + SGIX_convolution_accuracy = true; + extensions.Remove("glSGIX_convolution_accuracy"); + } + if (extensions.Contains("gl_SGIX_depth_pass_instrument")) + { + SGIX_depth_pass_instrument = true; + extensions.Remove("glSGIX_depth_pass_instrument"); + } + if (extensions.Contains("gl_SGIX_depth_texture")) + { + SGIX_depth_texture = true; + extensions.Remove("glSGIX_depth_texture"); + } + if (extensions.Contains("gl_SGIX_flush_raster")) + { + SGIX_flush_raster = true; + extensions.Remove("glSGIX_flush_raster"); + } + if (extensions.Contains("gl_SGIX_fog_offset")) + { + SGIX_fog_offset = true; + extensions.Remove("glSGIX_fog_offset"); + } + if (extensions.Contains("gl_SGIX_fragment_lighting")) + { + SGIX_fragment_lighting = true; + extensions.Remove("glSGIX_fragment_lighting"); + } + if (extensions.Contains("gl_SGIX_framezoom")) + { + SGIX_framezoom = true; + extensions.Remove("glSGIX_framezoom"); + } + if (extensions.Contains("gl_SGIX_igloo_interface")) + { + SGIX_igloo_interface = true; + extensions.Remove("glSGIX_igloo_interface"); + } + if (extensions.Contains("gl_SGIX_instruments")) + { + SGIX_instruments = true; + extensions.Remove("glSGIX_instruments"); + } + if (extensions.Contains("gl_SGIX_interlace")) + { + SGIX_interlace = true; + extensions.Remove("glSGIX_interlace"); + } + if (extensions.Contains("gl_SGIX_ir_instrument1")) + { + SGIX_ir_instrument1 = true; + extensions.Remove("glSGIX_ir_instrument1"); + } + if (extensions.Contains("gl_SGIX_list_priority")) + { + SGIX_list_priority = true; + extensions.Remove("glSGIX_list_priority"); + } + if (extensions.Contains("gl_SGIX_pixel_texture")) + { + SGIX_pixel_texture = true; + extensions.Remove("glSGIX_pixel_texture"); + } + if (extensions.Contains("gl_SGIX_pixel_tiles")) + { + SGIX_pixel_tiles = true; + extensions.Remove("glSGIX_pixel_tiles"); + } + if (extensions.Contains("gl_SGIX_polynomial_ffd")) + { + SGIX_polynomial_ffd = true; + extensions.Remove("glSGIX_polynomial_ffd"); + } + if (extensions.Contains("gl_SGIX_reference_plane")) + { + SGIX_reference_plane = true; + extensions.Remove("glSGIX_reference_plane"); + } + if (extensions.Contains("gl_SGIX_resample")) + { + SGIX_resample = true; + extensions.Remove("glSGIX_resample"); + } + if (extensions.Contains("gl_SGIX_scalebias_hint")) + { + SGIX_scalebias_hint = true; + extensions.Remove("glSGIX_scalebias_hint"); + } + if (extensions.Contains("gl_SGIX_shadow")) + { + SGIX_shadow = true; + extensions.Remove("glSGIX_shadow"); + } + if (extensions.Contains("gl_SGIX_shadow_ambient")) + { + SGIX_shadow_ambient = true; + extensions.Remove("glSGIX_shadow_ambient"); + } + if (extensions.Contains("gl_SGIX_sprite")) + { + SGIX_sprite = true; + extensions.Remove("glSGIX_sprite"); + } + if (extensions.Contains("gl_SGIX_subsample")) + { + SGIX_subsample = true; + extensions.Remove("glSGIX_subsample"); + } + if (extensions.Contains("gl_SGIX_tag_sample_buffer")) + { + SGIX_tag_sample_buffer = true; + extensions.Remove("glSGIX_tag_sample_buffer"); + } + if (extensions.Contains("gl_SGIX_texture_add_env")) + { + SGIX_texture_add_env = true; + extensions.Remove("glSGIX_texture_add_env"); + } + if (extensions.Contains("gl_SGIX_texture_coordinate_clamp")) + { + SGIX_texture_coordinate_clamp = true; + extensions.Remove("glSGIX_texture_coordinate_clamp"); + } + if (extensions.Contains("gl_SGIX_texture_lod_bias")) + { + SGIX_texture_lod_bias = true; + extensions.Remove("glSGIX_texture_lod_bias"); + } + if (extensions.Contains("gl_SGIX_texture_multi_buffer")) + { + SGIX_texture_multi_buffer = true; + extensions.Remove("glSGIX_texture_multi_buffer"); + } + if (extensions.Contains("gl_SGIX_texture_scale_bias")) + { + SGIX_texture_scale_bias = true; + extensions.Remove("glSGIX_texture_scale_bias"); + } + if (extensions.Contains("gl_SGIX_vertex_preclip")) + { + SGIX_vertex_preclip = true; + extensions.Remove("glSGIX_vertex_preclip"); + } + if (extensions.Contains("gl_SGIX_ycrcb")) + { + SGIX_ycrcb = true; + extensions.Remove("glSGIX_ycrcb"); + } + if (extensions.Contains("gl_SGIX_ycrcb_subsample")) + { + SGIX_ycrcb_subsample = true; + extensions.Remove("glSGIX_ycrcb_subsample"); + } + if (extensions.Contains("gl_SGIX_ycrcba")) + { + SGIX_ycrcba = true; + extensions.Remove("glSGIX_ycrcba"); + } + if (extensions.Contains("gl_SGI_color_matrix")) + { + SGI_color_matrix = true; + extensions.Remove("glSGI_color_matrix"); + } + if (extensions.Contains("gl_SGI_color_table")) + { + SGI_color_table = true; + extensions.Remove("glSGI_color_table"); + } + if (extensions.Contains("gl_SGI_texture_color_table")) + { + SGI_texture_color_table = true; + extensions.Remove("glSGI_texture_color_table"); + } + if (extensions.Contains("gl_SUNX_constant_data")) + { + SUNX_constant_data = true; + extensions.Remove("glSUNX_constant_data"); + } + if (extensions.Contains("gl_SUN_convolution_border_modes")) + { + SUN_convolution_border_modes = true; + extensions.Remove("glSUN_convolution_border_modes"); + } + if (extensions.Contains("gl_SUN_global_alpha")) + { + SUN_global_alpha = true; + extensions.Remove("glSUN_global_alpha"); + } + if (extensions.Contains("gl_SUN_mesh_array")) + { + SUN_mesh_array = true; + extensions.Remove("glSUN_mesh_array"); + } + if (extensions.Contains("gl_SUN_slice_accum")) + { + SUN_slice_accum = true; + extensions.Remove("glSUN_slice_accum"); + } + if (extensions.Contains("gl_SUN_triangle_list")) + { + SUN_triangle_list = true; + extensions.Remove("glSUN_triangle_list"); + } + if (extensions.Contains("gl_SUN_vertex")) + { + SUN_vertex = true; + extensions.Remove("glSUN_vertex"); + } + if (extensions.Contains("gl_WIN_phong_shading")) + { + WIN_phong_shading = true; + extensions.Remove("glWIN_phong_shading"); + } + if (extensions.Contains("gl_WIN_specular_fog")) + { + WIN_specular_fog = true; + extensions.Remove("glWIN_specular_fog"); + } + + #endregion checkGLextensions + } + + internal static void CheckCoreVersion( + int majorVersion, + int minorVersion + ) + { + if (majorVersion < 3) { + throw new InvalidOperationException( + "StgSharp does not support OpenGL immediate mode."); + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 0))) + { + core10 = true; + } else + { + goto log; + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 1))) + { + core11 = true; + } else + { + goto log; + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 2))) + { + core12 = true; + } else + { + goto log; + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 3))) + { + core13 = true; + } else + { + goto log; + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 4))) + { + core14 = true; + } else + { + goto log; + } + + if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 5))) + { + core15 = true; + } else + { + goto log; + } + + if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 0))) + { + core20 = true; + } else + { + goto log; + } + + if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 1))) + { + core21 = true; + } else + { + goto log; + } + + if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 0))) + { + core30 = true; + } else + { + goto log; + } + + if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 1))) + { + core31 = true; + } else + { + goto log; + } + + if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 2))) + { + core32 = true; + } else + { + goto log; + } + + if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 3))) + { + core33 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 0))) + { + core40 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 1))) + { + core41 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 2))) + { + core42 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 3))) + { + core43 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 4))) + { + core44 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 5))) + { + core45 = true; + } else + { + goto log; + } + + if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 6))) + { + core46 = true; + } else + { + goto log; + } + + log: + { + DefaultLog.InternalWriteLog("Find core OpenGL version.", LogType.Info); + return; + } + } + + internal static unsafe string GetExtensions( + this OpenglContext context + ) + { + if (context.glGetString == null) { + return string.Empty; + } + return Marshal.PtrToStringAnsi((nint)context.glGetString(glExtension))!; + } + + } +} \ No newline at end of file diff --git a/src/StgSharp.Graphics/OpenGL/glRenderObjectGenrator.cs b/src/StgSharp.Graphics/.discard/OpenGL.glRenderObjectGenrator.cs.old similarity index 99% rename from src/StgSharp.Graphics/OpenGL/glRenderObjectGenrator.cs rename to src/StgSharp.Graphics/.discard/OpenGL.glRenderObjectGenrator.cs.old index 5edf3a2a..8039631e 100644 --- a/src/StgSharp.Graphics/OpenGL/glRenderObjectGenrator.cs +++ b/src/StgSharp.Graphics/.discard/OpenGL.glRenderObjectGenrator.cs.old @@ -111,4 +111,4 @@ namespace StgSharp.Graphics.OpenGL } } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/glRenderStream.ThreadSecurity.cs b/src/StgSharp.Graphics/.discard/OpenGL.glRenderStream.ThreadSecurity.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/glRenderStream.ThreadSecurity.cs rename to src/StgSharp.Graphics/.discard/OpenGL.glRenderStream.ThreadSecurity.cs.old diff --git a/src/StgSharp.Graphics/OpenGL/glType.cs b/src/StgSharp.Graphics/.discard/OpenGL.glType.cs.old similarity index 100% rename from src/StgSharp.Graphics/OpenGL/glType.cs rename to src/StgSharp.Graphics/.discard/OpenGL.glType.cs.old diff --git a/src/StgSharp.Graphics/Pixels.cs b/src/StgSharp.Graphics/.discard/Pixels.cs.old similarity index 100% rename from src/StgSharp.Graphics/Pixels.cs rename to src/StgSharp.Graphics/.discard/Pixels.cs.old diff --git a/src/StgSharp.Graphics/.discard/README.md b/src/StgSharp.Graphics/.discard/README.md new file mode 100644 index 00000000..6c6aadc7 --- /dev/null +++ b/src/StgSharp.Graphics/.discard/README.md @@ -0,0 +1,67 @@ +# StgSharp.Graphics retired sources + +This directory contains source snapshots retired during the Graphics/OpenGL +reorganization on 2026-08-26. Files use the `.cs.old` suffix so that SDK-style +project globbing does not compile them. + +## Retired without an active replacement + +- `framework.cs.old`: unused GL/debug delegate declarations. +- `Vulkan.*.cs.old`: unreferenced Vulkan placeholders. +- `OpenGL.glRenderStream.ThreadSecurity.cs.old`: unused thread/context fields. +- `OpenGL.Generated.GlCommandHistory.g.cs.old`: generator report data that does + not belong in the runtime assembly. + +## Split before retirement + +- `gl.cs.old`: image P/Invokes were temporarily split out and later retired; + legacy OpenGL native helpers were replaced with direct calls through the + OpenGL function table. +- `glfw.dtruct.cs.old`: reduced to the four opaque GLFW types currently used by + the wrapper in `glfw.struct.cs`. +- `OpenGL.glType.cs.old`: only `glSync` remains active in `OpenGL/glSync.cs`. +- `ShaderEdit.ShaderGenerator.cs.old`: only the temporary + `InternalShaderType` compatibility enum remains active. +- `GraphicInitializer.cs.old`: merged into the correctly named `GraphicModule` + in `glfw.cs`. +- `OpenGL.glApiManager.cs.old` and `OpenGL.glApiManager.Const.cs.old`: the active + compatibility loader retains only core-version loading; the unused extension + classification table and 619 write-only flags were retired. + +## Retired during the image simplification + +- `Image.cs.old`: the former image/decoder/OpenGL-format aggregate. +- `ImageInfo.cs.old` and `Image.Native.cs.old`: the mismatched native decoder + state and its P/Invoke bridge. +- `Pixels.cs.old`: the unused and incorrectly sized legacy pixel abstraction. +- `CPUanimation.ImageHelper.cs.old`: incomplete resizing and movement logic; + image transformations now belong to a caller-selected codec or image library. +- `CPUanimation.IImageProvider.cs.old`: the redundant image-returns-itself + provider contract. +- `TexturePipeline.cs.old`: an unused pipeline payload tied to the retired + non-generic image type. +- `OpenGL.Buffer.AutoTexture.cs.old`: the unused texture cache depended on image + mutation counters and also contained incorrect slot/recycling bookkeeping. + +## Retired during the data-only OpenGL resource migration + +- `Define.BufferObjectBase.cs.old` and + `OpenGL.Buffer.GLBufferObjectBase.cs.old`: the former resource base classes + injected `glRender`/`OpenGLFunction` and attempted context-bound disposal from + resource objects and finalizers. +- `OpenGL.glRenderObjectGenrator.cs.old`: the former factories implicitly + created resources through a render-stream instance. +- `OpenGL.ShaderEdit.IglConvertable.cs.old`, `ShaderEdit.ShaderStruct.cs.old`, + and `ShaderEdit.InternalShaderType.cs.old`: the obsolete shader conversion + layer submitted uniforms through the global `CurrentGL` context. + +Active OpenGL resource and shader types are passive handle records. Creation, +binding, upload, compilation, use, and deletion are explicitly submitted to an +`OpenGLFunction` instance. + +The active `Image` is only a tightly packed managed bitmap buffer. It +does not load files, convert formats, resize pixels, or retain native memory. + +These files are historical references, not candidates for restoration as a +group. Restore individual behavior only after checking it against the new +Graphics and OpenGL architecture. diff --git a/src/StgSharp.Graphics/.discard/ShaderEdit.InternalShaderType.cs.old b/src/StgSharp.Graphics/.discard/ShaderEdit.InternalShaderType.cs.old new file mode 100644 index 00000000..cb7f3ee5 --- /dev/null +++ b/src/StgSharp.Graphics/.discard/ShaderEdit.InternalShaderType.cs.old @@ -0,0 +1,37 @@ +// ----------------------------------------------------------------------------- +// file="InternalShaderType" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +namespace StgSharp.Graphics.ShaderEdit +{ + // Temporary compatibility type for ShaderStruct. The new shader model will replace it. + public enum InternalShaderType + { +#pragma warning disable CS1591 + Struct, + Void, + Int, + UInt, + Float, + Double, + Vector2, + Vector3, + Vector4, + VectorD2, + VectorD3, + VectorD4, + Matrix2x2, + Matrix2x3, + Matrix2x4, + Matrix3x2, + Matrix3x3, + Matrix3x4, + Matrix4x2, + Matrix4x3, + Matrix4x4, +#pragma warning restore CS1591 + } +} diff --git a/src/StgSharp.Graphics/ShaderEdit/ShaderGenerator.cs b/src/StgSharp.Graphics/.discard/ShaderEdit.ShaderGenerator.cs.old similarity index 100% rename from src/StgSharp.Graphics/ShaderEdit/ShaderGenerator.cs rename to src/StgSharp.Graphics/.discard/ShaderEdit.ShaderGenerator.cs.old diff --git a/src/StgSharp.Graphics/ShaderEdit/ShaderStruct.cs b/src/StgSharp.Graphics/.discard/ShaderEdit.ShaderStruct.cs.old similarity index 100% rename from src/StgSharp.Graphics/ShaderEdit/ShaderStruct.cs rename to src/StgSharp.Graphics/.discard/ShaderEdit.ShaderStruct.cs.old diff --git a/src/StgSharp.Graphics/TexturePipeline.cs b/src/StgSharp.Graphics/.discard/TexturePipeline.cs.old similarity index 100% rename from src/StgSharp.Graphics/TexturePipeline.cs rename to src/StgSharp.Graphics/.discard/TexturePipeline.cs.old diff --git a/src/StgSharp.Graphics/Vulkan/vkEnum.cs b/src/StgSharp.Graphics/.discard/Vulkan.vkEnum.cs.old similarity index 100% rename from src/StgSharp.Graphics/Vulkan/vkEnum.cs rename to src/StgSharp.Graphics/.discard/Vulkan.vkEnum.cs.old diff --git a/src/StgSharp.Graphics/Vulkan/vkHandle.cs b/src/StgSharp.Graphics/.discard/Vulkan.vkHandle.cs.old similarity index 100% rename from src/StgSharp.Graphics/Vulkan/vkHandle.cs rename to src/StgSharp.Graphics/.discard/Vulkan.vkHandle.cs.old diff --git a/src/StgSharp.Graphics/framework.cs b/src/StgSharp.Graphics/.discard/framework.cs.old similarity index 100% rename from src/StgSharp.Graphics/framework.cs rename to src/StgSharp.Graphics/.discard/framework.cs.old diff --git a/src/StgSharp.Graphics/gl.cs b/src/StgSharp.Graphics/.discard/gl.cs.old similarity index 100% rename from src/StgSharp.Graphics/gl.cs rename to src/StgSharp.Graphics/.discard/gl.cs.old diff --git a/src/StgSharp.Graphics/glfw.dtruct.cs b/src/StgSharp.Graphics/.discard/glfw.dtruct.cs.old similarity index 100% rename from src/StgSharp.Graphics/glfw.dtruct.cs rename to src/StgSharp.Graphics/.discard/glfw.dtruct.cs.old diff --git a/src/StgSharp.Graphics/Camera.cs b/src/StgSharp.Graphics/Camera.cs index a8dd0718..0f7c1393 100644 --- a/src/StgSharp.Graphics/Camera.cs +++ b/src/StgSharp.Graphics/Camera.cs @@ -5,14 +5,11 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics.OpenGL; -using StgSharp.Graphics.ShaderEdit; - using System; namespace StgSharp.Mathematics.Graphics { - public sealed class Camera : IglConvertable + public sealed class Camera { private bool _isLookAtAvailable; @@ -24,7 +21,6 @@ namespace StgSharp.Mathematics.Graphics internal Radius _pitch; internal Radius _row; internal Radius _yaw; - internal Uniform convertedUniform; internal Vec3 _target, up; public Camera() @@ -75,36 +71,6 @@ namespace StgSharp.Mathematics.Graphics return Projection * View; } - public void DisplayGLtypeDefinition() - { - Console.WriteLine("uniform matrix4x4 cameraName;"); - } - - /// - /// Get all uniform related to this . - /// - /// - /// Shader program requires this camera. - /// - /// - /// ContextName of all related uniforms. If you fallow form from - /// - /// - /// - /// - public unsafe void GainAllUniforms( - ShaderProgram source, - params string[] uniformName - ) - { - if ((uniformName is null) || (uniformName.Length != 1)) { - throw new ArgumentException( - "Camera needs exactly one uniform.", nameof(uniformName)); - } - convertedUniform = source.GetUniform(uniformName[0]); - } - public void MoveNear( float distance ) @@ -129,12 +95,6 @@ namespace StgSharp.Mathematics.Graphics _isLookAtAvailable = false; } - public unsafe void SetAllUniforms() - { - // Console.WriteLine(Projection * ViewBase); - OpenGLFunction.CurrentGL.SetUniformValue(convertedUniform, Projection * View); - } - public void SetViewDirection( Vec3 position, Vec3 target, @@ -212,13 +172,6 @@ namespace StgSharp.Mathematics.Graphics } } - ShaderStruct IglConvertable.GetConvertedGLtype() - { - throw new NotImplementedException(); - } - - ~Camera() { } - #region rotation public void Yaw( diff --git a/src/StgSharp.Graphics/Image.cs b/src/StgSharp.Graphics/Image.cs index 61ef26bd..9251e66b 100644 --- a/src/StgSharp.Graphics/Image.cs +++ b/src/StgSharp.Graphics/Image.cs @@ -5,172 +5,102 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics.OpenGL; - using System; -using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace StgSharp.Graphics { - public class Image : IImageProvider + /// + /// Owns a tightly packed, two-dimensional managed pixel buffer. + /// + /// + /// Unmanaged storage layout of one pixel. + /// + public sealed class Image where TPixel : unmanaged { - private byte[] _data; - private ImageInfo _rawInfo; - private int _pixelUpdateCount = 0; + private readonly TPixel[] _pixels; - internal unsafe Image() - { - _rawInfo = new ImageInfo(); - } + public Image( + int width, + int height + ) : this(width, height, new TPixel[GetRequiredPixelCount(width, height)]) { } - internal Image( - ImageInfo information - ) - { - _rawInfo = information; - _data = []; - - // int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel; - } - - public (int width, int height) Size => (_rawInfo.Width, _rawInfo.Height); - - public byte[] PixelBuffer - { - get - { - if ((_data.Length == 0) || (_data == null)) - { - GetBytes(); - return _data!; - } - return _data; - } - } - - public ImageChannel Channel => _rawInfo.Channel; + public Image( + (int width, int height) size + ) : this(size.width, size.height) { } /// - /// Hash code of time pixels updated last time. + /// Wraps without copying it. /// - public int PixelUpdateCount - { - get => _pixelUpdateCount; - internal set => _pixelUpdateCount = value; - } - - public int ChannelCount => _rawInfo.ChannelCount; - - public int Height - { - get => _rawInfo.Height; - internal set => _rawInfo.Height = value; - } - - public int Width - { - get => _rawInfo.Width; - internal set => _rawInfo.Width = value; - } - - public int PixelSize => ImageInfo.GetPixelSize(_rawInfo.pixelLayout, _rawInfo.Channel); - - public PixelChannelLayout PixelLayout - { - get => _rawInfo.pixelLayout; - private set => _rawInfo.pixelLayout = value; - } - - internal ref byte[] Data => ref _data; - - public void FromBytes( - byte[] stream - ) { } - - public static unsafe Image FromFile( - string route, - ImageLoader loader + public Image( + int width, + int height, + TPixel[] pixels ) { - Image ret = new Image(); - fixed (ImageInfo* iptr = &ret._rawInfo) { - GraphicFramework.InternalLoadImage(route, iptr, loader); + ArgumentNullException.ThrowIfNull(pixels); + + int requiredLength = GetRequiredPixelCount(width, height); + if (pixels.Length != requiredLength) + { + throw new ArgumentException( + $"Pixel buffer length must be exactly {requiredLength}, but was {pixels.Length}.", + nameof(pixels)); } - return ret; + + Width = width; + Height = height; + _pixels = pixels; } - public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - byte[] stream + public Image( + (int width, int height) size, + TPixel[] pixels + ) : this(size.width, size.height, pixels) { } + + /// + /// Gets a writable byte view over the pixel buffer without copying it. + /// + public Span Bytes => MemoryMarshal.AsBytes(_pixels.AsSpan()); + + public int ByteLength => Bytes.Length; + + public int Height { get; } + + public int PixelCount => _pixels.Length; + + /// + /// Gets a writable typed view over the pixel buffer without copying it. + /// + public Span Pixels => _pixels; + + public ReadOnlySpan ReadOnlyBytes => MemoryMarshal.AsBytes(_pixels.AsSpan()); + + public ReadOnlySpan ReadOnlyPixels => _pixels; + + public (int width, int height) Size => (Width, Height); + + public int Width { get; } + + public static explicit operator Span( + Image image ) { - ImageInfo _info = new ImageInfo - { - Height = size.height, - Width = size.width, - Channel = channel, - StreamPtr = IntPtr.Zero - }; - Image ret = new Image(_info); - ret.PixelLayout = PixelChannelLayout.Byte; - ret._data = stream; - return ret; + ArgumentNullException.ThrowIfNull(image); + return image.Bytes; } - public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - PixelChannelLayout layout, - byte[] stream + private static int GetRequiredPixelCount( + int width, + int height ) { - ImageInfo _info = new ImageInfo - { - Height = size.height, - Width = size.width, - Channel = channel, - StreamPtr = IntPtr.Zero - }; - Image ret = new Image(_info); - ret.PixelLayout = layout; - ret._data = stream; - return ret; - } + ArgumentOutOfRangeException.ThrowIfNegative(width); + ArgumentOutOfRangeException.ThrowIfNegative(height); - public unsafe byte[] GetBytes() - { - if (_data.Length == 0) - { - int size = Width * Height * ImageInfo.GetPixelSize(PixelLayout, Channel); - _data = new Span((byte*)_rawInfo.StreamPtr, size).ToArray(); - fixed (ImageInfo* pptr = &_rawInfo) { - GraphicFramework.InternalUnloadImage(pptr); - } - _rawInfo.StreamPtr = IntPtr.Zero; - } - return _data; - } - - public Image ProvideImage() - { - return this; - } - - internal static Image FromMemory( - ImageInfo info, - byte[] data, - int operationCount - ) - { - return new Image - { - _rawInfo = info, - _data = data, - _pixelUpdateCount = operationCount - }; + return checked(width * height); } } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs index 3149e911..82b556d7 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs @@ -5,13 +5,8 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Numeric; - using System; -using System.Diagnostics.CodeAnalysis; -using System.Numerics; using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; namespace StgSharp.Graphics.OpenGL { @@ -28,136 +23,51 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffer( - GlHandle handle + public void DeleteBuffer( + GlHandle handle ) { - _context->glDeleteBuffers(1, (uint*)&handle); + _context->glDeleteBuffers(1, &handle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffers( - GlHandle[] handle + public void DeleteBuffers( + ReadOnlySpan handles ) { - if ((handle == null) || (handle.Length == 0)) { - throw new ArgumentNullException(nameof(handle)); - } - fixed (GlHandle* hptr = handle) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < handle.Length; i++) { - _context->glDeleteBuffers(1, iptr + i); - } + fixed (GlHandle* handlesPtr = handles) { + _context->glDeleteBuffers(handles.Length, (uint*)handlesPtr); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenBuffers( - int count + public GlHandle[] GenBuffers( + int count ) { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - for (int i = 0; i < count; i++) { - _context->glGenBuffers(count, ((uint*)hptr) + i); - } + ArgumentOutOfRangeException.ThrowIfNegative(count); + + GlHandle[] handles = new GlHandle[count]; + if (handles.Length == 0) { + return handles; } - return h; + + fixed (GlHandle* handlesPtr = handles) { + _context->glGenBuffers(count, (uint*)handlesPtr); + } + return handles; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData( - BufferType bufferType, - T bufferData, - BufferUsage usage - ) where T : unmanaged, INumber + public void SetBufferData( + BufferType bufferType, + ReadOnlySpan bufferData, + BufferUsage usage + ) where T : unmanaged { - int size = Marshal.SizeOf(); - T* p = &bufferData; - _context->glBufferData((uint)bufferType, size, (nint*)p, (uint)usage); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData( - BufferType bufferType, - [NotNull] T[] bufferArray, - BufferUsage usage - ) where T : unmanaged, INumber - { - int size = bufferArray.Length * Marshal.SizeOf(); - if (bufferArray == null) { - return; - } - - fixed (void* bufferPtr = bufferArray) { - _context->glBufferData((uint)bufferType, size, (nint*)bufferPtr, (uint)usage); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData( - BufferType bufferType, - ReadOnlySpan bufferSpan, - BufferUsage usage - ) where T : unmanaged, INumber - { - int size = bufferSpan.Length * Marshal.SizeOf(); - if (bufferSpan.IsEmpty) { - return; - } - - fixed (void* bufferPtr = bufferSpan) { - _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData( - BufferType bufferType, - Span bufferArray, - BufferUsage usage - ) where T : unmanaged, INumber - { - int size = bufferArray.Length * Marshal.SizeOf(); - if (bufferArray.IsEmpty) { - return; - } - - fixed (void* bufferPtr = bufferArray) { - _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData( - BufferType bufferType, - ReadOnlySpan bufferSpan, - BufferUsage usage - ) where T : unmanaged, IUnmanagedVector - { - int size = bufferSpan.Length * Marshal.SizeOf(); - - fixed (void* bufferPtr = bufferSpan) { - _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData( - BufferType bufferType, - T[] bufferArray, - BufferUsage usage - ) where T : unmanaged, IUnmanagedVector - { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) { - return; - } - fixed (void* bufferPtr = bufferArray) { - _context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, - (uint)usage); + nint sizeInBytes = checked((nint)bufferData.Length * sizeof(T)); + fixed (T* bufferPtr = bufferData) { + _context->glBufferData((uint)bufferType, sizeInBytes, bufferPtr, (uint)usage); } } diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs index 25981988..ee2a6488 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs @@ -19,11 +19,26 @@ namespace StgSharp.Graphics.OpenGL Span framebuffers ) { + if (framebuffers.IsEmpty) { + return; + } + fixed (GlHandle* framebuffersPtr = framebuffers) { Context.glGenFramebuffers(framebuffers.Length, (uint*)framebuffersPtr); } } + /// Delete framebuffer object handles. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteFramebuffers( + ReadOnlySpan framebuffers + ) + { + fixed (GlHandle* framebuffersPtr = framebuffers) { + Context.glDeleteFramebuffers(framebuffers.Length, (uint*)framebuffersPtr); + } + } + /// /// Bind a framebuffer object to a framebuffer target. /// @@ -73,6 +88,17 @@ namespace StgSharp.Graphics.OpenGL _context->glDeleteRenderbuffers(1, &bufferHandle.Value); } + /// Delete renderbuffer object handles. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteRenderbuffers( + ReadOnlySpan renderbuffers + ) + { + fixed (GlHandle* renderbuffersPtr = renderbuffers) { + Context.glDeleteRenderbuffers(renderbuffers.Length, (uint*)renderbuffersPtr); + } + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void FrameBufferTexture2d( FrameBufferTarget target, @@ -91,7 +117,13 @@ namespace StgSharp.Graphics.OpenGL int count ) { + ArgumentOutOfRangeException.ThrowIfNegative(count); + GlHandle[] h = new GlHandle[count]; + if (h.Length == 0) { + return h; + } + fixed (GlHandle* hptr = h) { _context->glGenRenderbuffers(count, (uint*)hptr); } diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs index b76a5762..84e2a5a7 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs @@ -5,11 +5,8 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; - using System; using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Graphics.OpenGL @@ -18,114 +15,179 @@ namespace StgSharp.Graphics.OpenGL { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle CreateGraphicProgram() + public GlHandle CreateGraphicProgram() { - return GlHandle.Create(_context->glCreateProgram()); + return CreateProgram(); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] CreateProgram( - int count + public GlHandle[] CreateProgram( + int count ) { - GlHandle[] h = new GlHandle[count]; - for (int i = 0; i < count; i++) { - h.SetValue(i, _context->glCreateProgram()); + ArgumentOutOfRangeException.ThrowIfNegative(count); + + GlHandle[] handles = new GlHandle[count]; + for (int i = 0; i < handles.Length; i++) { + handles[i] = CreateProgram(); } - return h; + return handles; } [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateShader( + ShaderType type + ) + { + GlHandle handle = CreateShader((uint)type); + if (handle.Value == 0) + { + uint error = _context->glGetError(); + throw new InvalidOperationException($"Failed in creating shader: {error}"); + } + return handle; + } + public GlHandle[] CreateShaderSet( int count, ShaderType type ) { - GlHandle[] ret = new GlHandle[count]; - uint t = (uint)type; - for (int i = 0; i < count; i++) - { - uint id = _context->glCreateShader(t); - if (id == 0) - { - uint error = _context->glGetError(); - throw new InvalidOperationException($"Failed in creating shader: {error}"); - } - ret[i] = GlHandle.Create(id); + ArgumentOutOfRangeException.ThrowIfNegative(count); + + GlHandle[] handles = new GlHandle[count]; + for (int i = 0; i < handles.Length; i++) { + handles[i] = CreateShader(type); } - return ret; + return handles; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string GetShaderStatus( + GlHandle shader, + ShaderStatus status + ) + { + return GetShaderStatus(shader, (uint)status); } public string GetShaderStatus( - Shader s, - int index, - int key + GlHandle shader, + uint statusName ) { - IntPtr sptr = IntPtr.Zero; - if (GraphicFramework.glCheckShaderStatus(ref Context, s.handle[index].Value, key, - ref sptr) == 0) { - return Marshal.PtrToStringAnsi(sptr) ?? string.Empty; + int status; + _context->glGetShaderiv(shader.Value, statusName, &status); + if (status != 0) { + return string.Empty; } - return string.Empty; - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle GetUniformLocation( - GlHandle program, - string name - ) - { - byte[] code = Encoding.UTF8.GetBytes(name); - fixed (byte* ptr = code) + int logLength; + _context->glGetShaderiv(shader.Value, glConst.INFO_LOG_LENGTH, &logLength); + if (logLength <= 1) { + return string.Empty; + } + + byte[] log = new byte[logLength]; + fixed (byte* logPtr = log) { - int ret = _context->glGetUniformLocation(program.Value, ptr); - #if DEBUG - if (ret is glConst.INVALID_OPERATION or glConst.INVALID_VALUE) - { - throw new InvalidOperationException(); - } - if (ret == -1) { - throw new UniformEmptyReferenceException(nameof(program), name); - } - #endif - return GlHandle.CreateSigned(ret); + int written; + _context->glGetShaderInfoLog(shader.Value, log.Length, &written, logPtr); + return Encoding.UTF8.GetString(log, 0, Math.Clamp(written, 0, log.Length)); } } + public GlHandle GetUniformLocation( + GlHandle program, + string name + ) + { + ArgumentNullException.ThrowIfNull(name); + + int byteCount = Encoding.UTF8.GetByteCount(name); + Span utf8Name = byteCount < 256 + ? stackalloc byte[byteCount + 1] + : new byte[byteCount + 1]; + int written = Encoding.UTF8.GetBytes(name.AsSpan(), utf8Name); + utf8Name[written] = 0; + + int location; + fixed (byte* namePtr = utf8Name) { + location = _context->glGetUniformLocation(program.Value, namePtr); + } + + #if DEBUG + if (location == -1) { + throw new UniformEmptyReferenceException(nameof(program), name); + } + #endif + + return GlHandle.CreateSigned(location); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - byte[] codeStream - ) + public Uniform GetUniform( + GlHandle program, + string name + ) where T : unmanaged { - fixed (byte* streamPtr = codeStream) { - _context->glShaderSource(shaderHandle.Value, 1, &streamPtr, (int*)0); - } + return new Uniform(GetUniformLocation(program, name)); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - ReadOnlySpan codeStream - ) + public Uniform GetUniform( + GlHandle program, + string name + ) where T : unmanaged where U : struct { - fixed (char* streamPtr = codeStream) { - _context->glShaderSource(shaderHandle.Value, 1, (byte**)&streamPtr, (int*)0); - } + return new Uniform(GetUniformLocation(program, name)); } - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - ReadOnlySpan codeStream + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public Uniform GetUniform( + GlHandle program, + string name + ) where T : unmanaged where U : struct where V : struct + { + return new Uniform(GetUniformLocation(program, name)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public Uniform GetUniform( + GlHandle program, + string name + ) where T : unmanaged where U : struct where V : struct where W : struct + { + return new Uniform(GetUniformLocation(program, name)); + } + + public void ShaderSource( + GlHandle shader, + ReadOnlySpan source ) { - fixed (byte* streamPtr = codeStream) + int length = source.Length; + fixed (byte* sourcePtr = source) { - byte* bptr = streamPtr; - _context->glShaderSource(shaderHandle.Value, 1, &bptr, (int*)0); + byte emptySource = 0; + byte* sourceAddress = sourcePtr == null ? &emptySource : sourcePtr; + _context->glShaderSource(shader.Value, 1, &sourceAddress, &length); } } + public void ShaderSource( + GlHandle shader, + string source + ) + { + ArgumentNullException.ThrowIfNull(source); + + int byteCount = Encoding.UTF8.GetByteCount(source); + Span utf8Source = byteCount < 1024 + ? stackalloc byte[byteCount] + : new byte[byteCount]; + int written = Encoding.UTF8.GetBytes(source.AsSpan(), utf8Source); + ShaderSource(shader, utf8Source[..written]); + } + } } diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs index ed644a4a..35d32420 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs @@ -5,10 +5,7 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; - using System; -using System.Numerics; using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL @@ -29,25 +26,42 @@ namespace StgSharp.Graphics.OpenGL int count ) { + ArgumentOutOfRangeException.ThrowIfNegative(count); + GlHandle[] h = new GlHandle[count]; + if (h.Length == 0) { + return h; + } + fixed (GlHandle* hptr = h) { _context->glGenTextures(count, (uint*)hptr); } return h; } + /// Delete texture object handles. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTextures( + ReadOnlySpan textures + ) + { + fixed (GlHandle* texturesPtr = textures) { + Context.glDeleteTextures(textures.Length, (uint*)texturesPtr); + } + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void GetTextureImage( Texture2DTarget target, int level, - ImageChannel channel, + FrameBufferChannel channel, PixelChannelLayout channelLayout, - T[] dataStream - ) where T : unmanaged, INumber + Span destination + ) where T : unmanaged { - fixed (T* tptr = dataStream) { + fixed (T* tptr = destination) { _context->glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, - (nint*)tptr); + tptr); } } @@ -65,73 +79,50 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReadPixels( + public void ReadPixels( (int X, int Y) beginPosition, (int width, int height) size, FrameBufferChannel format, PixelChannelLayout dataType, - ref byte[] stream - ) + Span destination + ) where T : unmanaged { - fixed (byte* bptr = stream) { + fixed (T* destinationPtr = destination) { _context->glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, - (uint)format, (uint)dataType, (nint*)bptr); + (uint)format, (uint)dataType, destinationPtr); } } - public void RereadImage( - in Image i, - (int X, int Y) beginPosition, + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureImage2d( + Texture2DTarget target, + int level, + int internalFormat, + int width, + int height, FrameBufferChannel format, - PixelChannelLayout dataType + PixelChannelLayout type ) { - byte[] pixels = i.PixelBuffer; - if (!pixels.CheckArrayFormat(dataType)) { - throw new GlArrayFormatException(dataType, "i.PixelArray"); - } - fixed (byte* bptr = pixels) { - _context->glReadPixels(beginPosition.X, beginPosition.Y, i.Width, i.Height, - (uint)format, (uint)dataType, (nint*)bptr); - } - i.PixelUpdateCount++; + _context->glTexImage2D((uint)target, level, internalFormat, width, height, 0, + (uint)format, (uint)type, (void*)0); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void TextureImage2d( Texture2DTarget target, int level, - ImageChannel sourceChannel, + int internalFormat, int width, int height, - ImageChannel targetChannel, + FrameBufferChannel format, PixelChannelLayout type, - T[] pixels - ) where T : unmanaged, INumber + ReadOnlySpan pixels + ) where T : unmanaged { - fixed (T* tptr = pixels) - { - T* ptr = ((pixels == null) || (pixels.Length == 0)) ? (T*)IntPtr.Zero : tptr; - _context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, - (uint)targetChannel, (uint)type, (nint*)tptr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d( - Texture2DTarget target, - int level, - ImageChannel sourceChannel, - int width, - int height, - ImageChannel targetChannel, - PixelChannelLayout type, - Span pixelSpan - ) where T : unmanaged, INumber - { - fixed (T* tPtr = pixelSpan) { - _context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, - (uint)targetChannel, (uint)type, (nint*)tPtr); + fixed (T* pixelPtr = pixels) { + _context->glTexImage2D((uint)target, level, internalFormat, width, height, 0, + (uint)format, (uint)type, pixelPtr); } } diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs index 99188f77..cf2f4114 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs @@ -25,15 +25,11 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void DeleteVertexArrays( - GlHandle[] arrays + ReadOnlySpan arrays ) { - fixed (GlHandle* hptr = arrays) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < arrays.Length; i++) { - _context->glDeleteVertexArrays(1, iptr + i); - } + fixed (GlHandle* arraysPtr = arrays) { + _context->glDeleteVertexArrays(arrays.Length, (uint*)arraysPtr); } } @@ -41,7 +37,13 @@ namespace StgSharp.Graphics.OpenGL int count ) { + ArgumentOutOfRangeException.ThrowIfNegative(count); + GlHandle[] h = new GlHandle[count]; + if (h.Length == 0) { + return h; + } + fixed (GlHandle* hptr = h) { _context->glGenVertexArrays(count, (uint*)hptr); } @@ -58,7 +60,18 @@ namespace StgSharp.Graphics.OpenGL int pointer ) { - uint type = GraphicFramework.GLtype[(int)t]; + uint type = t switch + { + TypeCode.Single => glConst.FLOAT, + TypeCode.Int32 => glConst.INT, + TypeCode.UInt32 => glConst.UNSIGNED_INT, + TypeCode.Int16 => glConst.SHORT, + TypeCode.UInt16 => glConst.UNSIGNED_SHORT, + TypeCode.SByte => glConst.BYTE, + TypeCode.Byte => glConst.UNSIGNED_BYTE, + _ => throw new ArgumentOutOfRangeException(nameof(t), t, + "The type cannot be used as an OpenGL vertex attribute."), + }; _context->glVertexAttribPointer(index, size, type, (byte)(normalized ? 1 : 0), stride, (nint*)pointer); _context->glEnableVertexAttribArray(index); diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/EBO.cs b/src/StgSharp.Graphics/OpenGL/Buffer/EBO.cs index 53de43dc..24f67dbe 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/EBO.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/EBO.cs @@ -5,72 +5,17 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using StgSharp.Graphics.OpenGL; - -using StgSharp.Mathematics; - -using System; -using System.Collections.Generic; -using System.Numerics; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Text; - namespace StgSharp.Graphics.OpenGL { - /// - /// A collection of handle to Element BufferHandle Object in OpenglFunc. Each value indexed from instance of this class this is the only handle to - /// one Element BufferHandle Object. - /// - public sealed unsafe class ElementBuffer : GlBufferObjectBase + /// A set of OpenGL element-buffer handles. + public sealed record class ElementBuffer( + GlHandle[] Handles + ) { - internal ElementBuffer( - int n, - glRender binding - ) - : base(binding) - { - _bufferHandle = GL.GenBuffers(n); - } + public int Count => Handles.Length; - public sealed override void Bind( - int index - ) - { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); - } - - public void SetValue( - int index, - T[] bufferArray, - BufferUsage usage - ) where T : unmanaged, INumber - { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ElementArrayBuffer, bufferArray, usage); - } - - public void SetValue( - int index, - ReadOnlySpan bufferSpan, - BufferUsage usage - ) where T : unmanaged, INumber - { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ElementArrayBuffer, bufferSpan, usage); - } - - protected sealed override void Dispose( - bool disposing - ) - { - if (disposing) { - GL.DeleteBuffers(_bufferHandle); - } - } + public GlHandle this[int index] => Handles[index]; } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/FBO.cs b/src/StgSharp.Graphics/OpenGL/Buffer/FBO.cs index ccdc68b8..afbd0f64 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/FBO.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/FBO.cs @@ -5,22 +5,13 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - namespace StgSharp.Graphics.OpenGL { - #pragma warning disable CA1008 - #pragma warning disable CA1028 + #pragma warning disable CA1008 + #pragma warning disable CA1028 public enum FrameBufferTarget : uint - #pragma warning restore CA1028 - #pragma warning restore CA1008 + #pragma warning restore CA1028 + #pragma warning restore CA1008 { Read = glConst.READ_FRAMEBUFFER, @@ -29,67 +20,15 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class FrameBuffer : GlBufferObjectBase + /// A set of OpenGL framebuffer handles. + public sealed record class FrameBuffer( + GlHandle[] Handles + ) { - internal unsafe FrameBuffer( - int count, - glRender binding - ) - : base(binding) - { - _bufferHandle = new GlHandle[count]; - GL.GenFrameBuffers(_bufferHandle); - } + public int Count => Handles.Length; - /// - /// Bind the frame BufferHandle object with _label frame BufferHandle to the frame - /// BufferHandle target specified by target. will - /// be set as default target. - /// - /// - /// Index of object to be binded in handle set - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override unsafe void Bind( - int index - ) - { - GL.BindFrameBuffer(FrameBufferTarget.All, _bufferHandle[index]); - } - - /// - /// Bind the frame BufferHandle object with _label frame BufferHandle to the frame - /// BufferHandle target specified by target. Target of this frame BufferHandle should be - /// set manually. - /// - /// - /// The frame BufferHandle target of the binding operation. - /// - /// - /// Index of object to be binded in handle set - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Bind( - FrameBufferTarget target, - int index - ) - { - GL.BindFrameBuffer(target, _bufferHandle[index]); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void BindNull() - { - OpenGLFunction.CurrentGL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); - } - - protected override void Dispose( - bool disposing - ) - { - throw new NotImplementedException(); - } + public GlHandle this[int index] => Handles[index]; } } diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/RBO.cs b/src/StgSharp.Graphics/OpenGL/Buffer/RBO.cs index 891bdf96..f06fe4fe 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/RBO.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/RBO.cs @@ -5,53 +5,17 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using System; -using System.Collections.Generic; -using System.Security.Principal; -using System.Text; - namespace StgSharp.Graphics.OpenGL { - public sealed class RenderBuffer : GlBufferObjectBase + /// A set of OpenGL renderbuffer handles. + public sealed record class RenderBuffer( + GlHandle[] Handles + ) { - public RenderBuffer( - int count, - glRender binding - ) - : base(binding) - { - _bufferHandle = GL.GenRenderBuffer(count); - } + public int Count => Handles.Length; - public override void Bind( - int index - ) - { - GL.BindRenderBuffer(this[index]); - } - - public void Store( - RenderBufferInternalFormat format, - (int width, int height) size - ) - { - if ((size.width > binding.Width) || (size.height > binding.Height)) { - World.LogWarning("FrameBuffer is larger than current canvas binding"); - } - } - - protected override void Dispose( - bool disposing - ) - { - foreach (GlHandle item in _bufferHandle) - { - Console.WriteLine("removing a render buffer"); - GL.DeleteRenderBuffer(item); - } - } + public GlHandle this[int index] => Handles[index]; } } diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/TextureGL.cs b/src/StgSharp.Graphics/OpenGL/Buffer/TextureGL.cs index 7123fb35..05eabde5 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/TextureGL.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/TextureGL.cs @@ -5,235 +5,27 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using StgSharp.HighPerformance.ProcessorAbstraction; -using StgSharp.Mathematics; - -using System; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - namespace StgSharp.Graphics.OpenGL { - public sealed unsafe class TextureGL + /// A set of OpenGL texture handles. + public sealed record class TextureGL( + GlHandle[] Handles + ) { - private int currentEditingTextureIndex; + public int Count => Handles.Length; - private OpenGLFunction _gl; - internal GlHandle[] _textureHandle; - - internal TextureGL( - int count, - glRender binding - ) - { - // sourceList = new Image[count]; - this._gl = binding.GL; - _textureHandle = _gl.GenTextures(count); - } - - public GlHandle this[ - int index - ] - { - get => _textureHandle[index]; - } - - public int Count => _textureHandle.Length; - - // internal Image[] sourceList; - - public int IndexOfCurrentTexture => currentEditingTextureIndex; - - internal OpenGLFunction GL => _gl; - - public void ActivateAs( - TextureUnit unit - ) - { - _gl.ActiveTextureUnit((uint)unit); - } - - public void Bind2D( - int index - ) - { - currentEditingTextureIndex = index; - _gl.BindTexture(glConst.TEXTURE_2D, _textureHandle[index]); - } - - /// - /// Load an to certain texture. - /// - /// - /// - /// - /// - /// - /// - public unsafe void LoadTexture( - int index, - Image i - ) - { - byte[] handle = i.PixelBuffer; - _gl.TextureImage2d(Texture2DTarget.Texture2D, 0, i.Channel, i.Width, i.Height, - i.Channel, i.PixelLayout, pixels:handle); - _gl.GenerateMipmap(Texture2DTarget.Texture2D); - } - - #region texture setting - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Set2dFilterProperty( - int index, - TextureFilter onMinify, - TextureFilter onMagnify - ) - { - #if DEBUG - if (index != currentEditingTextureIndex) - { - throw new InvalidOperationException( - "Texture to be editted is not the one being activated."); - } - #endif - _gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, (int)onMinify); - _gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER, - (int)onMagnify); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Set2dWrapProperty( - int index, - TextureWrap onHorizontial, - TextureWrap onVertical - ) - { - #if DEBUG - if (index != currentEditingTextureIndex) - { - throw new InvalidOperationException( - "Texture to be editted is not the one being activated."); - } - #endif - _gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S, - (int)onHorizontial); - _gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, (int)onVertical); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Set2dProperty( - int index, - TextureProperty property - ) - { - Set2dFilterProperty(index, property.FilterOnMinify, property.FilterOnMagnify); - Set2dWrapProperty(index, property.WrapOnHorizontial, property.WrapOnVertical); - } - - #endregion texture setting - } - - [StructLayout(LayoutKind.Explicit)] - public struct TextureProperty - { - - [FieldOffset(0)] private M128 mask; - [FieldOffset(0)] private TextureFilter mag; - [FieldOffset(4)] private TextureFilter min; - - [FieldOffset(8)] private TextureWrap hori; - [FieldOffset(12)] private TextureWrap vert; - - public TextureProperty( - TextureFilter onMagnify, - TextureFilter onMinify, - TextureWrap onHorizontal, - TextureWrap onVertical - ) - { - FilterOnMagnify = onMagnify; - FilterOnMinify = onMinify; - WrapOnHorizontial = onHorizontal; - WrapOnVertical = onVertical; - } - - public TextureFilter FilterOnMagnify - { - get => mag; - set => mag = value; - } - - public TextureFilter FilterOnMinify - { - get => min; - set => min = value; - } - - public TextureWrap WrapOnHorizontial - { - get => hori; - set => hori = value; - } - - public TextureWrap WrapOnVertical - { - get => vert; - set => vert = value; - } - - public override bool Equals( - [NotNullWhen(true)] object obj - ) - { - return base.Equals(obj); - } - - public override int GetHashCode() - { - return HashCode.Combine(FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, - WrapOnVertical); - } - - public override string ToString() - { - return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; - } - - public static bool operator !=( - TextureProperty left, - TextureProperty right - ) - { - return left.mask != right.mask; - } - - public static bool operator ==( - TextureProperty left, - TextureProperty right - ) - { - return left.mask == right.mask; - } - - public static implicit operator TextureProperty( - ( - TextureFilter onMagnify, TextureFilter onMinify, - TextureWrap onHorizontial, TextureWrap onVertical - ) propertyValueTuple - ) - { - return new TextureProperty(propertyValueTuple.onMagnify, propertyValueTuple.onMinify, - propertyValueTuple.onHorizontial, - propertyValueTuple.onVertical); - } + public GlHandle this[int index] => Handles[index]; } + public readonly record struct TextureProperty( + TextureFilter FilterOnMagnify, + TextureFilter FilterOnMinify, + TextureWrap WrapOnHorizontal, + TextureWrap WrapOnVertical + ); + #pragma warning disable CA1008 public enum TextureFilter #pragma warning restore CA1008 @@ -272,9 +64,9 @@ namespace StgSharp.Graphics.OpenGL } - #pragma warning disable CA1008 + #pragma warning disable CA1008 public enum TextureWrap - #pragma warning restore CA1008 + #pragma warning restore CA1008 { Repeat = glConst.REPEAT, diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/VAO.cs b/src/StgSharp.Graphics/OpenGL/Buffer/VAO.cs index b95e8e28..cbbb3874 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/VAO.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/VAO.cs @@ -5,62 +5,17 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using System; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using System.Text; - namespace StgSharp.Graphics.OpenGL { - public sealed unsafe class VertexArray : GlBufferObjectBase + /// A set of OpenGL vertex-array handles. + public sealed record class VertexArray( + GlHandle[] Handles + ) { - internal VertexArray( - int n, - glRender binding - ) - : base(binding) - { - _bufferHandle = GL.GenVertexArrays(n); - } + public int Count => Handles.Length; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public sealed override void Bind( - int index - ) - { - GL.BindVertexArray(_bufferHandle[index]); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void BindNull() - { - OpenGLFunction.CurrentGL.BindVertexArray(GlHandle.Zero); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetVertexAttribute( - uint attributeIndex, - int vertexLength, - TypeCode dataType, - bool isNomalized, - int stride, - int pointer - ) - { - GL.SetVertexAttribute(attributeIndex, vertexLength, dataType, isNomalized, stride, - pointer); - } - - protected sealed override void Dispose( - bool disposing - ) - { - if (disposing) { - GL.DeleteVertexArrays(_bufferHandle); - } - } + public GlHandle this[int index] => Handles[index]; } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/Buffer/VBO.cs b/src/StgSharp.Graphics/OpenGL/Buffer/VBO.cs index 301e6ec1..f5e61419 100644 --- a/src/StgSharp.Graphics/OpenGL/Buffer/VBO.cs +++ b/src/StgSharp.Graphics/OpenGL/Buffer/VBO.cs @@ -5,157 +5,17 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using StgSharp.Mathematics; -using StgSharp.Mathematics.Numeric; - -using System; -using System.Collections.Generic; -using System.Net.Security; -using System.Numerics; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Text; - namespace StgSharp.Graphics.OpenGL { - public sealed unsafe class VertexBuffer : GlBufferObjectBase + /// A set of OpenGL vertex-buffer handles. + public sealed record class VertexBuffer( + GlHandle[] Handles + ) { - internal VertexBuffer( - int n, - glRender binding - ) - : base(binding) - { - _bufferHandle = GL.GenBuffers(n); - } + public int Count => Handles.Length; - public sealed override void Bind( - int index - ) - { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - } - - /// - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Unbind() - { - GL.BindBuffer(BufferType.ArrayBuffer, GlHandle.Zero); - } - - /// - /// Set _data to current vertex BufferHandle object - /// - /// - /// Type of bufferData - /// - /// - /// Index to find certain VBO in this instance - /// - /// - /// Data to write in - /// - /// - /// How OpenGL use these _data, defined by - /// - public void WriteScalerData( - int index, - T[] bufferArray, - BufferUsage usage - ) where T : unmanaged, INumber - { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ArrayBuffer, bufferArray, usage); - } - - /// - /// Set _data to current vertex BufferHandle object - /// - /// - /// Type of bufferData - /// - /// - /// Index to find certain VBO in this instance - /// - /// - /// A of _data to write in - /// - /// - /// How OpenGL use these _data, defined by - /// - public void WriteScalerData( - int index, - ReadOnlySpan scalerSpan, - BufferUsage usage - ) where T : unmanaged,INumber - { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ArrayBuffer, scalerSpan, usage); - } - - /// - /// Set data to current vertex BufferHandle object - /// - /// - /// Type of bufferData - /// - /// - /// Index to find certain VBO in this instance - /// - /// - /// A of data to write in - /// - /// - /// How OpenGL use these data, defined by - /// - public void WriteVectorData( - int index, - ReadOnlySpan vectorSpan, - BufferUsage usage - ) where T : unmanaged, IUnmanagedVector - { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorSpan, usage); - } - - /// - /// Set _data to current vertex BufferHandle object - /// - /// - /// Type of bufferData - /// - /// - /// Index to find certain VBO in this instance - /// - /// - /// A array of _data to write in - /// - /// - /// How OpenGL use these _data, defined by - /// - public void WriteVectorData( - int index, - T[] vectorArray, - BufferUsage usage - ) where T : unmanaged, IUnmanagedVector - { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorArray, usage); - } - - protected sealed override void Dispose( - bool disposing - ) - { - if (disposing) { - GL.DeleteBuffers(_bufferHandle); - } - } + public GlHandle this[int index] => Handles[index]; } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Shader.cs b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Shader.cs index 77e6f2b5..715ef378 100644 --- a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Shader.cs +++ b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Shader.cs @@ -5,163 +5,33 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp; -using StgSharp.Graphics; -using StgSharp.Internal; - using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Text; -using System.Xml.Linq; namespace StgSharp.Graphics.OpenGL { - public abstract partial class glRender : RenderStream + /// + /// A set of OpenGL shader handles with their common stage type. + /// + public sealed record Shader { - /// - /// Create an instance of program - /// - /// - /// New instance of instance. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected sealed override ShaderProgram CreateShaderProgram() - { - return new ShaderProgram(this); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected sealed override Shader CreateShaderSegment( - ShaderType type, - int count + public Shader( + GlHandle[] handles, + ShaderType type ) { - return new Shader(GL.CreateShaderSet(count, type), type, this); + ArgumentNullException.ThrowIfNull(handles); + Handles = handles; + Type = type; } - } + public int Count => Handles.Length; - public class Shader - { + public GlHandle[] Handles { get; } - private readonly OpenGLFunction GL; - internal readonly GlHandle[] handle; - public readonly ShaderType type; + public ShaderType Type { get; } - internal unsafe Shader( - GlHandle[] handle, - ShaderType usage, - glRender stream - ) - { - this.handle = handle; - GL = stream.GL; - type = usage; - } - - /// - /// Attach one shader code to a shader program. - /// - /// - /// Shader program to attach - /// - /// - /// Index of shader code in current shader code set. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachTo( - int index, - [NotNull]ShaderProgram target - ) - { - GL.AttachShader(target.handle, handle[index]); - } - - public void CheckStatus( - int index, - ShaderStatus status - ) - { - string log = GL.GetShaderStatus(this, index, (int)status); - if (!string.IsNullOrEmpty(log)) { - throw new InvalidOperationException($"{$"Shader Error \t{status}\n"}{log}"); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile( - int index, - ReadOnlySpan codeU8Stream - ) - { - GL.LoadShaderSource(handle[index], codeU8Stream); - GL.CompileShader(handle[index]); - CheckStatus(index, ShaderStatus.CompileStatus); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile( - int index, - byte[] codeStream - ) - { - ArgumentNullException.ThrowIfNull(codeStream); - GL.LoadShaderSource(handle[index], codeStream); - GL.CompileShader(handle[index]); - CheckStatus(index, ShaderStatus.CompileStatus); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile( - int index, - string codeStream - ) - { - ArgumentNullException.ThrowIfNull(codeStream); - GL.LoadShaderSource(handle[index], codeStream.AsSpan()); - GL.CompileShader(handle[index]); - CheckStatus(index, ShaderStatus.CompileStatus); - } - - public void FromBytes( - byte[] stream - ) - { - throw new NotImplementedException(); - } - - public static byte[] FromCodeFile( - string fileRoute - ) - { - string str = File.ReadAllText(fileRoute); - if (string.IsNullOrEmpty(str)) { - throw new InvalidOperationException($"Cannot load and GLSL code from {fileRoute}"); - } - return Encoding.UTF8.GetBytes(str); - } - - public byte[] GetBytes() - { - return Array.Empty(); - } - - public byte[] GetBytes( - out int length - ) - { - throw new NotImplementedException(); - } - - public override string ToString() - { - return $"This is a {type} shader, its shader handles are {handle.ToString()}."; - } + public GlHandle this[int index] => Handles[index]; } @@ -172,125 +42,8 @@ namespace StgSharp.Graphics.OpenGL } - public class ShaderProgram - { - - private readonly OpenGLFunction GL; - internal readonly GlHandle handle; - - /// - /// CustomizeInit a program with no shader attached. - /// - internal unsafe ShaderProgram( - glRender binding - ) - { - GL = binding.GL; - handle = GL.CreateProgram(); - } - - /// - /// Get a uniform form current shader, the value type of the uniform should be provided. - /// - /// - /// ContextName of the Uniform in shader code - /// - /// - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe Uniform GetUniform( - string name - ) where T : unmanaged - { - return new Uniform(GL.GetUniformLocation(this.handle, name)); - } - - /// - /// Get a uniform form current shader, the value type of the uniform should be provided. - /// - /// - /// ContextName of the Uniform in shader code - /// - /// - /// - /// - public unsafe Uniform GetUniform( - string name - ) where T : unmanaged where U : struct - { - return new Uniform(GL.GetUniformLocation(this.handle, name)); - } - - /// - /// Get a uniform form current shader, the value type of the uniform should be provided. - /// - /// - /// ContextName of the Uniform in shader code - /// - /// - /// - /// - public unsafe Uniform GetUniform( - string name - ) where T : unmanaged where U : struct where V : struct - { - return new Uniform(GL.GetUniformLocation(this.handle, name)); - } - - /// - /// Get a uniform form current shader, the value type of the uniform should be provided. - /// - /// - /// ContextName of the Uniform in shader code - /// - /// - /// - /// - public unsafe Uniform GetUniform( - string name - ) where T : unmanaged where U : struct where V : struct where W : struct - { - return new Uniform(GL.GetUniformLocation(this.handle, name)); - } - - /// - /// Link the shader to current viewPortDisplay. - /// - public unsafe void Link() - { - if (GraphicFramework.InternalLinkShaderProgram( - (OpenglContext*)this.GL.ContextHandle, handle.Value) == 0) - { - IntPtr logPtr = GraphicFramework.InternalReadSSCLog(); - try - { - byte[] logByte = new byte[512]; - Marshal.Copy(logPtr, logByte, 0, 512); - string log = Encoding.UTF8.GetString(logByte); - log = log.Replace("\0", string.Empty); - DefaultLog.InternalWriteLog(log, LogType.Error); - } - catch (Exception ex) - { - DefaultLog.InternalWriteLog(ex.Message, LogType.Error); - } - } - } - - /// - /// Let the current viewPortDisplay use this shader. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Use() - { - GL.UseProgram(handle); - } - - ~ShaderProgram() - { - // handle.Dispose(); - } - - } -} \ No newline at end of file + /// + /// An OpenGL shader-program handle. + /// + public readonly record struct ShaderProgram(GlHandle Handle); +} diff --git a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs index 42a467de..93218315 100644 --- a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -7,10 +7,17 @@ namespace StgSharp.Graphics.OpenGL { - public class Uniform + public abstract class Uniform { - internal GlHandle id; + internal readonly GlHandle id; + + protected Uniform( + GlHandle handle + ) + { + id = handle; + } public GlHandle Handle => id; @@ -19,48 +26,20 @@ namespace StgSharp.Graphics.OpenGL public sealed class Uniform : Uniform where T : unmanaged { - internal Uniform() { } - - internal unsafe Uniform( - GlHandle id + public Uniform( + GlHandle handle ) - { - this.id = id; - } - - internal static Uniform FromHandle( - GlHandle handle - ) - { - return new Uniform - { - id = handle - }; - } + : base(handle) { } } public sealed class Uniform : Uniform where T : unmanaged where U : struct { - internal Uniform() { } - - internal unsafe Uniform( - GlHandle id + public Uniform( + GlHandle handle ) - { - this.id = id; - } - - internal static Uniform FromHandle( - GlHandle handle - ) - { - return new Uniform - { - id = handle - }; - } + : base(handle) { } } @@ -68,24 +47,10 @@ namespace StgSharp.Graphics.OpenGL where V : struct { - internal Uniform() { } - - internal unsafe Uniform( - GlHandle id + public Uniform( + GlHandle handle ) - { - this.id = id; - } - - internal static Uniform FromHandle( - GlHandle handle - ) - { - return new Uniform - { - id = handle - }; - } + : base(handle) { } } @@ -94,25 +59,10 @@ namespace StgSharp.Graphics.OpenGL where W : struct { - internal Uniform() { } - - internal unsafe Uniform( - GlHandle id + public Uniform( + GlHandle handle ) - { - this.id = id; - } - - internal static Uniform FromHandle( - GlHandle handle - ) - { - return new Uniform - { - id = handle - }; - } + : base(handle) { } } - } diff --git a/src/StgSharp.Graphics/OpenGL/glApiManager.cs b/src/StgSharp.Graphics/OpenGL/glApiManager.cs index d9a9bf74..f3c3a3ab 100644 --- a/src/StgSharp.Graphics/OpenGL/glApiManager.cs +++ b/src/StgSharp.Graphics/OpenGL/glApiManager.cs @@ -6,75 +6,77 @@ // ----------------------------------------------------------------------------- using StgSharp.Internal; -using StgSharp.Mathematics; -using StgSharp.Mathematics; + using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; +using System.Globalization; using System.Runtime.InteropServices; -using System.Text; namespace StgSharp.Graphics.OpenGL { + /// + /// Compatibility loader retained until the context subsystem is replaced. + /// public static partial class glManager { - private const int glExtension = 0x1f03; - private const int glVersion = 0x1f02; + private const uint GlVersion = 0x1F02; - private static readonly string[] glBranch = { - "OpenGL ES-CM ", - "OpenGL ES-CL ", - "OpenGL ES ", - "OpenGL SC " - }; + private static bool core10; + private static bool core11; + private static bool core12; + private static bool core13; + private static bool core14; + private static bool core15; + private static bool core20; + private static bool core21; + private static bool core30; + private static bool core31; + private static bool core32; + private static bool core33; + private static bool core40; + private static bool core41; + private static bool core42; + private static bool core43; + private static bool core44; + private static bool core45; + private static bool core46; /// - /// Load all supported OpenGL APIs and bind them to given . + /// Loads the core OpenGL entry points for the current GLFW context. /// - /// - /// The handle to current OpenGL viewPortDisplay - /// public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) { + if (contextHandle == IntPtr.Zero) { + throw new ArgumentException("A context table is required.", nameof(contextHandle)); + } + OpenglContext* context = (OpenglContext*)contextHandle; if (context->glGetString != null) { return; } + delegate*, IntPtr> loader = &GraphicFramework.glfwGetProcAddress; - IntPtr proc = GraphicFramework.glfwGetProcAddress("glGetString"u8); - if (proc == IntPtr.Zero) - { - #if DEBUG - Console.WriteLine("Cannot load GL."); - #endif - throw new NotSupportedException("Cannot load gl"); + IntPtr getString = GraphicFramework.glfwGetProcAddress("glGetString"u8); + if (getString == IntPtr.Zero) { + throw new NotSupportedException("Cannot load glGetString from the current context."); } - context->glGetString = (delegate*)proc; - string coreVersion; - if (context->glGetString(glVersion) == null) { - DefaultLog.InternalWriteLog("Failed to call glGetString", LogType.Error); + context->glGetString = (delegate*)getString; + byte* versionPointer = context->glGetString(GlVersion); + if (versionPointer == null) { + throw new NotSupportedException("The current context did not report an OpenGL version."); } - coreVersion = Marshal.PtrToStringAnsi((nint)context->glGetString(glVersion)) ?? - string.Empty; - foreach (string branch in glBranch) - { - if (coreVersion.Contains(branch, StringComparison.Ordinal)) { - coreVersion.Replace(branch, string.Empty, StringComparison.Ordinal); - } + string versionText = Marshal.PtrToStringAnsi((nint)versionPointer) ?? string.Empty; + if (!TryReadVersion(versionText, out int majorVersion, out int minorVersion)) { + throw new NotSupportedException($"Cannot parse OpenGL version '{versionText}'."); } - string[] versionSep = coreVersion!.Split('.'); - int majorVersion = int.Parse(versionSep[0]); - int minorVersion = int.Parse(versionSep[1]); + CheckCoreVersion(majorVersion, minorVersion); - - if (LoadGLcore10((glContextShadow*)context, loader) && + _ = LoadGLcore10((glContextShadow*)context, loader) && LoadGLcore11((glContextShadow*)context, loader) && LoadGLcore12((glContextShadow*)context, loader) && LoadGLcore13((glContextShadow*)context, loader) && @@ -92,3135 +94,7 @@ namespace StgSharp.Graphics.OpenGL LoadGLcore43((glContextShadow*)context, loader) && LoadGLcore44((glContextShadow*)context, loader) && LoadGLcore45((glContextShadow*)context, loader) && - LoadGLcore46((glContextShadow*)context, loader)) { } - - uint code = context->glGetError(); - if (code != 0) - { - Console.WriteLine(code); - throw new GlExecutionException(code); - } - - int extensionCount; - context->glGetIntegerv(glConst.NUM_EXTENSIONS, &extensionCount); - if (extensionCount == 0) - { - DefaultLog.InternalWriteLog( - "No supported OpenGL extensions are found.", LogType.Info); - return; - } - - HashSet extensions = []; - - for (uint i = 0; i < extensionCount; i++) - { - byte* strPtr = context->glGetStringi(glConst.EXTENSIONS, i); - extensions.Add(Marshal.PtrToStringAnsi((IntPtr)strPtr) ?? string.Empty); - } - - DefaultLog.InternalWriteLog( - $"{$"Find OpenGL extensions:"}{Environment.NewLine}{string.Join(';', extensions)}", - LogType.Info); - - #region checkGLextensions - - if (extensions.Contains("gl_4DFX_multisample")) - { - _4DFX_multisample = true; - extensions.Remove("gl_4DFX_multisample"); - } - if (extensions.Contains("gl_3DFX_tbuffer")) - { - _3DFX_tbuffer = true; - extensions.Remove("gl_3DFX_tbuffer"); - } - if (extensions.Contains("gl_3DFX_texture_compression_FXT1")) - { - _3DFX_texture_compression_FXT1 = true; - extensions.Remove("gl_3DFX_texture_compression_FXT1"); - } - if (extensions.Contains("gl_AMD_blend_minmax_factor")) - { - AMD_blend_minmax_factor = true; - extensions.Remove("gl_AMD_blend_minmax_factor"); - } - if (extensions.Contains("gl_AMD_conservative_depth")) - { - AMD_conservative_depth = true; - extensions.Remove("gl_AMD_conservative_depth"); - } - if (extensions.Contains("gl_AMD_debug_output")) - { - AMD_debug_output = true; - extensions.Remove("gl_AMD_debug_output"); - } - if (extensions.Contains("gl_AMD_depth_clamp_separate")) - { - AMD_depth_clamp_separate = true; - extensions.Remove("gl_AMD_depth_clamp_separate"); - } - if (extensions.Contains("gl_AMD_draw_buffers_blend")) - { - AMD_draw_buffers_blend = true; - extensions.Remove("gl_AMD_draw_buffers_blend"); - } - if (extensions.Contains("gl_AMD_framebuffer_multisample_advanced")) - { - AMD_framebuffer_multisample_advanced = true; - extensions.Remove("gl_AMD_framebuffer_multisample_advanced"); - } - if (extensions.Contains("gl_AMD_framebuffer_sample_positions")) - { - AMD_framebuffer_sample_positions = true; - extensions.Remove("gl_AMD_framebuffer_sample_positions"); - } - if (extensions.Contains("gl_AMD_gcn_shader")) - { - AMD_gcn_shader = true; - extensions.Remove("gl_AMD_gcn_shader"); - } - if (extensions.Contains("gl_AMD_gpu_shader_half_float")) - { - AMD_gpu_shader_half_float = true; - extensions.Remove("gl_AMD_gpu_shader_half_float"); - } - if (extensions.Contains("gl_AMD_gpu_shader_int16")) - { - AMD_gpu_shader_int16 = true; - extensions.Remove("gl_AMD_gpu_shader_int16"); - } - if (extensions.Contains("gl_AMD_gpu_shader_int64")) - { - AMD_gpu_shader_int64 = true; - extensions.Remove("gl_AMD_gpu_shader_int64"); - } - if (extensions.Contains("gl_AMD_interleaved_elements")) - { - AMD_interleaved_elements = true; - extensions.Remove("gl_AMD_interleaved_elements"); - } - if (extensions.Contains("gl_AMD_multi_draw_indirect")) - { - AMD_multi_draw_indirect = true; - extensions.Remove("gl_AMD_multi_draw_indirect"); - } - if (extensions.Contains("gl_AMD_name_gen_delete")) - { - AMD_name_gen_delete = true; - extensions.Remove("gl_AMD_name_gen_delete"); - } - if (extensions.Contains("gl_AMD_occlusion_query_event")) - { - AMD_occlusion_query_event = true; - extensions.Remove("gl_AMD_occlusion_query_event"); - } - if (extensions.Contains("gl_AMD_performance_monitor")) - { - AMD_performance_monitor = true; - extensions.Remove("gl_AMD_performance_monitor"); - } - if (extensions.Contains("gl_AMD_pinned_memory")) - { - AMD_pinned_memory = true; - extensions.Remove("gl_AMD_pinned_memory"); - } - if (extensions.Contains("gl_AMD_query_buffer_object")) - { - AMD_query_buffer_object = true; - extensions.Remove("gl_AMD_query_buffer_object"); - } - if (extensions.Contains("gl_AMD_sample_positions")) - { - AMD_sample_positions = true; - extensions.Remove("gl_AMD_sample_positions"); - } - if (extensions.Contains("gl_AMD_seamless_cubemap_per_texture")) - { - AMD_seamless_cubemap_per_texture = true; - extensions.Remove("gl_AMD_seamless_cubemap_per_texture"); - } - if (extensions.Contains("gl_AMD_shader_atomic_counter_ops")) - { - AMD_shader_atomic_counter_ops = true; - extensions.Remove("gl_AMD_shader_atomic_counter_ops"); - } - if (extensions.Contains("gl_AMD_shader_ballot")) - { - AMD_shader_ballot = true; - extensions.Remove("gl_AMD_shader_ballot"); - } - if (extensions.Contains("gl_AMD_shader_explicit_vertex_parameter")) - { - AMD_shader_explicit_vertex_parameter = true; - extensions.Remove("gl_AMD_shader_explicit_vertex_parameter"); - } - if (extensions.Contains("gl_AMD_shader_gpu_shader_half_float_fetch")) - { - AMD_shader_gpu_shader_half_float_fetch = true; - extensions.Remove("gl_AMD_shader_gpu_shader_half_float_fetch"); - } - if (extensions.Contains("gl_AMD_shader_image_load_store_lod")) - { - AMD_shader_image_load_store_lod = true; - extensions.Remove("gl_AMD_shader_image_load_store_lod"); - } - if (extensions.Contains("gl_AMD_shader_stencil_export")) - { - AMD_shader_stencil_export = true; - extensions.Remove("gl_AMD_shader_stencil_export"); - } - if (extensions.Contains("gl_AMD_shader_trinary_minmax")) - { - AMD_shader_trinary_minmax = true; - extensions.Remove("gl_AMD_shader_trinary_minmax"); - } - if (extensions.Contains("gl_AMD_sparse_texture")) - { - AMD_sparse_texture = true; - extensions.Remove("gl_AMD_sparse_texture"); - } - if (extensions.Contains("gl_AMD_stencil_operation_extended")) - { - AMD_stencil_operation_extended = true; - extensions.Remove("gl_AMD_stencil_operation_extended"); - } - if (extensions.Contains("gl_AMD_texture_gather_bias_lod")) - { - AMD_texture_gather_bias_lod = true; - extensions.Remove("gl_AMD_texture_gather_bias_lod"); - } - if (extensions.Contains("gl_AMD_texture_texture4")) - { - AMD_texture_texture4 = true; - extensions.Remove("gl_AMD_texture_texture4"); - } - if (extensions.Contains("gl_AMD_transform_feedback3_lines_triangles")) - { - AMD_transform_feedback3_lines_triangles = true; - extensions.Remove("gl_AMD_transform_feedback3_lines_triangles"); - } - if (extensions.Contains("gl_AMD_transform_feedback4")) - { - AMD_transform_feedback4 = true; - extensions.Remove("gl_AMD_transform_feedback4"); - } - if (extensions.Contains("gl_AMD_vertex_shader_layer")) - { - AMD_vertex_shader_layer = true; - extensions.Remove("gl_AMD_vertex_shader_layer"); - } - if (extensions.Contains("gl_AMD_vertex_shader_tessellator")) - { - AMD_vertex_shader_tessellator = true; - extensions.Remove("gl_AMD_vertex_shader_tessellator"); - } - if (extensions.Contains("gl_AMD_vertex_shader_viewport_index")) - { - AMD_vertex_shader_viewport_index = true; - extensions.Remove("gl_AMD_vertex_shader_viewport_index"); - } - if (extensions.Contains("gl_APPLE_aux_depth_stencil")) - { - APPLE_aux_depth_stencil = true; - extensions.Remove("glAPPLE_aux_depth_stencil"); - } - if (extensions.Contains("gl_APPLE_client_storage")) - { - APPLE_client_storage = true; - extensions.Remove("glAPPLE_client_storage"); - } - if (extensions.Contains("gl_APPLE_element_array")) - { - APPLE_element_array = true; - extensions.Remove("glAPPLE_element_array"); - } - if (extensions.Contains("gl_APPLE_fence")) - { - APPLE_fence = true; - extensions.Remove("glAPPLE_fence"); - } - if (extensions.Contains("gl_APPLE_float_pixels")) - { - APPLE_float_pixels = true; - extensions.Remove("glAPPLE_float_pixels"); - } - if (extensions.Contains("gl_APPLE_flush_buffer_range")) - { - APPLE_flush_buffer_range = true; - extensions.Remove("glAPPLE_flush_buffer_range"); - } - if (extensions.Contains("gl_APPLE_object_purgeable")) - { - APPLE_object_purgeable = true; - extensions.Remove("glAPPLE_object_purgeable"); - } - if (extensions.Contains("gl_APPLE_rgb_422")) - { - APPLE_rgb_422 = true; - extensions.Remove("glAPPLE_rgb_422"); - } - if (extensions.Contains("gl_APPLE_row_bytes")) - { - APPLE_row_bytes = true; - extensions.Remove("glAPPLE_row_bytes"); - } - if (extensions.Contains("gl_APPLE_specular_vector")) - { - APPLE_specular_vector = true; - extensions.Remove("glAPPLE_specular_vector"); - } - if (extensions.Contains("gl_APPLE_texture_range")) - { - APPLE_texture_range = true; - extensions.Remove("glAPPLE_texture_range"); - } - if (extensions.Contains("gl_APPLE_transform_hint")) - { - APPLE_transform_hint = true; - extensions.Remove("glAPPLE_transform_hint"); - } - if (extensions.Contains("gl_APPLE_vertex_array_object")) - { - APPLE_vertex_array_object = true; - extensions.Remove("glAPPLE_vertex_array_object"); - } - if (extensions.Contains("gl_APPLE_vertex_array_range")) - { - APPLE_vertex_array_range = true; - extensions.Remove("glAPPLE_vertex_array_range"); - } - if (extensions.Contains("gl_APPLE_vertex_program_evaluators")) - { - APPLE_vertex_program_evaluators = true; - extensions.Remove("glAPPLE_vertex_program_evaluators"); - } - if (extensions.Contains("gl_APPLE_ycbcr_422")) - { - APPLE_ycbcr_422 = true; - extensions.Remove("glAPPLE_ycbcr_422"); - } - if (extensions.Contains("gl_ARB_ES2_compatibility")) - { - ARB_ES2_compatibility = true; - extensions.Remove("glARB_ES2_compatibility"); - } - if (extensions.Contains("gl_ARB_ES3_1_compatibility")) - { - ARB_ES3_1_compatibility = true; - extensions.Remove("glARB_ES3_1_compatibility"); - } - if (extensions.Contains("gl_ARB_ES3_2_compatibility")) - { - ARB_ES3_2_compatibility = true; - extensions.Remove("glARB_ES3_2_compatibility"); - } - if (extensions.Contains("gl_ARB_ES3_compatibility")) - { - ARB_ES3_compatibility = true; - extensions.Remove("glARB_ES3_compatibility"); - } - if (extensions.Contains("gl_ARB_arrays_of_arrays")) - { - ARB_arrays_of_arrays = true; - extensions.Remove("glARB_arrays_of_arrays"); - } - if (extensions.Contains("gl_ARB_base_instance")) - { - ARB_base_instance = true; - extensions.Remove("glARB_base_instance"); - } - if (extensions.Contains("gl_ARB_bindless_texture")) - { - ARB_bindless_texture = true; - extensions.Remove("glARB_bindless_texture"); - } - if (extensions.Contains("gl_ARB_blend_func_extended")) - { - ARB_blend_func_extended = true; - extensions.Remove("glARB_blend_func_extended"); - } - if (extensions.Contains("gl_ARB_buffer_storage")) - { - ARB_buffer_storage = true; - extensions.Remove("glARB_buffer_storage"); - } - if (extensions.Contains("gl_ARB_cl_event")) - { - ARB_cl_event = true; - extensions.Remove("glARB_cl_event"); - } - if (extensions.Contains("gl_ARB_clear_buffer_object")) - { - ARB_clear_buffer_object = true; - extensions.Remove("glARB_clear_buffer_object"); - } - if (extensions.Contains("gl_ARB_clear_texture")) - { - ARB_clear_texture = true; - extensions.Remove("glARB_clear_texture"); - } - if (extensions.Contains("gl_ARB_clip_control")) - { - ARB_clip_control = true; - extensions.Remove("glARB_clip_control"); - } - if (extensions.Contains("gl_ARB_color_buffer_float")) - { - ARB_color_buffer_float = true; - extensions.Remove("glARB_color_buffer_float"); - } - if (extensions.Contains("gl_ARB_compatibility")) - { - ARB_compatibility = true; - extensions.Remove("glARB_compatibility"); - } - if (extensions.Contains("gl_ARB_compressed_texture_pixel_storage")) - { - ARB_compressed_texture_pixel_storage = true; - extensions.Remove("glARB_compressed_texture_pixel_storage"); - } - if (extensions.Contains("gl_ARB_compute_shader")) - { - ARB_compute_shader = true; - extensions.Remove("glARB_compute_shader"); - } - if (extensions.Contains("gl_ARB_compute_variable_group_size")) - { - ARB_compute_variable_group_size = true; - extensions.Remove("glARB_compute_variable_group_size"); - } - if (extensions.Contains("gl_ARB_conditional_render_inverted")) - { - ARB_conditional_render_inverted = true; - extensions.Remove("glARB_conditional_render_inverted"); - } - if (extensions.Contains("gl_ARB_conservative_depth")) - { - ARB_conservative_depth = true; - extensions.Remove("glARB_conservative_depth"); - } - if (extensions.Contains("gl_ARB_copy_buffer")) - { - ARB_copy_buffer = true; - extensions.Remove("glARB_copy_buffer"); - } - if (extensions.Contains("gl_ARB_copy_image")) - { - ARB_copy_image = true; - extensions.Remove("glARB_copy_image"); - } - if (extensions.Contains("gl_ARB_cull_distance")) - { - ARB_cull_distance = true; - extensions.Remove("glARB_cull_distance"); - } - if (extensions.Contains("gl_ARB_debug_output")) - { - ARB_debug_output = true; - extensions.Remove("glARB_debug_output"); - } - if (extensions.Contains("gl_ARB_depth_buffer_float")) - { - ARB_depth_buffer_float = true; - extensions.Remove("glARB_depth_buffer_float"); - } - if (extensions.Contains("gl_ARB_depth_clamp")) - { - ARB_depth_clamp = true; - extensions.Remove("glARB_depth_clamp"); - } - if (extensions.Contains("gl_ARB_depth_texture")) - { - ARB_depth_texture = true; - extensions.Remove("glARB_depth_texture"); - } - if (extensions.Contains("gl_ARB_derivative_control")) - { - ARB_derivative_control = true; - extensions.Remove("glARB_derivative_control"); - } - if (extensions.Contains("gl_ARB_direct_state_access")) - { - ARB_direct_state_access = true; - extensions.Remove("glARB_direct_state_access"); - } - if (extensions.Contains("gl_ARB_draw_buffers")) - { - ARB_draw_buffers = true; - extensions.Remove("glARB_draw_buffers"); - } - if (extensions.Contains("gl_ARB_draw_buffers_blend")) - { - ARB_draw_buffers_blend = true; - extensions.Remove("glARB_draw_buffers_blend"); - } - if (extensions.Contains("gl_ARB_draw_elements_base_vertex")) - { - ARB_draw_elements_base_vertex = true; - extensions.Remove("glARB_draw_elements_base_vertex"); - } - if (extensions.Contains("gl_ARB_draw_indirect")) - { - ARB_draw_indirect = true; - extensions.Remove("glARB_draw_indirect"); - } - if (extensions.Contains("gl_ARB_draw_instanced")) - { - ARB_draw_instanced = true; - extensions.Remove("glARB_draw_instanced"); - } - if (extensions.Contains("gl_ARB_enhanced_layouts")) - { - ARB_enhanced_layouts = true; - extensions.Remove("glARB_enhanced_layouts"); - } - if (extensions.Contains("gl_ARB_explicit_attrib_location")) - { - ARB_explicit_attrib_location = true; - extensions.Remove("glARB_explicit_attrib_location"); - } - if (extensions.Contains("gl_ARB_explicit_uniform_location")) - { - ARB_explicit_uniform_location = true; - extensions.Remove("glARB_explicit_uniform_location"); - } - if (extensions.Contains("gl_ARB_fragment_coord_conventions")) - { - ARB_fragment_coord_conventions = true; - extensions.Remove("glARB_fragment_coord_conventions"); - } - if (extensions.Contains("gl_ARB_fragment_layer_viewport")) - { - ARB_fragment_layer_viewport = true; - extensions.Remove("glARB_fragment_layer_viewport"); - } - if (extensions.Contains("gl_ARB_fragment_program")) - { - ARB_fragment_program = true; - extensions.Remove("glARB_fragment_program"); - } - if (extensions.Contains("gl_ARB_fragment_program_shadow")) - { - ARB_fragment_program_shadow = true; - extensions.Remove("glARB_fragment_program_shadow"); - } - if (extensions.Contains("gl_ARB_fragment_shader")) - { - ARB_fragment_shader = true; - extensions.Remove("glARB_fragment_shader"); - } - if (extensions.Contains("gl_ARB_fragment_shader_interlock")) - { - ARB_fragment_shader_interlock = true; - extensions.Remove("glARB_fragment_shader_interlock"); - } - if (extensions.Contains("gl_ARB_framebuffer_no_attachments")) - { - ARB_framebuffer_no_attachments = true; - extensions.Remove("glARB_framebuffer_no_attachments"); - } - if (extensions.Contains("gl_ARB_framebuffer_object")) - { - ARB_framebuffer_object = true; - extensions.Remove("glARB_framebuffer_object"); - } - if (extensions.Contains("gl_ARB_framebuffer_sRGB")) - { - ARB_framebuffer_sRGB = true; - extensions.Remove("glARB_framebuffer_sRGB"); - } - if (extensions.Contains("gl_ARB_geometry_shader4")) - { - ARB_geometry_shader4 = true; - extensions.Remove("glARB_geometry_shader4"); - } - if (extensions.Contains("gl_ARB_get_program_binary")) - { - ARB_get_program_binary = true; - extensions.Remove("glARB_get_program_binary"); - } - if (extensions.Contains("gl_ARB_get_texture_sub_image")) - { - ARB_get_texture_sub_image = true; - extensions.Remove("glARB_get_texture_sub_image"); - } - if (extensions.Contains("gl_ARB_gl_spirv")) - { - ARB_gl_spirv = true; - extensions.Remove("glARB_gl_spirv"); - } - if (extensions.Contains("gl_ARB_gpu_shader5")) - { - ARB_gpu_shader5 = true; - extensions.Remove("glARB_gpu_shader5"); - } - if (extensions.Contains("gl_ARB_gpu_shader_fp64")) - { - ARB_gpu_shader_fp64 = true; - extensions.Remove("glARB_gpu_shader_fp64"); - } - if (extensions.Contains("gl_ARB_gpu_shader_int64")) - { - ARB_gpu_shader_int64 = true; - extensions.Remove("glARB_gpu_shader_int64"); - } - if (extensions.Contains("gl_ARB_half_float_pixel")) - { - ARB_half_float_pixel = true; - extensions.Remove("glARB_half_float_pixel"); - } - if (extensions.Contains("gl_ARB_half_float_vertex")) - { - ARB_half_float_vertex = true; - extensions.Remove("glARB_half_float_vertex"); - } - if (extensions.Contains("gl_ARB_imaging")) - { - ARB_imaging = true; - extensions.Remove("glARB_imaging"); - } - if (extensions.Contains("gl_ARB_indirect_parameters")) - { - ARB_indirect_parameters = true; - extensions.Remove("glARB_indirect_parameters"); - } - if (extensions.Contains("gl_ARB_instanced_arrays")) - { - ARB_instanced_arrays = true; - extensions.Remove("glARB_instanced_arrays"); - } - if (extensions.Contains("gl_ARB_internalformat_query")) - { - ARB_internalformat_query = true; - extensions.Remove("glARB_internalformat_query"); - } - if (extensions.Contains("gl_ARB_internalformat_query2")) - { - ARB_internalformat_query2 = true; - extensions.Remove("glARB_internalformat_query2"); - } - if (extensions.Contains("gl_ARB_invalidate_subdata")) - { - ARB_invalidate_subdata = true; - extensions.Remove("glARB_invalidate_subdata"); - } - if (extensions.Contains("gl_ARB_map_buffer_alignment")) - { - ARB_map_buffer_alignment = true; - extensions.Remove("glARB_map_buffer_alignment"); - } - if (extensions.Contains("gl_ARB_map_buffer_range")) - { - ARB_map_buffer_range = true; - extensions.Remove("glARB_map_buffer_range"); - } - if (extensions.Contains("gl_ARB_matrix_palette")) - { - ARB_matrix_palette = true; - extensions.Remove("glARB_matrix_palette"); - } - if (extensions.Contains("gl_ARB_multi_bind")) - { - ARB_multi_bind = true; - extensions.Remove("glARB_multi_bind"); - } - if (extensions.Contains("gl_ARB_multi_draw_indirect")) - { - ARB_multi_draw_indirect = true; - extensions.Remove("glARB_multi_draw_indirect"); - } - if (extensions.Contains("gl_ARB_multisample")) - { - ARB_multisample = true; - extensions.Remove("glARB_multisample"); - } - if (extensions.Contains("gl_ARB_multitexture")) - { - ARB_multitexture = true; - extensions.Remove("glARB_multitexture"); - } - if (extensions.Contains("gl_ARB_occlusion_query")) - { - ARB_occlusion_query = true; - extensions.Remove("glARB_occlusion_query"); - } - if (extensions.Contains("gl_ARB_occlusion_query2")) - { - ARB_occlusion_query2 = true; - extensions.Remove("glARB_occlusion_query2"); - } - if (extensions.Contains("gl_ARB_parallel_shader_compile")) - { - ARB_parallel_shader_compile = true; - extensions.Remove("glARB_parallel_shader_compile"); - } - if (extensions.Contains("gl_ARB_pipeline_statistics_query")) - { - ARB_pipeline_statistics_query = true; - extensions.Remove("glARB_pipeline_statistics_query"); - } - if (extensions.Contains("gl_ARB_pixel_buffer_object")) - { - ARB_pixel_buffer_object = true; - extensions.Remove("glARB_pixel_buffer_object"); - } - if (extensions.Contains("gl_ARB_point_parameters")) - { - ARB_point_parameters = true; - extensions.Remove("glARB_point_parameters"); - } - if (extensions.Contains("gl_ARB_point_sprite")) - { - ARB_point_sprite = true; - extensions.Remove("glARB_point_sprite"); - } - if (extensions.Contains("gl_ARB_polygon_offset_clamp")) - { - ARB_polygon_offset_clamp = true; - extensions.Remove("glARB_polygon_offset_clamp"); - } - if (extensions.Contains("gl_ARB_post_depth_coverage")) - { - ARB_post_depth_coverage = true; - extensions.Remove("glARB_post_depth_coverage"); - } - if (extensions.Contains("gl_ARB_program_interface_query")) - { - ARB_program_interface_query = true; - extensions.Remove("glARB_program_interface_query"); - } - if (extensions.Contains("gl_ARB_provoking_vertex")) - { - ARB_provoking_vertex = true; - extensions.Remove("glARB_provoking_vertex"); - } - if (extensions.Contains("gl_ARB_query_buffer_object")) - { - ARB_query_buffer_object = true; - extensions.Remove("glARB_query_buffer_object"); - } - if (extensions.Contains("gl_ARB_robust_buffer_access_behavior")) - { - ARB_robust_buffer_access_behavior = true; - extensions.Remove("glARB_robust_buffer_access_behavior"); - } - if (extensions.Contains("gl_ARB_robustness")) - { - ARB_robustness = true; - extensions.Remove("glARB_robustness"); - } - if (extensions.Contains("gl_ARB_robustness_isolation")) - { - ARB_robustness_isolation = true; - extensions.Remove("glARB_robustness_isolation"); - } - if (extensions.Contains("gl_ARB_sample_locations")) - { - ARB_sample_locations = true; - extensions.Remove("glARB_sample_locations"); - } - if (extensions.Contains("gl_ARB_sample_shading")) - { - ARB_sample_shading = true; - extensions.Remove("glARB_sample_shading"); - } - if (extensions.Contains("gl_ARB_sampler_objects")) - { - ARB_sampler_objects = true; - extensions.Remove("glARB_sampler_objects"); - } - if (extensions.Contains("gl_ARB_seamless_cube_map")) - { - ARB_seamless_cube_map = true; - extensions.Remove("glARB_seamless_cube_map"); - } - if (extensions.Contains("gl_ARB_seamless_cubemap_per_texture")) - { - ARB_seamless_cubemap_per_texture = true; - extensions.Remove("glARB_seamless_cubemap_per_texture"); - } - if (extensions.Contains("gl_ARB_separate_shader_objects")) - { - ARB_separate_shader_objects = true; - extensions.Remove("glARB_separate_shader_objects"); - } - if (extensions.Contains("gl_ARB_shader_atomic_counter_ops")) - { - ARB_shader_atomic_counter_ops = true; - extensions.Remove("glARB_shader_atomic_counter_ops"); - } - if (extensions.Contains("gl_ARB_shader_atomic_counters")) - { - ARB_shader_atomic_counters = true; - extensions.Remove("glARB_shader_atomic_counters"); - } - if (extensions.Contains("gl_ARB_shader_ballot")) - { - ARB_shader_ballot = true; - extensions.Remove("glARB_shader_ballot"); - } - if (extensions.Contains("gl_ARB_shader_bit_encoding")) - { - ARB_shader_bit_encoding = true; - extensions.Remove("glARB_shader_bit_encoding"); - } - if (extensions.Contains("gl_ARB_shader_clock")) - { - ARB_shader_clock = true; - extensions.Remove("glARB_shader_clock"); - } - if (extensions.Contains("gl_ARB_shader_draw_parameters")) - { - ARB_shader_draw_parameters = true; - extensions.Remove("glARB_shader_draw_parameters"); - } - if (extensions.Contains("gl_ARB_shader_group_vote")) - { - ARB_shader_group_vote = true; - extensions.Remove("glARB_shader_group_vote"); - } - if (extensions.Contains("gl_ARB_shader_image_load_store")) - { - ARB_shader_image_load_store = true; - extensions.Remove("glARB_shader_image_load_store"); - } - if (extensions.Contains("gl_ARB_shader_image_size")) - { - ARB_shader_image_size = true; - extensions.Remove("glARB_shader_image_size"); - } - if (extensions.Contains("gl_ARB_shader_objects")) - { - ARB_shader_objects = true; - extensions.Remove("glARB_shader_objects"); - } - if (extensions.Contains("gl_ARB_shader_precision")) - { - ARB_shader_precision = true; - extensions.Remove("glARB_shader_precision"); - } - if (extensions.Contains("gl_ARB_shader_stencil_export")) - { - ARB_shader_stencil_export = true; - extensions.Remove("glARB_shader_stencil_export"); - } - if (extensions.Contains("gl_ARB_shader_storage_buffer_object")) - { - ARB_shader_storage_buffer_object = true; - extensions.Remove("glARB_shader_storage_buffer_object"); - } - if (extensions.Contains("gl_ARB_shader_subroutine")) - { - ARB_shader_subroutine = true; - extensions.Remove("glARB_shader_subroutine"); - } - if (extensions.Contains("gl_ARB_shader_texture_image_samples")) - { - ARB_shader_texture_image_samples = true; - extensions.Remove("glARB_shader_texture_image_samples"); - } - if (extensions.Contains("gl_ARB_shader_texture_lod")) - { - ARB_shader_texture_lod = true; - extensions.Remove("glARB_shader_texture_lod"); - } - if (extensions.Contains("gl_ARB_shader_viewport_layer_array")) - { - ARB_shader_viewport_layer_array = true; - extensions.Remove("glARB_shader_viewport_layer_array"); - } - if (extensions.Contains("gl_ARB_shading_language_100")) - { - ARB_shading_language_100 = true; - extensions.Remove("glARB_shading_language_100"); - } - if (extensions.Contains("gl_ARB_shading_language_420pack")) - { - ARB_shading_language_420pack = true; - extensions.Remove("glARB_shading_language_420pack"); - } - if (extensions.Contains("gl_ARB_shading_language_include")) - { - ARB_shading_language_include = true; - extensions.Remove("glARB_shading_language_include"); - } - if (extensions.Contains("gl_ARB_shading_language_packing")) - { - ARB_shading_language_packing = true; - extensions.Remove("glARB_shading_language_packing"); - } - if (extensions.Contains("gl_ARB_shadow")) - { - ARB_shadow = true; - extensions.Remove("glARB_shadow"); - } - if (extensions.Contains("gl_ARB_shadow_ambient")) - { - ARB_shadow_ambient = true; - extensions.Remove("glARB_shadow_ambient"); - } - if (extensions.Contains("gl_ARB_sparse_buffer")) - { - ARB_sparse_buffer = true; - extensions.Remove("glARB_sparse_buffer"); - } - if (extensions.Contains("gl_ARB_sparse_texture")) - { - ARB_sparse_texture = true; - extensions.Remove("glARB_sparse_texture"); - } - if (extensions.Contains("gl_ARB_sparse_texture2")) - { - ARB_sparse_texture2 = true; - extensions.Remove("glARB_sparse_texture2"); - } - if (extensions.Contains("gl_ARB_sparse_texture_clamp")) - { - ARB_sparse_texture_clamp = true; - extensions.Remove("glARB_sparse_texture_clamp"); - } - if (extensions.Contains("gl_ARB_spirv_extensions")) - { - ARB_spirv_extensions = true; - extensions.Remove("glARB_spirv_extensions"); - } - if (extensions.Contains("gl_ARB_stencil_texturing")) - { - ARB_stencil_texturing = true; - extensions.Remove("glARB_stencil_texturing"); - } - if (extensions.Contains("gl_ARB_sync")) - { - ARB_sync = true; - extensions.Remove("glARB_sync"); - } - if (extensions.Contains("gl_ARB_tessellation_shader")) - { - ARB_tessellation_shader = true; - extensions.Remove("glARB_tessellation_shader"); - } - if (extensions.Contains("gl_ARB_texture_barrier")) - { - ARB_texture_barrier = true; - extensions.Remove("glARB_texture_barrier"); - } - if (extensions.Contains("gl_ARB_texture_border_clamp")) - { - ARB_texture_border_clamp = true; - extensions.Remove("glARB_texture_border_clamp"); - } - if (extensions.Contains("gl_ARB_texture_buffer_object")) - { - ARB_texture_buffer_object = true; - extensions.Remove("glARB_texture_buffer_object"); - } - if (extensions.Contains("gl_ARB_texture_buffer_object_rgb32")) - { - ARB_texture_buffer_object_rgb32 = true; - extensions.Remove("glARB_texture_buffer_object_rgb32"); - } - if (extensions.Contains("gl_ARB_texture_buffer_range")) - { - ARB_texture_buffer_range = true; - extensions.Remove("glARB_texture_buffer_range"); - } - if (extensions.Contains("gl_ARB_texture_compression")) - { - ARB_texture_compression = true; - extensions.Remove("glARB_texture_compression"); - } - if (extensions.Contains("gl_ARB_texture_compression_bptc")) - { - ARB_texture_compression_bptc = true; - extensions.Remove("glARB_texture_compression_bptc"); - } - if (extensions.Contains("gl_ARB_texture_compression_rgtc")) - { - ARB_texture_compression_rgtc = true; - extensions.Remove("glARB_texture_compression_rgtc"); - } - if (extensions.Contains("gl_ARB_texture_cube_map")) - { - ARB_texture_cube_map = true; - extensions.Remove("glARB_texture_cube_map"); - } - if (extensions.Contains("gl_ARB_texture_cube_map_array")) - { - ARB_texture_cube_map_array = true; - extensions.Remove("glARB_texture_cube_map_array"); - } - if (extensions.Contains("gl_ARB_texture_env_add")) - { - ARB_texture_env_add = true; - extensions.Remove("glARB_texture_env_add"); - } - if (extensions.Contains("gl_ARB_texture_env_combine")) - { - ARB_texture_env_combine = true; - extensions.Remove("glARB_texture_env_combine"); - } - if (extensions.Contains("gl_ARB_texture_env_crossbar")) - { - ARB_texture_env_crossbar = true; - extensions.Remove("glARB_texture_env_crossbar"); - } - if (extensions.Contains("gl_ARB_texture_env_dot3")) - { - ARB_texture_env_dot3 = true; - extensions.Remove("glARB_texture_env_dot3"); - } - if (extensions.Contains("gl_ARB_texture_filter_anisotropic")) - { - ARB_texture_filter_anisotropic = true; - extensions.Remove("glARB_texture_filter_anisotropic"); - } - if (extensions.Contains("gl_ARB_texture_filter_minmax")) - { - ARB_texture_filter_minmax = true; - extensions.Remove("glARB_texture_filter_minmax"); - } - if (extensions.Contains("gl_ARB_texture_float")) - { - ARB_texture_float = true; - extensions.Remove("glARB_texture_float"); - } - if (extensions.Contains("gl_ARB_texture_gather")) - { - ARB_texture_gather = true; - extensions.Remove("glARB_texture_gather"); - } - if (extensions.Contains("gl_ARB_texture_mirror_clamp_to_edge")) - { - ARB_texture_mirror_clamp_to_edge = true; - extensions.Remove("glARB_texture_mirror_clamp_to_edge"); - } - if (extensions.Contains("gl_ARB_texture_mirrored_repeat")) - { - ARB_texture_mirrored_repeat = true; - extensions.Remove("glARB_texture_mirrored_repeat"); - } - if (extensions.Contains("gl_ARB_texture_multisample")) - { - ARB_texture_multisample = true; - extensions.Remove("glARB_texture_multisample"); - } - if (extensions.Contains("gl_ARB_texture_non_power_of_two")) - { - ARB_texture_non_power_of_two = true; - extensions.Remove("glARB_texture_non_power_of_two"); - } - if (extensions.Contains("gl_ARB_texture_query_levels")) - { - ARB_texture_query_levels = true; - extensions.Remove("glARB_texture_query_levels"); - } - if (extensions.Contains("gl_ARB_texture_query_lod")) - { - ARB_texture_query_lod = true; - extensions.Remove("glARB_texture_query_lod"); - } - if (extensions.Contains("gl_ARB_texture_rectangle")) - { - ARB_texture_rectangle = true; - extensions.Remove("glARB_texture_rectangle"); - } - if (extensions.Contains("gl_ARB_texture_rg")) - { - ARB_texture_rg = true; - extensions.Remove("glARB_texture_rg"); - } - if (extensions.Contains("gl_ARB_texture_rgb10_a2ui")) - { - ARB_texture_rgb10_a2ui = true; - extensions.Remove("glARB_texture_rgb10_a2ui"); - } - if (extensions.Contains("gl_ARB_texture_stencil8")) - { - ARB_texture_stencil8 = true; - extensions.Remove("glARB_texture_stencil8"); - } - if (extensions.Contains("gl_ARB_texture_storage")) - { - ARB_texture_storage = true; - extensions.Remove("glARB_texture_storage"); - } - if (extensions.Contains("gl_ARB_texture_storage_multisample")) - { - ARB_texture_storage_multisample = true; - extensions.Remove("glARB_texture_storage_multisample"); - } - if (extensions.Contains("gl_ARB_texture_swizzle")) - { - ARB_texture_swizzle = true; - extensions.Remove("glARB_texture_swizzle"); - } - if (extensions.Contains("gl_ARB_texture_view")) - { - ARB_texture_view = true; - extensions.Remove("glARB_texture_view"); - } - if (extensions.Contains("gl_ARB_timer_query")) - { - ARB_timer_query = true; - extensions.Remove("glARB_timer_query"); - } - if (extensions.Contains("gl_ARB_transform_feedback2")) - { - ARB_transform_feedback2 = true; - extensions.Remove("glARB_transform_feedback2"); - } - if (extensions.Contains("gl_ARB_transform_feedback3")) - { - ARB_transform_feedback3 = true; - extensions.Remove("glARB_transform_feedback3"); - } - if (extensions.Contains("gl_ARB_transform_feedback_instanced")) - { - ARB_transform_feedback_instanced = true; - extensions.Remove("glARB_transform_feedback_instanced"); - } - if (extensions.Contains("gl_ARB_transform_feedback_overflow_query")) - { - ARB_transform_feedback_overflow_query = true; - extensions.Remove("glARB_transform_feedback_overflow_query"); - } - if (extensions.Contains("gl_ARB_transpose_matrix")) - { - ARB_transpose_matrix = true; - extensions.Remove("glARB_transpose_matrix"); - } - if (extensions.Contains("gl_ARB_uniform_buffer_object")) - { - ARB_uniform_buffer_object = true; - extensions.Remove("glARB_uniform_buffer_object"); - } - if (extensions.Contains("gl_ARB_vertex_array_bgra")) - { - ARB_vertex_array_bgra = true; - extensions.Remove("glARB_vertex_array_bgra"); - } - if (extensions.Contains("gl_ARB_vertex_array_object")) - { - ARB_vertex_array_object = true; - extensions.Remove("glARB_vertex_array_object"); - } - if (extensions.Contains("gl_ARB_vertex_attrib_64bit")) - { - ARB_vertex_attrib_64bit = true; - extensions.Remove("glARB_vertex_attrib_64bit"); - } - if (extensions.Contains("gl_ARB_vertex_attrib_binding")) - { - ARB_vertex_attrib_binding = true; - extensions.Remove("glARB_vertex_attrib_binding"); - } - if (extensions.Contains("gl_ARB_vertex_blend")) - { - ARB_vertex_blend = true; - extensions.Remove("glARB_vertex_blend"); - } - if (extensions.Contains("gl_ARB_vertex_buffer_object")) - { - ARB_vertex_buffer_object = true; - extensions.Remove("glARB_vertex_buffer_object"); - } - if (extensions.Contains("gl_ARB_vertex_program")) - { - ARB_vertex_program = true; - extensions.Remove("glARB_vertex_program"); - } - if (extensions.Contains("gl_ARB_vertex_shader")) - { - ARB_vertex_shader = true; - extensions.Remove("glARB_vertex_shader"); - } - if (extensions.Contains("gl_ARB_vertex_type_10f_11f_11f_rev")) - { - ARB_vertex_type_10f_11f_11f_rev = true; - extensions.Remove("glARB_vertex_type_10f_11f_11f_rev"); - } - if (extensions.Contains("gl_ARB_vertex_type_2_10_10_10_rev")) - { - ARB_vertex_type_2_10_10_10_rev = true; - extensions.Remove("glARB_vertex_type_2_10_10_10_rev"); - } - if (extensions.Contains("gl_ARB_viewport_array")) - { - ARB_viewport_array = true; - extensions.Remove("glARB_viewport_array"); - } - if (extensions.Contains("gl_ARB_window_pos")) - { - ARB_window_pos = true; - extensions.Remove("glARB_window_pos"); - } - if (extensions.Contains("gl_ATI_draw_buffers")) - { - ATI_draw_buffers = true; - extensions.Remove("glATI_draw_buffers"); - } - if (extensions.Contains("gl_ATI_element_array")) - { - ATI_element_array = true; - extensions.Remove("glATI_element_array"); - } - if (extensions.Contains("gl_ATI_envmap_bumpmap")) - { - ATI_envmap_bumpmap = true; - extensions.Remove("glATI_envmap_bumpmap"); - } - if (extensions.Contains("gl_ATI_fragment_shader")) - { - ATI_fragment_shader = true; - extensions.Remove("glATI_fragment_shader"); - } - if (extensions.Contains("gl_ATI_map_object_buffer")) - { - ATI_map_object_buffer = true; - extensions.Remove("glATI_map_object_buffer"); - } - if (extensions.Contains("gl_ATI_meminfo")) - { - ATI_meminfo = true; - extensions.Remove("glATI_meminfo"); - } - if (extensions.Contains("gl_ATI_pixel_format_float")) - { - ATI_pixel_format_float = true; - extensions.Remove("glATI_pixel_format_float"); - } - if (extensions.Contains("gl_ATI_pn_triangles")) - { - ATI_pn_triangles = true; - extensions.Remove("glATI_pn_triangles"); - } - if (extensions.Contains("gl_ATI_separate_stencil")) - { - ATI_separate_stencil = true; - extensions.Remove("glATI_separate_stencil"); - } - if (extensions.Contains("gl_ATI_text_fragment_shader")) - { - ATI_text_fragment_shader = true; - extensions.Remove("glATI_text_fragment_shader"); - } - if (extensions.Contains("gl_ATI_texture_env_combine3")) - { - ATI_texture_env_combine3 = true; - extensions.Remove("glATI_texture_env_combine3"); - } - if (extensions.Contains("gl_ATI_texture_float")) - { - ATI_texture_float = true; - extensions.Remove("glATI_texture_float"); - } - if (extensions.Contains("gl_ATI_texture_mirror_once")) - { - ATI_texture_mirror_once = true; - extensions.Remove("glATI_texture_mirror_once"); - } - if (extensions.Contains("gl_ATI_vertex_array_object")) - { - ATI_vertex_array_object = true; - extensions.Remove("glATI_vertex_array_object"); - } - if (extensions.Contains("gl_ATI_vertex_attrib_array_object")) - { - ATI_vertex_attrib_array_object = true; - extensions.Remove("glATI_vertex_attrib_array_object"); - } - if (extensions.Contains("gl_ATI_vertex_streams")) - { - ATI_vertex_streams = true; - extensions.Remove("glATI_vertex_streams"); - } - if (extensions.Contains("gl_EXT_422_pixels")) - { - EXT_422_pixels = true; - extensions.Remove("glEXT_422_pixels"); - } - if (extensions.Contains("gl_EXT_EGL_image_storage")) - { - EXT_EGL_image_storage = true; - extensions.Remove("glEXT_EGL_image_storage"); - } - if (extensions.Contains("gl_EXT_EGL_sync")) - { - EXT_EGL_sync = true; - extensions.Remove("glEXT_EGL_sync"); - } - if (extensions.Contains("gl_EXT_abgr")) - { - EXT_abgr = true; - extensions.Remove("glEXT_abgr"); - } - if (extensions.Contains("gl_EXT_bgra")) - { - EXT_bgra = true; - extensions.Remove("glEXT_bgra"); - } - if (extensions.Contains("gl_EXT_bindable_uniform")) - { - EXT_bindable_uniform = true; - extensions.Remove("glEXT_bindable_uniform"); - } - if (extensions.Contains("gl_EXT_blend_color")) - { - EXT_blend_color = true; - extensions.Remove("glEXT_blend_color"); - } - if (extensions.Contains("gl_EXT_blend_equation_separate")) - { - EXT_blend_equation_separate = true; - extensions.Remove("glEXT_blend_equation_separate"); - } - if (extensions.Contains("gl_EXT_blend_func_separate")) - { - EXT_blend_func_separate = true; - extensions.Remove("glEXT_blend_func_separate"); - } - if (extensions.Contains("gl_EXT_blend_logic_op")) - { - EXT_blend_logic_op = true; - extensions.Remove("glEXT_blend_logic_op"); - } - if (extensions.Contains("gl_EXT_blend_minmax")) - { - EXT_blend_minmax = true; - extensions.Remove("glEXT_blend_minmax"); - } - if (extensions.Contains("gl_EXT_blend_subtract")) - { - EXT_blend_subtract = true; - extensions.Remove("glEXT_blend_subtract"); - } - if (extensions.Contains("gl_EXT_clip_volume_hint")) - { - EXT_clip_volume_hint = true; - extensions.Remove("glEXT_clip_volume_hint"); - } - if (extensions.Contains("gl_EXT_cmyka")) - { - EXT_cmyka = true; - extensions.Remove("glEXT_cmyka"); - } - if (extensions.Contains("gl_EXT_color_subtable")) - { - EXT_color_subtable = true; - extensions.Remove("glEXT_color_subtable"); - } - if (extensions.Contains("gl_EXT_compiled_vertex_array")) - { - EXT_compiled_vertex_array = true; - extensions.Remove("glEXT_compiled_vertex_array"); - } - if (extensions.Contains("gl_EXT_convolution")) - { - EXT_convolution = true; - extensions.Remove("glEXT_convolution"); - } - if (extensions.Contains("gl_EXT_coordinate_frame")) - { - EXT_coordinate_frame = true; - extensions.Remove("glEXT_coordinate_frame"); - } - if (extensions.Contains("gl_EXT_copy_texture")) - { - EXT_copy_texture = true; - extensions.Remove("glEXT_copy_texture"); - } - if (extensions.Contains("gl_EXT_cull_vertex")) - { - EXT_cull_vertex = true; - extensions.Remove("glEXT_cull_vertex"); - } - if (extensions.Contains("gl_EXT_debug_label")) - { - EXT_debug_label = true; - extensions.Remove("glEXT_debug_label"); - } - if (extensions.Contains("gl_EXT_debug_marker")) - { - EXT_debug_marker = true; - extensions.Remove("glEXT_debug_marker"); - } - if (extensions.Contains("gl_EXT_depth_bounds_test")) - { - EXT_depth_bounds_test = true; - extensions.Remove("glEXT_depth_bounds_test"); - } - if (extensions.Contains("gl_EXT_direct_state_access")) - { - EXT_direct_state_access = true; - extensions.Remove("glEXT_direct_state_access"); - } - if (extensions.Contains("gl_EXT_draw_buffers2")) - { - EXT_draw_buffers2 = true; - extensions.Remove("glEXT_draw_buffers2"); - } - if (extensions.Contains("gl_EXT_draw_instanced")) - { - EXT_draw_instanced = true; - extensions.Remove("glEXT_draw_instanced"); - } - if (extensions.Contains("gl_EXT_draw_range_elements")) - { - EXT_draw_range_elements = true; - extensions.Remove("glEXT_draw_range_elements"); - } - if (extensions.Contains("gl_EXT_external_buffer")) - { - EXT_external_buffer = true; - extensions.Remove("glEXT_external_buffer"); - } - if (extensions.Contains("gl_EXT_fog_coord")) - { - EXT_fog_coord = true; - extensions.Remove("glEXT_fog_coord"); - } - if (extensions.Contains("gl_EXT_framebuffer_blit")) - { - EXT_framebuffer_blit = true; - extensions.Remove("glEXT_framebuffer_blit"); - } - if (extensions.Contains("gl_EXT_framebuffer_blit_layers")) - { - EXT_framebuffer_blit_layers = true; - extensions.Remove("glEXT_framebuffer_blit_layers"); - } - if (extensions.Contains("gl_EXT_framebuffer_multisample")) - { - EXT_framebuffer_multisample = true; - extensions.Remove("glEXT_framebuffer_multisample"); - } - if (extensions.Contains("gl_EXT_framebuffer_multisample_blit_scaled")) - { - EXT_framebuffer_multisample_blit_scaled = true; - extensions.Remove("glEXT_framebuffer_multisample_blit_scaled"); - } - if (extensions.Contains("gl_EXT_framebuffer_object")) - { - EXT_framebuffer_object = true; - extensions.Remove("glEXT_framebuffer_object"); - } - if (extensions.Contains("gl_EXT_framebuffer_sRGB")) - { - EXT_framebuffer_sRGB = true; - extensions.Remove("glEXT_framebuffer_sRGB"); - } - if (extensions.Contains("gl_EXT_geometry_shader4")) - { - EXT_geometry_shader4 = true; - extensions.Remove("glEXT_geometry_shader4"); - } - if (extensions.Contains("gl_EXT_gpu_program_parameters")) - { - EXT_gpu_program_parameters = true; - extensions.Remove("glEXT_gpu_program_parameters"); - } - if (extensions.Contains("gl_EXT_gpu_shader4")) - { - EXT_gpu_shader4 = true; - extensions.Remove("glEXT_gpu_shader4"); - } - if (extensions.Contains("gl_EXT_histogram")) - { - EXT_histogram = true; - extensions.Remove("glEXT_histogram"); - } - if (extensions.Contains("gl_EXT_index_array_formats")) - { - EXT_index_array_formats = true; - extensions.Remove("glEXT_index_array_formats"); - } - if (extensions.Contains("gl_EXT_index_func")) - { - EXT_index_func = true; - extensions.Remove("glEXT_index_func"); - } - if (extensions.Contains("gl_EXT_index_material")) - { - EXT_index_material = true; - extensions.Remove("glEXT_index_material"); - } - if (extensions.Contains("gl_EXT_index_texture")) - { - EXT_index_texture = true; - extensions.Remove("glEXT_index_texture"); - } - if (extensions.Contains("gl_EXT_light_texture")) - { - EXT_light_texture = true; - extensions.Remove("glEXT_light_texture"); - } - if (extensions.Contains("gl_EXT_memory_object")) - { - EXT_memory_object = true; - extensions.Remove("glEXT_memory_object"); - } - if (extensions.Contains("gl_EXT_memory_object_fd")) - { - EXT_memory_object_fd = true; - extensions.Remove("glEXT_memory_object_fd"); - } - if (extensions.Contains("gl_EXT_memory_object_win32")) - { - EXT_memory_object_win32 = true; - extensions.Remove("glEXT_memory_object_win32"); - } - if (extensions.Contains("gl_EXT_misc_attribute")) - { - EXT_misc_attribute = true; - extensions.Remove("glEXT_misc_attribute"); - } - if (extensions.Contains("gl_EXT_multi_draw_arrays")) - { - EXT_multi_draw_arrays = true; - extensions.Remove("glEXT_multi_draw_arrays"); - } - if (extensions.Contains("gl_EXT_multisample")) - { - EXT_multisample = true; - extensions.Remove("glEXT_multisample"); - } - if (extensions.Contains("gl_EXT_multiview_tessellation_geometry_shader")) - { - EXT_multiview_tessellation_geometry_shader = true; - extensions.Remove("glEXT_multiview_tessellation_geometry_shader"); - } - if (extensions.Contains("gl_EXT_multiview_texture_multisample")) - { - EXT_multiview_texture_multisample = true; - extensions.Remove("glEXT_multiview_texture_multisample"); - } - if (extensions.Contains("gl_EXT_multiview_timer_query")) - { - EXT_multiview_timer_query = true; - extensions.Remove("glEXT_multiview_timer_query"); - } - if (extensions.Contains("gl_EXT_packed_depth_stencil")) - { - EXT_packed_depth_stencil = true; - extensions.Remove("glEXT_packed_depth_stencil"); - } - if (extensions.Contains("gl_EXT_packed_float")) - { - EXT_packed_float = true; - extensions.Remove("glEXT_packed_float"); - } - if (extensions.Contains("gl_EXT_packed_pixels")) - { - EXT_packed_pixels = true; - extensions.Remove("glEXT_packed_pixels"); - } - if (extensions.Contains("gl_EXT_paletted_texture")) - { - EXT_paletted_texture = true; - extensions.Remove("glEXT_paletted_texture"); - } - if (extensions.Contains("gl_EXT_pixel_buffer_object")) - { - EXT_pixel_buffer_object = true; - extensions.Remove("glEXT_pixel_buffer_object"); - } - if (extensions.Contains("gl_EXT_pixel_transform")) - { - EXT_pixel_transform = true; - extensions.Remove("glEXT_pixel_transform"); - } - if (extensions.Contains("gl_EXT_pixel_transform_color_table")) - { - EXT_pixel_transform_color_table = true; - extensions.Remove("glEXT_pixel_transform_color_table"); - } - if (extensions.Contains("gl_EXT_point_parameters")) - { - EXT_point_parameters = true; - extensions.Remove("glEXT_point_parameters"); - } - if (extensions.Contains("gl_EXT_polygon_offset")) - { - EXT_polygon_offset = true; - extensions.Remove("glEXT_polygon_offset"); - } - if (extensions.Contains("gl_EXT_polygon_offset_clamp")) - { - EXT_polygon_offset_clamp = true; - extensions.Remove("glEXT_polygon_offset_clamp"); - } - if (extensions.Contains("gl_EXT_post_depth_coverage")) - { - EXT_post_depth_coverage = true; - extensions.Remove("glEXT_post_depth_coverage"); - } - if (extensions.Contains("gl_EXT_provoking_vertex")) - { - EXT_provoking_vertex = true; - extensions.Remove("glEXT_provoking_vertex"); - } - if (extensions.Contains("gl_EXT_raster_multisample")) - { - EXT_raster_multisample = true; - extensions.Remove("glEXT_raster_multisample"); - } - if (extensions.Contains("gl_EXT_rescale_normal")) - { - EXT_rescale_normal = true; - extensions.Remove("glEXT_rescale_normal"); - } - if (extensions.Contains("gl_EXT_secondary_color")) - { - EXT_secondary_color = true; - extensions.Remove("glEXT_secondary_color"); - } - if (extensions.Contains("gl_EXT_semaphore")) - { - EXT_semaphore = true; - extensions.Remove("glEXT_semaphore"); - } - if (extensions.Contains("gl_EXT_semaphore_fd")) - { - EXT_semaphore_fd = true; - extensions.Remove("glEXT_semaphore_fd"); - } - if (extensions.Contains("gl_EXT_semaphore_win32")) - { - EXT_semaphore_win32 = true; - extensions.Remove("glEXT_semaphore_win32"); - } - if (extensions.Contains("gl_EXT_separate_shader_objects")) - { - EXT_separate_shader_objects = true; - extensions.Remove("glEXT_separate_shader_objects"); - } - if (extensions.Contains("gl_EXT_separate_specular_color")) - { - EXT_separate_specular_color = true; - extensions.Remove("glEXT_separate_specular_color"); - } - if (extensions.Contains("gl_EXT_shader_framebuffer_fetch")) - { - EXT_shader_framebuffer_fetch = true; - extensions.Remove("glEXT_shader_framebuffer_fetch"); - } - if (extensions.Contains("gl_EXT_shader_framebuffer_fetch_non_coherent")) - { - EXT_shader_framebuffer_fetch_non_coherent = true; - extensions.Remove("glEXT_shader_framebuffer_fetch_non_coherent"); - } - if (extensions.Contains("gl_EXT_shader_image_load_formatted")) - { - EXT_shader_image_load_formatted = true; - extensions.Remove("glEXT_shader_image_load_formatted"); - } - if (extensions.Contains("gl_EXT_shader_image_load_store")) - { - EXT_shader_image_load_store = true; - extensions.Remove("glEXT_shader_image_load_store"); - } - if (extensions.Contains("gl_EXT_shader_integer_mix")) - { - EXT_shader_integer_mix = true; - extensions.Remove("glEXT_shader_integer_mix"); - } - if (extensions.Contains("gl_EXT_shader_samples_identical")) - { - EXT_shader_samples_identical = true; - extensions.Remove("glEXT_shader_samples_identical"); - } - if (extensions.Contains("gl_EXT_shadow_funcs")) - { - EXT_shadow_funcs = true; - extensions.Remove("glEXT_shadow_funcs"); - } - if (extensions.Contains("gl_EXT_shared_texture_palette")) - { - EXT_shared_texture_palette = true; - extensions.Remove("glEXT_shared_texture_palette"); - } - if (extensions.Contains("gl_EXT_sparse_texture2")) - { - EXT_sparse_texture2 = true; - extensions.Remove("glEXT_sparse_texture2"); - } - if (extensions.Contains("gl_EXT_stencil_clear_tag")) - { - EXT_stencil_clear_tag = true; - extensions.Remove("glEXT_stencil_clear_tag"); - } - if (extensions.Contains("gl_EXT_stencil_two_side")) - { - EXT_stencil_two_side = true; - extensions.Remove("glEXT_stencil_two_side"); - } - if (extensions.Contains("gl_EXT_stencil_wrap")) - { - EXT_stencil_wrap = true; - extensions.Remove("glEXT_stencil_wrap"); - } - if (extensions.Contains("gl_EXT_subtexture")) - { - EXT_subtexture = true; - extensions.Remove("glEXT_subtexture"); - } - if (extensions.Contains("gl_EXT_texture")) - { - EXT_texture = true; - extensions.Remove("glEXT_texture"); - } - if (extensions.Contains("gl_EXT_texture3D")) - { - EXT_texture3D = true; - extensions.Remove("glEXT_texture3D"); - } - if (extensions.Contains("gl_EXT_texture_array")) - { - EXT_texture_array = true; - extensions.Remove("glEXT_texture_array"); - } - if (extensions.Contains("gl_EXT_texture_buffer_object")) - { - EXT_texture_buffer_object = true; - extensions.Remove("glEXT_texture_buffer_object"); - } - if (extensions.Contains("gl_EXT_texture_compression_latc")) - { - EXT_texture_compression_latc = true; - extensions.Remove("glEXT_texture_compression_latc"); - } - if (extensions.Contains("gl_EXT_texture_compression_rgtc")) - { - EXT_texture_compression_rgtc = true; - extensions.Remove("glEXT_texture_compression_rgtc"); - } - if (extensions.Contains("gl_EXT_texture_compression_s3tc")) - { - EXT_texture_compression_s3tc = true; - extensions.Remove("glEXT_texture_compression_s3tc"); - } - if (extensions.Contains("gl_EXT_texture_cube_map")) - { - EXT_texture_cube_map = true; - extensions.Remove("glEXT_texture_cube_map"); - } - if (extensions.Contains("gl_EXT_texture_env_add")) - { - EXT_texture_env_add = true; - extensions.Remove("glEXT_texture_env_add"); - } - if (extensions.Contains("gl_EXT_texture_env_combine")) - { - EXT_texture_env_combine = true; - extensions.Remove("glEXT_texture_env_combine"); - } - if (extensions.Contains("gl_EXT_texture_env_dot3")) - { - EXT_texture_env_dot3 = true; - extensions.Remove("glEXT_texture_env_dot3"); - } - if (extensions.Contains("gl_EXT_texture_filter_anisotropic")) - { - EXT_texture_filter_anisotropic = true; - extensions.Remove("glEXT_texture_filter_anisotropic"); - } - if (extensions.Contains("gl_EXT_texture_filter_minmax")) - { - EXT_texture_filter_minmax = true; - extensions.Remove("glEXT_texture_filter_minmax"); - } - if (extensions.Contains("gl_EXT_texture_integer")) - { - EXT_texture_integer = true; - extensions.Remove("glEXT_texture_integer"); - } - if (extensions.Contains("gl_EXT_texture_lod_bias")) - { - EXT_texture_lod_bias = true; - extensions.Remove("glEXT_texture_lod_bias"); - } - if (extensions.Contains("gl_EXT_texture_mirror_clamp")) - { - EXT_texture_mirror_clamp = true; - extensions.Remove("glEXT_texture_mirror_clamp"); - } - if (extensions.Contains("gl_EXT_texture_object")) - { - EXT_texture_object = true; - extensions.Remove("glEXT_texture_object"); - } - if (extensions.Contains("gl_EXT_texture_perturb_normal")) - { - EXT_texture_perturb_normal = true; - extensions.Remove("glEXT_texture_perturb_normal"); - } - if (extensions.Contains("gl_EXT_texture_sRGB")) - { - EXT_texture_sRGB = true; - extensions.Remove("glEXT_texture_sRGB"); - } - if (extensions.Contains("gl_EXT_texture_sRGB_R8")) - { - EXT_texture_sRGB_R8 = true; - extensions.Remove("glEXT_texture_sRGB_R8"); - } - if (extensions.Contains("gl_EXT_texture_sRGB_RG8")) - { - EXT_texture_sRGB_RG8 = true; - extensions.Remove("glEXT_texture_sRGB_RG8"); - } - if (extensions.Contains("gl_EXT_texture_sRGB_decode")) - { - EXT_texture_sRGB_decode = true; - extensions.Remove("glEXT_texture_sRGB_decode"); - } - if (extensions.Contains("gl_EXT_texture_shadow_lod")) - { - EXT_texture_shadow_lod = true; - extensions.Remove("glEXT_texture_shadow_lod"); - } - if (extensions.Contains("gl_EXT_texture_shared_exponent")) - { - EXT_texture_shared_exponent = true; - extensions.Remove("glEXT_texture_shared_exponent"); - } - if (extensions.Contains("gl_EXT_texture_snorm")) - { - EXT_texture_snorm = true; - extensions.Remove("glEXT_texture_snorm"); - } - if (extensions.Contains("gl_EXT_texture_storage")) - { - EXT_texture_storage = true; - extensions.Remove("glEXT_texture_storage"); - } - if (extensions.Contains("gl_EXT_texture_swizzle")) - { - EXT_texture_swizzle = true; - extensions.Remove("glEXT_texture_swizzle"); - } - if (extensions.Contains("gl_EXT_timer_query")) - { - EXT_timer_query = true; - extensions.Remove("glEXT_timer_query"); - } - if (extensions.Contains("gl_EXT_transform_feedback")) - { - EXT_transform_feedback = true; - extensions.Remove("glEXT_transform_feedback"); - } - if (extensions.Contains("gl_EXT_vertex_array")) - { - EXT_vertex_array = true; - extensions.Remove("glEXT_vertex_array"); - } - if (extensions.Contains("gl_EXT_vertex_array_bgra")) - { - EXT_vertex_array_bgra = true; - extensions.Remove("glEXT_vertex_array_bgra"); - } - if (extensions.Contains("gl_EXT_vertex_attrib_64bit")) - { - EXT_vertex_attrib_64bit = true; - extensions.Remove("glEXT_vertex_attrib_64bit"); - } - if (extensions.Contains("gl_EXT_vertex_shader")) - { - EXT_vertex_shader = true; - extensions.Remove("glEXT_vertex_shader"); - } - if (extensions.Contains("gl_EXT_vertex_weighting")) - { - EXT_vertex_weighting = true; - extensions.Remove("glEXT_vertex_weighting"); - } - if (extensions.Contains("gl_EXT_win32_keyed_mutex")) - { - EXT_win32_keyed_mutex = true; - extensions.Remove("glEXT_win32_keyed_mutex"); - } - if (extensions.Contains("gl_EXT_window_rectangles")) - { - EXT_window_rectangles = true; - extensions.Remove("glEXT_window_rectangles"); - } - if (extensions.Contains("gl_EXT_x11_sync_object")) - { - EXT_x11_sync_object = true; - extensions.Remove("glEXT_x11_sync_object"); - } - if (extensions.Contains("gl_GREMEDY_frame_terminator")) - { - GREMEDY_frame_terminator = true; - extensions.Remove("glGREMEDY_frame_terminator"); - } - if (extensions.Contains("gl_GREMEDY_string_marker")) - { - GREMEDY_string_marker = true; - extensions.Remove("glGREMEDY_string_marker"); - } - if (extensions.Contains("gl_HP_convolution_border_modes")) - { - HP_convolution_border_modes = true; - extensions.Remove("glHP_convolution_border_modes"); - } - if (extensions.Contains("gl_HP_image_transform")) - { - HP_image_transform = true; - extensions.Remove("glHP_image_transform"); - } - if (extensions.Contains("gl_HP_occlusion_test")) - { - HP_occlusion_test = true; - extensions.Remove("glHP_occlusion_test"); - } - if (extensions.Contains("gl_HP_texture_lighting")) - { - HP_texture_lighting = true; - extensions.Remove("glHP_texture_lighting"); - } - if (extensions.Contains("gl_IBM_cull_vertex")) - { - IBM_cull_vertex = true; - extensions.Remove("glIBM_cull_vertex"); - } - if (extensions.Contains("gl_IBM_multimode_draw_arrays")) - { - IBM_multimode_draw_arrays = true; - extensions.Remove("glIBM_multimode_draw_arrays"); - } - if (extensions.Contains("gl_IBM_rasterpos_clip")) - { - IBM_rasterpos_clip = true; - extensions.Remove("glIBM_rasterpos_clip"); - } - if (extensions.Contains("gl_IBM_static_data")) - { - IBM_static_data = true; - extensions.Remove("glIBM_static_data"); - } - if (extensions.Contains("gl_IBM_texture_mirrored_repeat")) - { - IBM_texture_mirrored_repeat = true; - extensions.Remove("glIBM_texture_mirrored_repeat"); - } - if (extensions.Contains("gl_IBM_vertex_array_lists")) - { - IBM_vertex_array_lists = true; - extensions.Remove("glIBM_vertex_array_lists"); - } - if (extensions.Contains("gl_INGR_blend_func_separate")) - { - INGR_blend_func_separate = true; - extensions.Remove("glINGR_blend_func_separate"); - } - if (extensions.Contains("gl_INGR_color_clamp")) - { - INGR_color_clamp = true; - extensions.Remove("glINGR_color_clamp"); - } - if (extensions.Contains("gl_INGR_interlace_read")) - { - INGR_interlace_read = true; - extensions.Remove("glINGR_interlace_read"); - } - if (extensions.Contains("gl_INTEL_blackhole_render")) - { - INTEL_blackhole_render = true; - extensions.Remove("glINTEL_blackhole_render"); - } - if (extensions.Contains("gl_INTEL_conservative_rasterization")) - { - INTEL_conservative_rasterization = true; - extensions.Remove("glINTEL_conservative_rasterization"); - } - if (extensions.Contains("gl_INTEL_fragment_shader_ordering")) - { - INTEL_fragment_shader_ordering = true; - extensions.Remove("glINTEL_fragment_shader_ordering"); - } - if (extensions.Contains("gl_INTEL_framebuffer_CMAA")) - { - INTEL_framebuffer_CMAA = true; - extensions.Remove("glINTEL_framebuffer_CMAA"); - } - if (extensions.Contains("gl_INTEL_map_texture")) - { - INTEL_map_texture = true; - extensions.Remove("glINTEL_map_texture"); - } - if (extensions.Contains("gl_INTEL_parallel_arrays")) - { - INTEL_parallel_arrays = true; - extensions.Remove("glINTEL_parallel_arrays"); - } - if (extensions.Contains("gl_INTEL_performance_query")) - { - INTEL_performance_query = true; - extensions.Remove("glINTEL_performance_query"); - } - if (extensions.Contains("gl_KHR_blend_equation_advanced")) - { - KHR_blend_equation_advanced = true; - extensions.Remove("glKHR_blend_equation_advanced"); - } - if (extensions.Contains("gl_KHR_blend_equation_advanced_coherent")) - { - KHR_blend_equation_advanced_coherent = true; - extensions.Remove("glKHR_blend_equation_advanced_coherent"); - } - if (extensions.Contains("gl_KHR_context_flush_control")) - { - KHR_context_flush_control = true; - extensions.Remove("glKHR_context_flush_control"); - } - if (extensions.Contains("gl_KHR_debug")) - { - KHR_debug = true; - extensions.Remove("glKHR_debug"); - } - if (extensions.Contains("gl_KHR_no_error")) - { - KHR_no_error = true; - extensions.Remove("glKHR_no_error"); - } - if (extensions.Contains("gl_KHR_parallel_shader_compile")) - { - KHR_parallel_shader_compile = true; - extensions.Remove("glKHR_parallel_shader_compile"); - } - if (extensions.Contains("gl_KHR_robust_buffer_access_behavior")) - { - KHR_robust_buffer_access_behavior = true; - extensions.Remove("glKHR_robust_buffer_access_behavior"); - } - if (extensions.Contains("gl_KHR_robustness")) - { - KHR_robustness = true; - extensions.Remove("glKHR_robustness"); - } - if (extensions.Contains("gl_KHR_shader_subgroup")) - { - KHR_shader_subgroup = true; - extensions.Remove("glKHR_shader_subgroup"); - } - if (extensions.Contains("gl_KHR_texture_compression_astc_hdr")) - { - KHR_texture_compression_astc_hdr = true; - extensions.Remove("glKHR_texture_compression_astc_hdr"); - } - if (extensions.Contains("gl_KHR_texture_compression_astc_ldr")) - { - KHR_texture_compression_astc_ldr = true; - extensions.Remove("glKHR_texture_compression_astc_ldr"); - } - if (extensions.Contains("gl_KHR_texture_compression_astc_sliced_3d")) - { - KHR_texture_compression_astc_sliced_3d = true; - extensions.Remove("glKHR_texture_compression_astc_sliced_3d"); - } - if (extensions.Contains("gl_MESAX_texture_stack")) - { - MESAX_texture_stack = true; - extensions.Remove("glMESAX_texture_stack"); - } - if (extensions.Contains("gl_MESA_framebuffer_flip_x")) - { - MESA_framebuffer_flip_x = true; - extensions.Remove("glMESA_framebuffer_flip_x"); - } - if (extensions.Contains("gl_MESA_framebuffer_flip_y")) - { - MESA_framebuffer_flip_y = true; - extensions.Remove("glMESA_framebuffer_flip_y"); - } - if (extensions.Contains("gl_MESA_framebuffer_swap_xy")) - { - MESA_framebuffer_swap_xy = true; - extensions.Remove("glMESA_framebuffer_swap_xy"); - } - if (extensions.Contains("gl_MESA_pack_invert")) - { - MESA_pack_invert = true; - extensions.Remove("glMESA_pack_invert"); - } - if (extensions.Contains("gl_MESA_program_binary_formats")) - { - MESA_program_binary_formats = true; - extensions.Remove("glMESA_program_binary_formats"); - } - if (extensions.Contains("gl_MESA_resize_buffers")) - { - MESA_resize_buffers = true; - extensions.Remove("glMESA_resize_buffers"); - } - if (extensions.Contains("gl_MESA_shader_integer_functions")) - { - MESA_shader_integer_functions = true; - extensions.Remove("glMESA_shader_integer_functions"); - } - if (extensions.Contains("gl_MESA_tile_raster_order")) - { - MESA_tile_raster_order = true; - extensions.Remove("glMESA_tile_raster_order"); - } - if (extensions.Contains("gl_MESA_window_pos")) - { - MESA_window_pos = true; - extensions.Remove("glMESA_window_pos"); - } - if (extensions.Contains("gl_MESA_ycbcr_texture")) - { - MESA_ycbcr_texture = true; - extensions.Remove("glMESA_ycbcr_texture"); - } - if (extensions.Contains("gl_NVX_blend_equation_advanced_multi_draw_buffers")) - { - NVX_blend_equation_advanced_multi_draw_buffers = true; - extensions.Remove("glNVX_blend_equation_advanced_multi_draw_buffers"); - } - if (extensions.Contains("gl_NVX_conditional_render")) - { - NVX_conditional_render = true; - extensions.Remove("glNVX_conditional_render"); - } - if (extensions.Contains("gl_NVX_gpu_memory_info")) - { - NVX_gpu_memory_info = true; - extensions.Remove("glNVX_gpu_memory_info"); - } - if (extensions.Contains("gl_NVX_gpu_multicast2")) - { - NVX_gpu_multicast2 = true; - extensions.Remove("glNVX_gpu_multicast2"); - } - if (extensions.Contains("gl_NVX_linked_gpu_multicast")) - { - NVX_linked_gpu_multicast = true; - extensions.Remove("glNVX_linked_gpu_multicast"); - } - if (extensions.Contains("gl_NVX_progress_fence")) - { - NVX_progress_fence = true; - extensions.Remove("glNVX_progress_fence"); - } - if (extensions.Contains("gl_NV_alpha_to_coverage_dither_control")) - { - NV_alpha_to_coverage_dither_control = true; - extensions.Remove("glNV_alpha_to_coverage_dither_control"); - } - if (extensions.Contains("gl_NV_bindless_multi_draw_indirect")) - { - NV_bindless_multi_draw_indirect = true; - extensions.Remove("glNV_bindless_multi_draw_indirect"); - } - if (extensions.Contains("gl_NV_bindless_multi_draw_indirect_count")) - { - NV_bindless_multi_draw_indirect_count = true; - extensions.Remove("glNV_bindless_multi_draw_indirect_count"); - } - if (extensions.Contains("gl_NV_bindless_texture")) - { - NV_bindless_texture = true; - extensions.Remove("glNV_bindless_texture"); - } - if (extensions.Contains("gl_NV_blend_equation_advanced")) - { - NV_blend_equation_advanced = true; - extensions.Remove("glNV_blend_equation_advanced"); - } - if (extensions.Contains("gl_NV_blend_equation_advanced_coherent")) - { - NV_blend_equation_advanced_coherent = true; - extensions.Remove("glNV_blend_equation_advanced_coherent"); - } - if (extensions.Contains("gl_NV_blend_minmax_factor")) - { - NV_blend_minmax_factor = true; - extensions.Remove("glNV_blend_minmax_factor"); - } - if (extensions.Contains("gl_NV_blend_square")) - { - NV_blend_square = true; - extensions.Remove("glNV_blend_square"); - } - if (extensions.Contains("gl_NV_clip_space_w_scaling")) - { - NV_clip_space_w_scaling = true; - extensions.Remove("glNV_clip_space_w_scaling"); - } - if (extensions.Contains("gl_NV_command_list")) - { - NV_command_list = true; - extensions.Remove("glNV_command_list"); - } - if (extensions.Contains("gl_NV_compute_program5")) - { - NV_compute_program5 = true; - extensions.Remove("glNV_compute_program5"); - } - if (extensions.Contains("gl_NV_compute_shader_derivatives")) - { - NV_compute_shader_derivatives = true; - extensions.Remove("glNV_compute_shader_derivatives"); - } - if (extensions.Contains("gl_NV_conditional_render")) - { - NV_conditional_render = true; - extensions.Remove("glNV_conditional_render"); - } - if (extensions.Contains("gl_NV_conservative_raster")) - { - NV_conservative_raster = true; - extensions.Remove("glNV_conservative_raster"); - } - if (extensions.Contains("gl_NV_conservative_raster_dilate")) - { - NV_conservative_raster_dilate = true; - extensions.Remove("glNV_conservative_raster_dilate"); - } - if (extensions.Contains("gl_NV_conservative_raster_pre_snap")) - { - NV_conservative_raster_pre_snap = true; - extensions.Remove("glNV_conservative_raster_pre_snap"); - } - if (extensions.Contains("gl_NV_conservative_raster_pre_snap_triangles")) - { - NV_conservative_raster_pre_snap_triangles = true; - extensions.Remove("glNV_conservative_raster_pre_snap_triangles"); - } - if (extensions.Contains("gl_NV_conservative_raster_underestimation")) - { - NV_conservative_raster_underestimation = true; - extensions.Remove("glNV_conservative_raster_underestimation"); - } - if (extensions.Contains("gl_NV_copy_depth_to_color")) - { - NV_copy_depth_to_color = true; - extensions.Remove("glNV_copy_depth_to_color"); - } - if (extensions.Contains("gl_NV_copy_image")) - { - NV_copy_image = true; - extensions.Remove("glNV_copy_image"); - } - if (extensions.Contains("gl_NV_deep_texture3D")) - { - NV_deep_texture3D = true; - extensions.Remove("glNV_deep_texture3D"); - } - if (extensions.Contains("gl_NV_depth_buffer_float")) - { - NV_depth_buffer_float = true; - extensions.Remove("glNV_depth_buffer_float"); - } - if (extensions.Contains("gl_NV_depth_clamp")) - { - NV_depth_clamp = true; - extensions.Remove("glNV_depth_clamp"); - } - if (extensions.Contains("gl_NV_draw_texture")) - { - NV_draw_texture = true; - extensions.Remove("glNV_draw_texture"); - } - if (extensions.Contains("gl_NV_draw_vulkan_image")) - { - NV_draw_vulkan_image = true; - extensions.Remove("glNV_draw_vulkan_image"); - } - if (extensions.Contains("gl_NV_evaluators")) - { - NV_evaluators = true; - extensions.Remove("glNV_evaluators"); - } - if (extensions.Contains("gl_NV_explicit_multisample")) - { - NV_explicit_multisample = true; - extensions.Remove("glNV_explicit_multisample"); - } - if (extensions.Contains("gl_NV_fence")) - { - NV_fence = true; - extensions.Remove("glNV_fence"); - } - if (extensions.Contains("gl_NV_fill_rectangle")) - { - NV_fill_rectangle = true; - extensions.Remove("glNV_fill_rectangle"); - } - if (extensions.Contains("gl_NV_float_buffer")) - { - NV_float_buffer = true; - extensions.Remove("glNV_float_buffer"); - } - if (extensions.Contains("gl_NV_fog_distance")) - { - NV_fog_distance = true; - extensions.Remove("glNV_fog_distance"); - } - if (extensions.Contains("gl_NV_fragment_coverage_to_color")) - { - NV_fragment_coverage_to_color = true; - extensions.Remove("glNV_fragment_coverage_to_color"); - } - if (extensions.Contains("gl_NV_fragment_program")) - { - NV_fragment_program = true; - extensions.Remove("glNV_fragment_program"); - } - if (extensions.Contains("gl_NV_fragment_program2")) - { - NV_fragment_program2 = true; - extensions.Remove("glNV_fragment_program2"); - } - if (extensions.Contains("gl_NV_fragment_program4")) - { - NV_fragment_program4 = true; - extensions.Remove("glNV_fragment_program4"); - } - if (extensions.Contains("gl_NV_fragment_program_option")) - { - NV_fragment_program_option = true; - extensions.Remove("glNV_fragment_program_option"); - } - if (extensions.Contains("gl_NV_fragment_shader_barycentric")) - { - NV_fragment_shader_barycentric = true; - extensions.Remove("glNV_fragment_shader_barycentric"); - } - if (extensions.Contains("gl_NV_fragment_shader_interlock")) - { - NV_fragment_shader_interlock = true; - extensions.Remove("glNV_fragment_shader_interlock"); - } - if (extensions.Contains("gl_NV_framebuffer_mixed_samples")) - { - NV_framebuffer_mixed_samples = true; - extensions.Remove("glNV_framebuffer_mixed_samples"); - } - if (extensions.Contains("gl_NV_framebuffer_multisample_coverage")) - { - NV_framebuffer_multisample_coverage = true; - extensions.Remove("glNV_framebuffer_multisample_coverage"); - } - if (extensions.Contains("gl_NV_geometry_program4")) - { - NV_geometry_program4 = true; - extensions.Remove("glNV_geometry_program4"); - } - if (extensions.Contains("gl_NV_geometry_shader4")) - { - NV_geometry_shader4 = true; - extensions.Remove("glNV_geometry_shader4"); - } - if (extensions.Contains("gl_NV_geometry_shader_passthrough")) - { - NV_geometry_shader_passthrough = true; - extensions.Remove("glNV_geometry_shader_passthrough"); - } - if (extensions.Contains("gl_NV_gpu_multicast")) - { - NV_gpu_multicast = true; - extensions.Remove("glNV_gpu_multicast"); - } - if (extensions.Contains("gl_NV_gpu_program4")) - { - NV_gpu_program4 = true; - extensions.Remove("glNV_gpu_program4"); - } - if (extensions.Contains("gl_NV_gpu_program5")) - { - NV_gpu_program5 = true; - extensions.Remove("glNV_gpu_program5"); - } - if (extensions.Contains("gl_NV_gpu_program5_mem_extended")) - { - NV_gpu_program5_mem_extended = true; - extensions.Remove("glNV_gpu_program5_mem_extended"); - } - if (extensions.Contains("gl_NV_gpu_shader5")) - { - NV_gpu_shader5 = true; - extensions.Remove("glNV_gpu_shader5"); - } - if (extensions.Contains("gl_NV_half_float")) - { - NV_half_float = true; - extensions.Remove("glNV_half_float"); - } - if (extensions.Contains("gl_NV_internalformat_sample_query")) - { - NV_internalformat_sample_query = true; - extensions.Remove("glNV_internalformat_sample_query"); - } - if (extensions.Contains("gl_NV_light_max_exponent")) - { - NV_light_max_exponent = true; - extensions.Remove("glNV_light_max_exponent"); - } - if (extensions.Contains("gl_NV_memory_attachment")) - { - NV_memory_attachment = true; - extensions.Remove("glNV_memory_attachment"); - } - if (extensions.Contains("gl_NV_memory_object_sparse")) - { - NV_memory_object_sparse = true; - extensions.Remove("glNV_memory_object_sparse"); - } - if (extensions.Contains("gl_NV_mesh_shader")) - { - NV_mesh_shader = true; - extensions.Remove("glNV_mesh_shader"); - } - if (extensions.Contains("gl_NV_multisample_coverage")) - { - NV_multisample_coverage = true; - extensions.Remove("glNV_multisample_coverage"); - } - if (extensions.Contains("gl_NV_multisample_filter_hint")) - { - NV_multisample_filter_hint = true; - extensions.Remove("glNV_multisample_filter_hint"); - } - if (extensions.Contains("gl_NV_occlusion_query")) - { - NV_occlusion_query = true; - extensions.Remove("glNV_occlusion_query"); - } - if (extensions.Contains("gl_NV_packed_depth_stencil")) - { - NV_packed_depth_stencil = true; - extensions.Remove("glNV_packed_depth_stencil"); - } - if (extensions.Contains("gl_NV_parameter_buffer_object")) - { - NV_parameter_buffer_object = true; - extensions.Remove("glNV_parameter_buffer_object"); - } - if (extensions.Contains("gl_NV_parameter_buffer_object2")) - { - NV_parameter_buffer_object2 = true; - extensions.Remove("glNV_parameter_buffer_object2"); - } - if (extensions.Contains("gl_NV_path_rendering")) - { - NV_path_rendering = true; - extensions.Remove("glNV_path_rendering"); - } - if (extensions.Contains("gl_NV_path_rendering_shared_edge")) - { - NV_path_rendering_shared_edge = true; - extensions.Remove("glNV_path_rendering_shared_edge"); - } - if (extensions.Contains("gl_NV_pixel_data_range")) - { - NV_pixel_data_range = true; - extensions.Remove("glNV_pixel_data_range"); - } - if (extensions.Contains("gl_NV_point_sprite")) - { - NV_point_sprite = true; - extensions.Remove("glNV_point_sprite"); - } - if (extensions.Contains("gl_NV_present_video")) - { - NV_present_video = true; - extensions.Remove("glNV_present_video"); - } - if (extensions.Contains("gl_NV_primitive_restart")) - { - NV_primitive_restart = true; - extensions.Remove("glNV_primitive_restart"); - } - if (extensions.Contains("gl_NV_primitive_shading_rate")) - { - NV_primitive_shading_rate = true; - extensions.Remove("glNV_primitive_shading_rate"); - } - if (extensions.Contains("gl_NV_query_resource")) - { - NV_query_resource = true; - extensions.Remove("glNV_query_resource"); - } - if (extensions.Contains("gl_NV_query_resource_tag")) - { - NV_query_resource_tag = true; - extensions.Remove("glNV_query_resource_tag"); - } - if (extensions.Contains("gl_NV_register_combiners")) - { - NV_register_combiners = true; - extensions.Remove("glNV_register_combiners"); - } - if (extensions.Contains("gl_NV_register_combiners2")) - { - NV_register_combiners2 = true; - extensions.Remove("glNV_register_combiners2"); - } - if (extensions.Contains("gl_NV_representative_fragment_test")) - { - NV_representative_fragment_test = true; - extensions.Remove("glNV_representative_fragment_test"); - } - if (extensions.Contains("gl_NV_robustness_video_memory_purge")) - { - NV_robustness_video_memory_purge = true; - extensions.Remove("glNV_robustness_video_memory_purge"); - } - if (extensions.Contains("gl_NV_sample_locations")) - { - NV_sample_locations = true; - extensions.Remove("glNV_sample_locations"); - } - if (extensions.Contains("gl_NV_sample_mask_override_coverage")) - { - NV_sample_mask_override_coverage = true; - extensions.Remove("glNV_sample_mask_override_coverage"); - } - if (extensions.Contains("gl_NV_scissor_exclusive")) - { - NV_scissor_exclusive = true; - extensions.Remove("glNV_scissor_exclusive"); - } - if (extensions.Contains("gl_NV_shader_atomic_counters")) - { - NV_shader_atomic_counters = true; - extensions.Remove("glNV_shader_atomic_counters"); - } - if (extensions.Contains("gl_NV_shader_atomic_float")) - { - NV_shader_atomic_float = true; - extensions.Remove("glNV_shader_atomic_float"); - } - if (extensions.Contains("gl_NV_shader_atomic_float64")) - { - NV_shader_atomic_float64 = true; - extensions.Remove("glNV_shader_atomic_float64"); - } - if (extensions.Contains("gl_NV_shader_atomic_fp16_vector")) - { - NV_shader_atomic_fp16_vector = true; - extensions.Remove("glNV_shader_atomic_fp16_vector"); - } - if (extensions.Contains("gl_NV_shader_atomic_int64")) - { - NV_shader_atomic_int64 = true; - extensions.Remove("glNV_shader_atomic_int64"); - } - if (extensions.Contains("gl_NV_shader_buffer_load")) - { - NV_shader_buffer_load = true; - extensions.Remove("glNV_shader_buffer_load"); - } - if (extensions.Contains("gl_NV_shader_buffer_store")) - { - NV_shader_buffer_store = true; - extensions.Remove("glNV_shader_buffer_store"); - } - if (extensions.Contains("gl_NV_shader_storage_buffer_object")) - { - NV_shader_storage_buffer_object = true; - extensions.Remove("glNV_shader_storage_buffer_object"); - } - if (extensions.Contains("gl_NV_shader_subgroup_partitioned")) - { - NV_shader_subgroup_partitioned = true; - extensions.Remove("glNV_shader_subgroup_partitioned"); - } - if (extensions.Contains("gl_NV_shader_texture_footprint")) - { - NV_shader_texture_footprint = true; - extensions.Remove("glNV_shader_texture_footprint"); - } - if (extensions.Contains("gl_NV_shader_thread_group")) - { - NV_shader_thread_group = true; - extensions.Remove("glNV_shader_thread_group"); - } - if (extensions.Contains("gl_NV_shader_thread_shuffle")) - { - NV_shader_thread_shuffle = true; - extensions.Remove("glNV_shader_thread_shuffle"); - } - if (extensions.Contains("gl_NV_shading_rate_image")) - { - NV_shading_rate_image = true; - extensions.Remove("glNV_shading_rate_image"); - } - if (extensions.Contains("gl_NV_stereo_view_rendering")) - { - NV_stereo_view_rendering = true; - extensions.Remove("glNV_stereo_view_rendering"); - } - if (extensions.Contains("gl_NV_tessellation_program5")) - { - NV_tessellation_program5 = true; - extensions.Remove("glNV_tessellation_program5"); - } - if (extensions.Contains("gl_NV_texgen_emboss")) - { - NV_texgen_emboss = true; - extensions.Remove("glNV_texgen_emboss"); - } - if (extensions.Contains("gl_NV_texgen_reflection")) - { - NV_texgen_reflection = true; - extensions.Remove("glNV_texgen_reflection"); - } - if (extensions.Contains("gl_NV_texture_barrier")) - { - NV_texture_barrier = true; - extensions.Remove("glNV_texture_barrier"); - } - if (extensions.Contains("gl_NV_texture_compression_vtc")) - { - NV_texture_compression_vtc = true; - extensions.Remove("glNV_texture_compression_vtc"); - } - if (extensions.Contains("gl_NV_texture_env_combine4")) - { - NV_texture_env_combine4 = true; - extensions.Remove("glNV_texture_env_combine4"); - } - if (extensions.Contains("gl_NV_texture_expand_normal")) - { - NV_texture_expand_normal = true; - extensions.Remove("glNV_texture_expand_normal"); - } - if (extensions.Contains("gl_NV_texture_multisample")) - { - NV_texture_multisample = true; - extensions.Remove("glNV_texture_multisample"); - } - if (extensions.Contains("gl_NV_texture_rectangle")) - { - NV_texture_rectangle = true; - extensions.Remove("glNV_texture_rectangle"); - } - if (extensions.Contains("gl_NV_texture_rectangle_compressed")) - { - NV_texture_rectangle_compressed = true; - extensions.Remove("glNV_texture_rectangle_compressed"); - } - if (extensions.Contains("gl_NV_texture_shader")) - { - NV_texture_shader = true; - extensions.Remove("glNV_texture_shader"); - } - if (extensions.Contains("gl_NV_texture_shader2")) - { - NV_texture_shader2 = true; - extensions.Remove("glNV_texture_shader2"); - } - if (extensions.Contains("gl_NV_texture_shader3")) - { - NV_texture_shader3 = true; - extensions.Remove("glNV_texture_shader3"); - } - if (extensions.Contains("gl_NV_timeline_semaphore")) - { - NV_timeline_semaphore = true; - extensions.Remove("glNV_timeline_semaphore"); - } - if (extensions.Contains("gl_NV_transform_feedback")) - { - NV_transform_feedback = true; - extensions.Remove("glNV_transform_feedback"); - } - if (extensions.Contains("gl_NV_transform_feedback2")) - { - NV_transform_feedback2 = true; - extensions.Remove("glNV_transform_feedback2"); - } - if (extensions.Contains("gl_NV_uniform_buffer_std430_layout")) - { - NV_uniform_buffer_std430_layout = true; - extensions.Remove("glNV_uniform_buffer_std430_layout"); - } - if (extensions.Contains("gl_NV_uniform_buffer_unified_memory")) - { - NV_uniform_buffer_unified_memory = true; - extensions.Remove("glNV_uniform_buffer_unified_memory"); - } - if (extensions.Contains("gl_NV_vdpau_interop")) - { - NV_vdpau_interop = true; - extensions.Remove("glNV_vdpau_interop"); - } - if (extensions.Contains("gl_NV_vdpau_interop2")) - { - NV_vdpau_interop2 = true; - extensions.Remove("glNV_vdpau_interop2"); - } - if (extensions.Contains("gl_NV_vertex_array_range")) - { - NV_vertex_array_range = true; - extensions.Remove("glNV_vertex_array_range"); - } - if (extensions.Contains("gl_NV_vertex_array_range2")) - { - NV_vertex_array_range2 = true; - extensions.Remove("glNV_vertex_array_range2"); - } - if (extensions.Contains("gl_NV_vertex_attrib_integer_64bit")) - { - NV_vertex_attrib_integer_64bit = true; - extensions.Remove("glNV_vertex_attrib_integer_64bit"); - } - if (extensions.Contains("gl_NV_vertex_buffer_unified_memory")) - { - NV_vertex_buffer_unified_memory = true; - extensions.Remove("glNV_vertex_buffer_unified_memory"); - } - if (extensions.Contains("gl_NV_vertex_program")) - { - NV_vertex_program = true; - extensions.Remove("glNV_vertex_program"); - } - if (extensions.Contains("gl_NV_vertex_program1_1")) - { - NV_vertex_program1_1 = true; - extensions.Remove("glNV_vertex_program1_1"); - } - if (extensions.Contains("gl_NV_vertex_program2")) - { - NV_vertex_program2 = true; - extensions.Remove("glNV_vertex_program2"); - } - if (extensions.Contains("gl_NV_vertex_program2_option")) - { - NV_vertex_program2_option = true; - extensions.Remove("glNV_vertex_program2_option"); - } - if (extensions.Contains("gl_NV_vertex_program3")) - { - NV_vertex_program3 = true; - extensions.Remove("glNV_vertex_program3"); - } - if (extensions.Contains("gl_NV_vertex_program4")) - { - NV_vertex_program4 = true; - extensions.Remove("glNV_vertex_program4"); - } - if (extensions.Contains("gl_NV_video_capture")) - { - NV_video_capture = true; - extensions.Remove("glNV_video_capture"); - } - if (extensions.Contains("gl_NV_viewport_array2")) - { - NV_viewport_array2 = true; - extensions.Remove("glNV_viewport_array2"); - } - if (extensions.Contains("gl_NV_viewport_swizzle")) - { - NV_viewport_swizzle = true; - extensions.Remove("glNV_viewport_swizzle"); - } - if (extensions.Contains("gl_OES_byte_coordinates")) - { - OES_byte_coordinates = true; - extensions.Remove("glOES_byte_coordinates"); - } - if (extensions.Contains("gl_OES_compressed_paletted_texture")) - { - OES_compressed_paletted_texture = true; - extensions.Remove("glOES_compressed_paletted_texture"); - } - if (extensions.Contains("gl_OES_fixed_point")) - { - OES_fixed_point = true; - extensions.Remove("glOES_fixed_point"); - } - if (extensions.Contains("gl_OES_query_matrix")) - { - OES_query_matrix = true; - extensions.Remove("glOES_query_matrix"); - } - if (extensions.Contains("gl_OES_read_format")) - { - OES_read_format = true; - extensions.Remove("glOES_read_format"); - } - if (extensions.Contains("gl_OES_single_precision")) - { - OES_single_precision = true; - extensions.Remove("glOES_single_precision"); - } - if (extensions.Contains("gl_OML_interlace")) - { - OML_interlace = true; - extensions.Remove("glOML_interlace"); - } - if (extensions.Contains("gl_OML_resample")) - { - OML_resample = true; - extensions.Remove("glOML_resample"); - } - if (extensions.Contains("gl_OML_subsample")) - { - OML_subsample = true; - extensions.Remove("glOML_subsample"); - } - if (extensions.Contains("gl_OVR_multiview")) - { - OVR_multiview = true; - extensions.Remove("glOVR_multiview"); - } - if (extensions.Contains("gl_OVR_multiview2")) - { - OVR_multiview2 = true; - extensions.Remove("glOVR_multiview2"); - } - if (extensions.Contains("gl_PGI_misc_hints")) - { - PGI_misc_hints = true; - extensions.Remove("glPGI_misc_hints"); - } - if (extensions.Contains("gl_PGI_vertex_hints")) - { - PGI_vertex_hints = true; - extensions.Remove("glPGI_vertex_hints"); - } - if (extensions.Contains("gl_REND_screen_coordinates")) - { - REND_screen_coordinates = true; - extensions.Remove("glREND_screen_coordinates"); - } - if (extensions.Contains("gl_S3_s3tc")) - { - S3_s3tc = true; - extensions.Remove("glS3_s3tc"); - } - if (extensions.Contains("gl_SGIS_detail_texture")) - { - SGIS_detail_texture = true; - extensions.Remove("glSGIS_detail_texture"); - } - if (extensions.Contains("gl_SGIS_fog_function")) - { - SGIS_fog_function = true; - extensions.Remove("glSGIS_fog_function"); - } - if (extensions.Contains("gl_SGIS_generate_mipmap")) - { - SGIS_generate_mipmap = true; - extensions.Remove("glSGIS_generate_mipmap"); - } - if (extensions.Contains("gl_SGIS_multisample")) - { - SGIS_multisample = true; - extensions.Remove("glSGIS_multisample"); - } - if (extensions.Contains("gl_SGIS_pixel_texture")) - { - SGIS_pixel_texture = true; - extensions.Remove("glSGIS_pixel_texture"); - } - if (extensions.Contains("gl_SGIS_point_line_texgen")) - { - SGIS_point_line_texgen = true; - extensions.Remove("glSGIS_point_line_texgen"); - } - if (extensions.Contains("gl_SGIS_point_parameters")) - { - SGIS_point_parameters = true; - extensions.Remove("glSGIS_point_parameters"); - } - if (extensions.Contains("gl_SGIS_sharpen_texture")) - { - SGIS_sharpen_texture = true; - extensions.Remove("glSGIS_sharpen_texture"); - } - if (extensions.Contains("gl_SGIS_texture4D")) - { - SGIS_texture4D = true; - extensions.Remove("glSGIS_texture4D"); - } - if (extensions.Contains("gl_SGIS_texture_border_clamp")) - { - SGIS_texture_border_clamp = true; - extensions.Remove("glSGIS_texture_border_clamp"); - } - if (extensions.Contains("gl_SGIS_texture_color_mask")) - { - SGIS_texture_color_mask = true; - extensions.Remove("glSGIS_texture_color_mask"); - } - if (extensions.Contains("gl_SGIS_texture_edge_clamp")) - { - SGIS_texture_edge_clamp = true; - extensions.Remove("glSGIS_texture_edge_clamp"); - } - if (extensions.Contains("gl_SGIS_texture_filter4")) - { - SGIS_texture_filter4 = true; - extensions.Remove("glSGIS_texture_filter4"); - } - if (extensions.Contains("gl_SGIS_texture_lod")) - { - SGIS_texture_lod = true; - extensions.Remove("glSGIS_texture_lod"); - } - if (extensions.Contains("gl_SGIS_texture_select")) - { - SGIS_texture_select = true; - extensions.Remove("glSGIS_texture_select"); - } - if (extensions.Contains("gl_SGIX_async")) - { - SGIX_async = true; - extensions.Remove("glSGIX_async"); - } - if (extensions.Contains("gl_SGIX_async_histogram")) - { - SGIX_async_histogram = true; - extensions.Remove("glSGIX_async_histogram"); - } - if (extensions.Contains("gl_SGIX_async_pixel")) - { - SGIX_async_pixel = true; - extensions.Remove("glSGIX_async_pixel"); - } - if (extensions.Contains("gl_SGIX_blend_alpha_minmax")) - { - SGIX_blend_alpha_minmax = true; - extensions.Remove("glSGIX_blend_alpha_minmax"); - } - if (extensions.Contains("gl_SGIX_calligraphic_fragment")) - { - SGIX_calligraphic_fragment = true; - extensions.Remove("glSGIX_calligraphic_fragment"); - } - if (extensions.Contains("gl_SGIX_clipmap")) - { - SGIX_clipmap = true; - extensions.Remove("glSGIX_clipmap"); - } - if (extensions.Contains("gl_SGIX_convolution_accuracy")) - { - SGIX_convolution_accuracy = true; - extensions.Remove("glSGIX_convolution_accuracy"); - } - if (extensions.Contains("gl_SGIX_depth_pass_instrument")) - { - SGIX_depth_pass_instrument = true; - extensions.Remove("glSGIX_depth_pass_instrument"); - } - if (extensions.Contains("gl_SGIX_depth_texture")) - { - SGIX_depth_texture = true; - extensions.Remove("glSGIX_depth_texture"); - } - if (extensions.Contains("gl_SGIX_flush_raster")) - { - SGIX_flush_raster = true; - extensions.Remove("glSGIX_flush_raster"); - } - if (extensions.Contains("gl_SGIX_fog_offset")) - { - SGIX_fog_offset = true; - extensions.Remove("glSGIX_fog_offset"); - } - if (extensions.Contains("gl_SGIX_fragment_lighting")) - { - SGIX_fragment_lighting = true; - extensions.Remove("glSGIX_fragment_lighting"); - } - if (extensions.Contains("gl_SGIX_framezoom")) - { - SGIX_framezoom = true; - extensions.Remove("glSGIX_framezoom"); - } - if (extensions.Contains("gl_SGIX_igloo_interface")) - { - SGIX_igloo_interface = true; - extensions.Remove("glSGIX_igloo_interface"); - } - if (extensions.Contains("gl_SGIX_instruments")) - { - SGIX_instruments = true; - extensions.Remove("glSGIX_instruments"); - } - if (extensions.Contains("gl_SGIX_interlace")) - { - SGIX_interlace = true; - extensions.Remove("glSGIX_interlace"); - } - if (extensions.Contains("gl_SGIX_ir_instrument1")) - { - SGIX_ir_instrument1 = true; - extensions.Remove("glSGIX_ir_instrument1"); - } - if (extensions.Contains("gl_SGIX_list_priority")) - { - SGIX_list_priority = true; - extensions.Remove("glSGIX_list_priority"); - } - if (extensions.Contains("gl_SGIX_pixel_texture")) - { - SGIX_pixel_texture = true; - extensions.Remove("glSGIX_pixel_texture"); - } - if (extensions.Contains("gl_SGIX_pixel_tiles")) - { - SGIX_pixel_tiles = true; - extensions.Remove("glSGIX_pixel_tiles"); - } - if (extensions.Contains("gl_SGIX_polynomial_ffd")) - { - SGIX_polynomial_ffd = true; - extensions.Remove("glSGIX_polynomial_ffd"); - } - if (extensions.Contains("gl_SGIX_reference_plane")) - { - SGIX_reference_plane = true; - extensions.Remove("glSGIX_reference_plane"); - } - if (extensions.Contains("gl_SGIX_resample")) - { - SGIX_resample = true; - extensions.Remove("glSGIX_resample"); - } - if (extensions.Contains("gl_SGIX_scalebias_hint")) - { - SGIX_scalebias_hint = true; - extensions.Remove("glSGIX_scalebias_hint"); - } - if (extensions.Contains("gl_SGIX_shadow")) - { - SGIX_shadow = true; - extensions.Remove("glSGIX_shadow"); - } - if (extensions.Contains("gl_SGIX_shadow_ambient")) - { - SGIX_shadow_ambient = true; - extensions.Remove("glSGIX_shadow_ambient"); - } - if (extensions.Contains("gl_SGIX_sprite")) - { - SGIX_sprite = true; - extensions.Remove("glSGIX_sprite"); - } - if (extensions.Contains("gl_SGIX_subsample")) - { - SGIX_subsample = true; - extensions.Remove("glSGIX_subsample"); - } - if (extensions.Contains("gl_SGIX_tag_sample_buffer")) - { - SGIX_tag_sample_buffer = true; - extensions.Remove("glSGIX_tag_sample_buffer"); - } - if (extensions.Contains("gl_SGIX_texture_add_env")) - { - SGIX_texture_add_env = true; - extensions.Remove("glSGIX_texture_add_env"); - } - if (extensions.Contains("gl_SGIX_texture_coordinate_clamp")) - { - SGIX_texture_coordinate_clamp = true; - extensions.Remove("glSGIX_texture_coordinate_clamp"); - } - if (extensions.Contains("gl_SGIX_texture_lod_bias")) - { - SGIX_texture_lod_bias = true; - extensions.Remove("glSGIX_texture_lod_bias"); - } - if (extensions.Contains("gl_SGIX_texture_multi_buffer")) - { - SGIX_texture_multi_buffer = true; - extensions.Remove("glSGIX_texture_multi_buffer"); - } - if (extensions.Contains("gl_SGIX_texture_scale_bias")) - { - SGIX_texture_scale_bias = true; - extensions.Remove("glSGIX_texture_scale_bias"); - } - if (extensions.Contains("gl_SGIX_vertex_preclip")) - { - SGIX_vertex_preclip = true; - extensions.Remove("glSGIX_vertex_preclip"); - } - if (extensions.Contains("gl_SGIX_ycrcb")) - { - SGIX_ycrcb = true; - extensions.Remove("glSGIX_ycrcb"); - } - if (extensions.Contains("gl_SGIX_ycrcb_subsample")) - { - SGIX_ycrcb_subsample = true; - extensions.Remove("glSGIX_ycrcb_subsample"); - } - if (extensions.Contains("gl_SGIX_ycrcba")) - { - SGIX_ycrcba = true; - extensions.Remove("glSGIX_ycrcba"); - } - if (extensions.Contains("gl_SGI_color_matrix")) - { - SGI_color_matrix = true; - extensions.Remove("glSGI_color_matrix"); - } - if (extensions.Contains("gl_SGI_color_table")) - { - SGI_color_table = true; - extensions.Remove("glSGI_color_table"); - } - if (extensions.Contains("gl_SGI_texture_color_table")) - { - SGI_texture_color_table = true; - extensions.Remove("glSGI_texture_color_table"); - } - if (extensions.Contains("gl_SUNX_constant_data")) - { - SUNX_constant_data = true; - extensions.Remove("glSUNX_constant_data"); - } - if (extensions.Contains("gl_SUN_convolution_border_modes")) - { - SUN_convolution_border_modes = true; - extensions.Remove("glSUN_convolution_border_modes"); - } - if (extensions.Contains("gl_SUN_global_alpha")) - { - SUN_global_alpha = true; - extensions.Remove("glSUN_global_alpha"); - } - if (extensions.Contains("gl_SUN_mesh_array")) - { - SUN_mesh_array = true; - extensions.Remove("glSUN_mesh_array"); - } - if (extensions.Contains("gl_SUN_slice_accum")) - { - SUN_slice_accum = true; - extensions.Remove("glSUN_slice_accum"); - } - if (extensions.Contains("gl_SUN_triangle_list")) - { - SUN_triangle_list = true; - extensions.Remove("glSUN_triangle_list"); - } - if (extensions.Contains("gl_SUN_vertex")) - { - SUN_vertex = true; - extensions.Remove("glSUN_vertex"); - } - if (extensions.Contains("gl_WIN_phong_shading")) - { - WIN_phong_shading = true; - extensions.Remove("glWIN_phong_shading"); - } - if (extensions.Contains("gl_WIN_specular_fog")) - { - WIN_specular_fog = true; - extensions.Remove("glWIN_specular_fog"); - } - - #endregion checkGLextensions + LoadGLcore46((glContextShadow*)context, loader); } internal static void CheckCoreVersion( @@ -3233,174 +107,73 @@ namespace StgSharp.Graphics.OpenGL "StgSharp does not support OpenGL immediate mode."); } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 0))) - { - core10 = true; - } else - { - goto log; - } - - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 1))) - { - core11 = true; - } else - { - goto log; - } - - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 2))) - { - core12 = true; - } else - { - goto log; - } - - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 3))) - { - core13 = true; - } else - { - goto log; - } - - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 4))) - { - core14 = true; - } else - { - goto log; - } - - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 5))) - { - core15 = true; - } else - { - goto log; - } - - if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 0))) - { - core20 = true; - } else - { - goto log; - } - - if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 1))) - { - core21 = true; - } else - { - goto log; - } - - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 0))) - { - core30 = true; - } else - { - goto log; - } - - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 1))) - { - core31 = true; - } else - { - goto log; - } - - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 2))) - { - core32 = true; - } else - { - goto log; - } - - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 3))) - { - core33 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 0))) - { - core40 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 1))) - { - core41 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 2))) - { - core42 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 3))) - { - core43 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 4))) - { - core44 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 5))) - { - core45 = true; - } else - { - goto log; - } - - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 6))) - { - core46 = true; - } else - { - goto log; - } - - log: - { - DefaultLog.InternalWriteLog("Find core OpenGL version.", LogType.Info); - return; - } + core10 = IsAtLeast(majorVersion, minorVersion, 1, 0); + core11 = IsAtLeast(majorVersion, minorVersion, 1, 1); + core12 = IsAtLeast(majorVersion, minorVersion, 1, 2); + core13 = IsAtLeast(majorVersion, minorVersion, 1, 3); + core14 = IsAtLeast(majorVersion, minorVersion, 1, 4); + core15 = IsAtLeast(majorVersion, minorVersion, 1, 5); + core20 = IsAtLeast(majorVersion, minorVersion, 2, 0); + core21 = IsAtLeast(majorVersion, minorVersion, 2, 1); + core30 = IsAtLeast(majorVersion, minorVersion, 3, 0); + core31 = IsAtLeast(majorVersion, minorVersion, 3, 1); + core32 = IsAtLeast(majorVersion, minorVersion, 3, 2); + core33 = IsAtLeast(majorVersion, minorVersion, 3, 3); + core40 = IsAtLeast(majorVersion, minorVersion, 4, 0); + core41 = IsAtLeast(majorVersion, minorVersion, 4, 1); + core42 = IsAtLeast(majorVersion, minorVersion, 4, 2); + core43 = IsAtLeast(majorVersion, minorVersion, 4, 3); + core44 = IsAtLeast(majorVersion, minorVersion, 4, 4); + core45 = IsAtLeast(majorVersion, minorVersion, 4, 5); + core46 = IsAtLeast(majorVersion, minorVersion, 4, 6); } - internal static unsafe string GetExtensions( - this OpenglContext context + private static bool IsAtLeast( + int actualMajor, + int actualMinor, + int requiredMajor, + int requiredMinor ) { - if (context.glGetString == null) { - return string.Empty; + return actualMajor > requiredMajor || + (actualMajor == requiredMajor && actualMinor >= requiredMinor); + } + + private static bool TryReadVersion( + ReadOnlySpan text, + out int major, + out int minor + ) + { + major = 0; + minor = 0; + + int majorStart = 0; + while (majorStart < text.Length && !char.IsAsciiDigit(text[majorStart])) { + majorStart++; } - return Marshal.PtrToStringAnsi((nint)context.glGetString(glExtension))!; + if (majorStart == text.Length) { + return false; + } + + int dot = text[majorStart..].IndexOf('.'); + if (dot < 1) { + return false; + } + dot += majorStart; + + int minorEnd = dot + 1; + while (minorEnd < text.Length && char.IsAsciiDigit(text[minorEnd])) { + minorEnd++; + } + + return minorEnd > dot + 1 && + int.TryParse(text[majorStart..dot], NumberStyles.None, + CultureInfo.InvariantCulture, + out major) && + int.TryParse(text[(dot + 1)..minorEnd], NumberStyles.None, + CultureInfo.InvariantCulture, out minor); } } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/glConst.cs b/src/StgSharp.Graphics/OpenGL/glConst.cs index eb616426..c10d5561 100644 --- a/src/StgSharp.Graphics/OpenGL/glConst.cs +++ b/src/StgSharp.Graphics/OpenGL/glConst.cs @@ -4532,12 +4532,7 @@ namespace StgSharp.Graphics.OpenGL int i ) { - #if DEBUG - if ((i > OpenGLFunction.CurrentGL.AttachmentColorRange) || (i < 0)) - { - throw new ArgumentOutOfRangeException(); - } - #endif + ArgumentOutOfRangeException.ThrowIfNegative(i); return (uint)(glConst.COLOR_ATTACHMENT0 + i); } diff --git a/src/StgSharp.Graphics/OpenGL/glException.cs b/src/StgSharp.Graphics/OpenGL/glException.cs index 6f6650ad..335397ae 100644 --- a/src/StgSharp.Graphics/OpenGL/glException.cs +++ b/src/StgSharp.Graphics/OpenGL/glException.cs @@ -6,12 +6,6 @@ // ----------------------------------------------------------------------------- using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Runtime.CompilerServices; -using System.Runtime.Serialization; -using System.Text; namespace StgSharp.Graphics.OpenGL { @@ -37,65 +31,4 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class GlArrayFormatException : Exception - { - - internal GlArrayFormatException( - string message - ) - : base(message) { } - - internal GlArrayFormatException( - SerializationInfo info, - StreamingContext context - ) - : base(info, context) { } - - internal GlArrayFormatException( - string message, - Exception innerException - ) - : base(message, innerException) { } - - public GlArrayFormatException( - PixelChannelLayout layout, - string arrayname - ) - : base($"{arrayname} cannot be used as layout of {layout}") { } - - } - - public static partial class GlHelper - { - - public static bool CheckArrayFormat( - this Array array, - PixelChannelLayout layout - ) - { - return layout switch - { - PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev => (array is byte[]) || - (array is sbyte[]), - PixelChannelLayout.Short => array is short[], - PixelChannelLayout.UShort => array is ushort[], - PixelChannelLayout.Int => array is int[], - PixelChannelLayout.Float => array is float[], - PixelChannelLayout.UShort4444 => (array is ushort[]) || (array is byte[]), - PixelChannelLayout.UByte => (array is byte[]) || (array is sbyte[]), - PixelChannelLayout.UInt => array is uint[], - PixelChannelLayout.UShort565 or - PixelChannelLayout.UShort565Rev or - PixelChannelLayout.UShort4444Rev or - PixelChannelLayout.UShort5551 or - PixelChannelLayout.UShort1555Rev => array is ushort[], - PixelChannelLayout.UInt8888Rev or - PixelChannelLayout.UInt1010102 or - PixelChannelLayout.UInt2101010Rev => array is int[], - PixelChannelLayout.UInt8888 => array is uint[] or byte[], - _ => false, - }; - } - - } } diff --git a/src/StgSharp.Graphics/OpenGL/glRenderStream.cs b/src/StgSharp.Graphics/OpenGL/glRenderStream.cs index 88e2ef3a..8838728e 100644 --- a/src/StgSharp.Graphics/OpenGL/glRenderStream.cs +++ b/src/StgSharp.Graphics/OpenGL/glRenderStream.cs @@ -117,15 +117,6 @@ namespace StgSharp.Graphics.OpenGL CustomizeDeinit(); } - protected sealed override Uniform NativeCameraUniform( - ShaderProgram source, - string name - ) - { - NativeCamera.GainAllUniforms(source, name); - return NativeCamera.convertedUniform; - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] protected sealed override void NativeCameraViewRange( Radius fieldOfRange, diff --git a/src/StgSharp.Graphics/OpenGL/glSync.cs b/src/StgSharp.Graphics/OpenGL/glSync.cs new file mode 100644 index 00000000..7357f962 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/glSync.cs @@ -0,0 +1,20 @@ +// ----------------------------------------------------------------------------- +// file="glSync" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics.OpenGL +{ + [StructLayout(LayoutKind.Sequential)] + public struct glSync + { + + public IntPtr Handle; + + } +} diff --git a/src/StgSharp.Graphics/PlainGeometryMesh.cs b/src/StgSharp.Graphics/PlainGeometryMesh.cs index 4d66bfe0..0870e6a1 100644 --- a/src/StgSharp.Graphics/PlainGeometryMesh.cs +++ b/src/StgSharp.Graphics/PlainGeometryMesh.cs @@ -38,11 +38,9 @@ namespace StgSharp.Graphics _shape = shape; } - // private Image _texture; - public PlainGeometryMesh( PlainGeometry shape, - Image texture, + Image texture, Vec2[] texCoord ) { @@ -59,10 +57,10 @@ namespace StgSharp.Graphics public Vec4[] VertexArray => _shape.VertexStream; - public Image TextureImage + public Image TextureImage { - get => _texture.ProvideImage(); - internal set => _texture.ReadImage(value); + get => _texture.Image; + internal set => _texture.Image = value; } public ReadOnlySpan MeshIndices => _shape.VertexIndices; diff --git a/src/StgSharp.Graphics/RenderStream.cs b/src/StgSharp.Graphics/RenderStream.cs index 315fd11e..12d3ae4c 100644 --- a/src/StgSharp.Graphics/RenderStream.cs +++ b/src/StgSharp.Graphics/RenderStream.cs @@ -5,7 +5,6 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics.OpenGL; using StgSharp.Mathematics; using StgSharp.Mathematics.Graphics; using StgSharp.Timing; @@ -133,27 +132,6 @@ namespace StgSharp.Graphics Vec3 up ); - /// - /// Get (TView is ) uniform from a - /// shader. This uniform will be used as projection matrix of this camera. Additionally, - /// for multi- shader rendering, each shader requires a uniform, so do not ignore return - /// value of this method. - /// - /// - /// Shader using this camera - /// - /// - /// ContextName of projection camera named in shader - /// - /// - /// (TView is ) representing - /// projection matrix in shader program. - /// - protected abstract Uniform NativeCameraUniform( - ShaderProgram source, - string name - ); - #endregion #region internal operation @@ -200,15 +178,5 @@ namespace StgSharp.Graphics #endregion - #region public resource generator - - protected abstract Shader CreateShaderSegment( - ShaderType type, - int count - ); - - protected abstract ShaderProgram CreateShaderProgram(); - - #endregion } } diff --git a/src/StgSharp.Graphics/Rgba8.cs b/src/StgSharp.Graphics/Rgba8.cs new file mode 100644 index 00000000..cad522cf --- /dev/null +++ b/src/StgSharp.Graphics/Rgba8.cs @@ -0,0 +1,38 @@ +// ----------------------------------------------------------------------------- +// file="Rgba8" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics +{ + /// + /// Four-channel, eight-bit-per-channel RGBA pixel storage. + /// + [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 4)] + public struct Rgba8 + { + + public byte R; + public byte G; + public byte B; + public byte A; + + public Rgba8( + byte red, + byte green, + byte blue, + byte alpha + ) + { + R = red; + G = green; + B = blue; + A = alpha; + } + + } +} diff --git a/src/StgSharp.Graphics/TextureProvider.cs b/src/StgSharp.Graphics/TextureProvider.cs index 062b9a57..76a80467 100644 --- a/src/StgSharp.Graphics/TextureProvider.cs +++ b/src/StgSharp.Graphics/TextureProvider.cs @@ -8,23 +8,25 @@ using StgSharp.Mathematics.Graphics; using System; -using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace StgSharp.Graphics { - public class TextureProvider : IImageProvider + public class TextureProvider { private Vec2[] _texCoord; - private Image _tex; + private Image _image; public TextureProvider( - Image image, + Image image, Vec2[] coord ) { - _tex = image; + ArgumentNullException.ThrowIfNull(image); + ArgumentNullException.ThrowIfNull(coord); + + _image = image; _texCoord = coord; } @@ -38,32 +40,13 @@ namespace StgSharp.Graphics public Span TextureCoordinate => new Span(_texCoord); - public Image ProvideImage() + public Image Image { - return _tex; - } - - public void ReadImage( - IImageProvider provider - ) - { - _tex = provider.ProvideImage(); - } - - public void UpdateFromImage( - [NotNull]Image i - ) - { - if (i == _tex) { - return; - } - if (i.Size == _tex.Size) + get => _image; + set { - _tex = i; - } else - { - throw new ArgumentException( - $"Size of {nameof(i)} does not equals to current image."); + ArgumentNullException.ThrowIfNull(value); + _image = value; } } diff --git a/src/StgSharp.Graphics/glfw.cs b/src/StgSharp.Graphics/glfw.cs index 72a7e2fe..a6a4dbd2 100644 --- a/src/StgSharp.Graphics/glfw.cs +++ b/src/StgSharp.Graphics/glfw.cs @@ -16,7 +16,7 @@ namespace StgSharp.Graphics public class GraphicModule : IStaticModule { - public string ModuleName => "Graphic"; + public string ModuleName => "Graphics"; [MethodImpl(MethodImplOptions.AggressiveInlining)] public void InitializeModule( @@ -24,6 +24,9 @@ namespace StgSharp.Graphics ) { GraphicFramework.LoadGlfw(); + if (GraphicFramework.glfwInit() == 0) { + throw new InvalidOperationException("Failed to initialize GLFW."); + } } public void UninitializeModule() @@ -325,7 +328,7 @@ namespace StgSharp.Graphics internal static unsafe void glfwSetWindowIcon( IntPtr window, int count, - GLFWimage* images + GlfwImageNative* images ) { _glfw.glfwSetWindowIcon(window, count, (IntPtr)images); @@ -750,7 +753,7 @@ namespace StgSharp.Graphics [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe IntPtr glfwCreateCursor( - GLFWimage* image, + GlfwImageNative* image, int xhot, int yhot ) diff --git a/src/StgSharp.Graphics/glfw.struct.cs b/src/StgSharp.Graphics/glfw.struct.cs new file mode 100644 index 00000000..a98d057e --- /dev/null +++ b/src/StgSharp.Graphics/glfw.struct.cs @@ -0,0 +1,32 @@ +// ----------------------------------------------------------------------------- +// file="glfw.struct" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Runtime.InteropServices; + +namespace StgSharp.Internal +{ + // GLFW owns these objects. The managed layer only passes opaque pointers to them. + + [StructLayout(LayoutKind.Sequential)] + public struct glfwVideomode { } + + [StructLayout(LayoutKind.Sequential)] + public struct glfwGammaramp { } + + [StructLayout(LayoutKind.Sequential)] + internal unsafe struct GlfwImageNative + { + + internal int Width; + internal int Height; + internal byte* Pixels; + + } + + [StructLayout(LayoutKind.Sequential)] + public struct GLFWgamepadstate { } +} diff --git a/src/StgSharp.Native/CMakeLists.txt b/src/StgSharp.Native/CMakeLists.txt index 7d10af82..075d16b9 100644 --- a/src/StgSharp.Native/CMakeLists.txt +++ b/src/StgSharp.Native/CMakeLists.txt @@ -133,10 +133,6 @@ target_compile_definitions(${PROJECT_NAME} set(STGSHARP_NATIVE_EXTERNAL_TARGET ${PROJECT_NAME}) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lib) -if(WIN32) - target_link_libraries(${PROJECT_NAME} PRIVATE opengl32) -endif() - message(STATUS "StgSharp.Native target OS: ${SN_RESOLVED_OS_NAME} (${SN_RESOLVED_OS_DEFINE})") message(STATUS "StgSharp.Native target ISA: ${SN_RESOLVED_ARCH_NAME} (${SN_RESOLVED_ARCH_DEFINE})") message(STATUS "StgSharp.Native output dir: ${STGSHARP_BUILD_OUTPUT_DIR}") diff --git a/src/StgSharp.Native/StgSharp.Native.vcxproj b/src/StgSharp.Native/StgSharp.Native.vcxproj index ae774886..15dc05ea 100644 --- a/src/StgSharp.Native/StgSharp.Native.vcxproj +++ b/src/StgSharp.Native/StgSharp.Native.vcxproj @@ -115,7 +115,7 @@ Windows - opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) + $(CoreLibraryDependencies);%(AdditionalDependencies) @@ -185,7 +185,6 @@ - @@ -198,9 +197,7 @@ - - @@ -208,7 +205,6 @@ - @@ -218,4 +214,4 @@ - \ No newline at end of file + diff --git a/src/StgSharp.Native/StgSharp.Native.vcxproj.filters b/src/StgSharp.Native/StgSharp.Native.vcxproj.filters index 59da93d7..1aedb194 100644 --- a/src/StgSharp.Native/StgSharp.Native.vcxproj.filters +++ b/src/StgSharp.Native/StgSharp.Native.vcxproj.filters @@ -36,9 +36,6 @@ 源文件 - - 源文件 - 源文件 @@ -77,21 +74,12 @@ - - 头文件 - - - 头文件 - 头文件 头文件 - - 头文件 - 头文件 @@ -139,4 +127,4 @@ Document - \ No newline at end of file + diff --git a/src/StgSharp.Native/sn-head/StgSharpNative.h b/src/StgSharp.Native/sn-head/StgSharpNative.h index f8d3662a..098cc47b 100644 --- a/src/StgSharp.Native/sn-head/StgSharpNative.h +++ b/src/StgSharp.Native/sn-head/StgSharpNative.h @@ -8,13 +8,6 @@ #include "sn_internal.h" #include "sn_target.h" -#define STBIDEF SN_API -#include "../lib/stbi/stb_image.h" - -#include "gl.h" -// #include "wgl.h" -// #define GLFWAPI INTERNAL -#include "glfw\glfw3.h" #include #include #include @@ -26,24 +19,6 @@ #ifndef SN_ #endif -typedef struct Image { - int width; - int height; - int channel; - char *pixelPtr; -} Image; - -typedef char *(*imageLoader)(char const *filename, int *x, int *y, int *channels_in_file, - int desired_channels); - -extern SN_API char infolog[512]; -SN_API int SN_DECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, - char **logRef); -SN_API void SN_DECL initGL(int majorVersion, int minorVersion); -SN_API void SN_DECL loadImageData(char *location, Image *out, imageLoader loader); -SN_API GLFWglproc SN_DECL loadGlfuncDefault(char *procName); -SN_API void SN_DECL unloadImageData(Image *out); -SN_API char *SN_DECL readLog(void); SN_API void SN_DECL load_glfw_functions(GLFWFunctionTable *table); SN_API void SN_DECL load_intrinsic_function(void *intrinsic_context, uint64_t id); SN_API SIMDID SN_DECL sn_get_simd_level_global(); diff --git a/src/StgSharp.Native/sn-head/gl.h b/src/StgSharp.Native/sn-head/gl.h deleted file mode 100644 index 96c942a7..00000000 --- a/src/StgSharp.Native/sn-head/gl.h +++ /dev/null @@ -1,10775 +0,0 @@ -/* clang-format off */ - - -/** - * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:02 2024 - * - * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 - * - * Generator: C/C++ - * Specification: gl - * Extensions: 619 - * - * APIs: - * - gl:core=4.6 - * - * Options: - * - ALIAS = False - * - DEBUG = False - * - HEADER_ONLY = False - * - LOADER = False - * - MX = True - * - ON_DEMAND = False - * - * Commandline: - * --api='gl:core=4.6' --extensions='GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_blit_layers,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shader_samples_identical,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_RG8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_storage,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_x,GL_MESA_framebuffer_flip_y,GL_MESA_framebuffer_swap_xy,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_memory_object_sparse,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_primitive_shading_rate,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_timeline_semaphore,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_std430_layout,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog' c --mx - * - * Online: - * http://glad.sh/#api=gl%3Acore%3D4.6&generator=c&options=MX - * - */ - -#ifndef GLAD_GL_H_ -#define GLAD_GL_H_ - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreserved-id-macro" -#endif -#ifdef __gl_h_ -#error OpenGL (gl.h) header already included (API: gl), remove previous include! -#endif -#define __gl_h_ 1 -#ifdef __gl3_h_ -#error OpenGL (gl3.h) header already included (API: gl), remove previous include! -#endif -#define __gl3_h_ 1 -#ifdef __glext_h_ -#error OpenGL (glext.h) header already included (API: gl), remove previous include! -#endif -#define __glext_h_ 1 -#ifdef __gl3ext_h_ -#error OpenGL (gl3ext.h) header already included (API: gl), remove previous include! -#endif -#define __gl3ext_h_ 1 -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - -#define GLAD_GL -#define GLAD_OPTION_GL_MX - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GLAD_PLATFORM_H_ -#define GLAD_PLATFORM_H_ - -#ifndef GLAD_PLATFORM_WIN32 -#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) -#define GLAD_PLATFORM_WIN32 1 -#else -#define GLAD_PLATFORM_WIN32 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_APPLE -#ifdef __APPLE__ -#define GLAD_PLATFORM_APPLE 1 -#else -#define GLAD_PLATFORM_APPLE 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_EMSCRIPTEN -#ifdef __EMSCRIPTEN__ -#define GLAD_PLATFORM_EMSCRIPTEN 1 -#else -#define GLAD_PLATFORM_EMSCRIPTEN 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_UWP -#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) -#ifdef __has_include -#if __has_include() -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#endif - -#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY -#include -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ - WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -#define GLAD_PLATFORM_UWP 1 -#endif -#endif - -#ifndef GLAD_PLATFORM_UWP -#define GLAD_PLATFORM_UWP 0 -#endif -#endif - -#ifdef __GNUC__ -#define GLAD_GNUC_EXTENSION __extension__ -#else -#define GLAD_GNUC_EXTENSION -#endif - -#define GLAD_UNUSED(x) (void)(x) - -#ifndef GLAD_API_CALL -#if defined(GLAD_API_CALL_EXPORT) -#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) -#if defined(GLAD_API_CALL_EXPORT_BUILD) -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__((dllexport)) extern -#else -#define GLAD_API_CALL __declspec(dllexport) extern -#endif -#else -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__((dllimport)) extern -#else -#define GLAD_API_CALL __declspec(dllimport) extern -#endif -#endif -#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) -#define GLAD_API_CALL __attribute__((visibility("default"))) extern -#else -#define GLAD_API_CALL extern -#endif -#else -#define GLAD_API_CALL extern -#endif -#endif - -#ifdef APIENTRY -#define GLAD_API_PTR APIENTRY -#elif GLAD_PLATFORM_WIN32 -#define GLAD_API_PTR __stdcall -#else -#define GLAD_API_PTR -#endif - -#ifndef GLAPI -#define GLAPI GLAD_API_CALL -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY GLAD_API_PTR -#endif - -#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) -#define GLAD_VERSION_MAJOR(version) (version / 10000) -#define GLAD_VERSION_MINOR(version) (version % 10000) - -#define GLAD_GENERATOR_VERSION "2.0.5" - -typedef void (*GLADapiproc)(void); - -typedef GLADapiproc (*GLADloadfunc)(const char *name); -typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); - -typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); -typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, - ...); - -#endif /* GLAD_PLATFORM_H_ */ - -#define GL_1PASS_EXT 0x80A1 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_EXT 0x80CC -#define GL_422_REV_AVERAGE_EXT 0x80CF -#define GL_422_REV_EXT 0x80CD -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_ABGR_EXT 0x8000 -#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD -#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_ACTIVE_PROGRAM_EXT 0x8B8D -#define GL_ACTIVE_RESOURCES 0x92F5 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 -#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_ACTIVE_TEXTURE 0x84E0 -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_VARIABLES 0x9305 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_ADD_ATI 0x8963 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_ADJACENT_PAIRS_NV 0x90AE -#define GL_AFFINE_2D_NV 0x9092 -#define GL_AFFINE_3D_NV 0x9094 -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E -#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F -#define GL_ALL_BARRIER_BITS 0xFFFFFFFF -#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_ALL_PIXELS_AMD 0xFFFFFFFF -#define GL_ALL_SHADER_BITS 0xFFFFFFFF -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_ALPHA 0x1906 -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16F_ARB 0x881C -#define GL_ALPHA16F_EXT 0x881C -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_ALPHA16_EXT 0x803E -#define GL_ALPHA16_SNORM 0x9018 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_ALPHA32F_EXT 0x8816 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA8_SNORM 0x9014 -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 -#define GL_ALPHA_MAX_SGIX 0x8321 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_REF_COMMAND_NV 0x000F -#define GL_ALPHA_SNORM 0x9010 -#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D -#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F -#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E -#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF -#define GL_ALREADY_SIGNALED 0x911A -#define GL_ALWAYS 0x0207 -#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C -#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D -#define GL_AND 0x1501 -#define GL_AND_INVERTED 0x1504 -#define GL_AND_REVERSE 0x1502 -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_ARC_TO_NV 0xFE -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 -#define GL_ARRAY_SIZE 0x92FB -#define GL_ARRAY_STRIDE 0x92FE -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_ASYNC_MARKER_SGIX 0x8329 -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 -#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 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_INDEX 0x9301 -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED -#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_MESH_SHADER_NV 0x959E -#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F -#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_ATTACHED_MEMORY_OBJECT_NV 0x95A4 -#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ATTENUATION_EXT 0x834D -#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_AUTO_GENERATE_MIPMAP 0x8295 -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 -#define GL_AVERAGE_EXT 0x8335 -#define GL_AVERAGE_HP 0x8160 -#define GL_BACK 0x0405 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_NORMALS_HINT_PGI 0x1A223 -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_RIGHT 0x0403 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_BEVEL_NV 0x90A6 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_BGRA8_EXT 0x93A1 -#define GL_BGRA_EXT 0x80E1 -#define GL_BGRA_INTEGER 0x8D9B -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_BGR_EXT 0x80E0 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BIAS_BIT_ATI 0x00000008 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BLACKHOLE_RENDER_INTEL 0x83FC -#define GL_BLEND 0x0BE2 -#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 -#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 -#define GL_BLEND_COLOR 0x8005 -#define GL_BLEND_COLOR_COMMAND_NV 0x000B -#define GL_BLEND_COLOR_EXT 0x8005 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_EQUATION 0x8009 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D -#define GL_BLEND_EQUATION_EXT 0x8009 -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_OVERLAP_NV 0x9281 -#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLOCK_INDEX 0x92FD -#define GL_BLUE 0x1905 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_BLUE_NV 0x1905 -#define GL_BOLD_BIT_NV 0x01 -#define GL_BOOL 0x8B56 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_BOUNDING_BOX_NV 0x908D -#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C -#define GL_BUFFER 0x82E0 -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_BINDING 0x9302 -#define GL_BUFFER_DATA_SIZE 0x9303 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 -#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D -#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_BUFFER_OBJECT_EXT 0x9151 -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_STORAGE_FLAGS 0x8220 -#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 -#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 -#define GL_BUFFER_USAGE 0x8765 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_BUFFER_VARIABLE 0x92E5 -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_TARGET_ATI 0x877C -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_BYTE 0x1400 -#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 -#define GL_CAVEAT_SUPPORT 0x82B8 -#define GL_CCW 0x0901 -#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 -#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA -#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_CLAMP_TO_BORDER_ARB 0x812D -#define GL_CLAMP_TO_BORDER_SGIS 0x812D -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_CLAMP_TO_EDGE_SGIS 0x812F -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLEAR 0x1500 -#define GL_CLEAR_BUFFER 0x82B4 -#define GL_CLEAR_TEXTURE 0x9365 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 -#define GL_CLIENT_STORAGE_BIT 0x0200 -#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 -#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 -#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 -#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 -#define GL_CLIP_DEPTH_MODE 0x935D -#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_CLIP_DISTANCE_NV 0x8C7A -#define GL_CLIP_FAR_HINT_PGI 0x1A221 -#define GL_CLIP_NEAR_HINT_PGI 0x1A220 -#define GL_CLIP_ORIGIN 0x935C -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 -#define GL_CLOSE_PATH_NV 0x00 -#define GL_CMYKA_EXT 0x800D -#define GL_CMYK_EXT 0x800C -#define GL_CND0_ATI 0x896B -#define GL_CND_ATI 0x896A -#define GL_COLOR 0x1800 -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_COLORBURN_KHR 0x929A -#define GL_COLORBURN_NV 0x929A -#define GL_COLORDODGE_KHR 0x9299 -#define GL_COLORDODGE_NV 0x9299 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_COLOR_ATTACHMENT16 0x8CF0 -#define GL_COLOR_ATTACHMENT17 0x8CF1 -#define GL_COLOR_ATTACHMENT18 0x8CF2 -#define GL_COLOR_ATTACHMENT19 0x8CF3 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#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_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT30 0x8CFE -#define GL_COLOR_ATTACHMENT31 0x8CFF -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_COMPONENTS 0x8283 -#define GL_COLOR_ENCODING 0x8296 -#define GL_COLOR_FLOAT_APPLE 0x8A0F -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_COLOR_RENDERABLE 0x8286 -#define GL_COLOR_SAMPLES_NV 0x8E20 -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_COMBINE4_NV 0x8503 -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMMAND_BARRIER_BIT 0x00000040 -#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B -#define GL_COMPILE_STATUS 0x8B81 -#define GL_COMPLETION_STATUS_ARB 0x91B1 -#define GL_COMPLETION_STATUS_KHR 0x91B1 -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_RG 0x8226 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB -#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 -#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 -#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA -#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC -#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD -#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 -#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 -#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 -#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 -#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 -#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 -#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 -#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 -#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C -#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 -#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_ARB 0x84ED -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F -#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D -#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D -#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_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 -#define GL_COMPUTE_PROGRAM_NV 0x90FB -#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC -#define GL_COMPUTE_SHADER 0x91B9 -#define GL_COMPUTE_SHADER_BIT 0x00000020 -#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 -#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 -#define GL_COMPUTE_SUBROUTINE 0x92ED -#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 -#define GL_COMPUTE_TEXTURE 0x82A0 -#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_CONDITION_SATISFIED 0x911C -#define GL_CONFORMANT_NV 0x9374 -#define GL_CONIC_CURVE_TO_NV 0x1A -#define GL_CONJOINT_NV 0x9284 -#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE -#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 -#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B -#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 -#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A -#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D -#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E -#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 -#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F -#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_CONSTANT_ARB 0x8576 -#define GL_CONSTANT_BORDER_HP 0x8151 -#define GL_CONSTANT_COLOR 0x8001 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_CONSTANT_EXT 0x8576 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_FLAGS 0x821E -#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 -#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 -#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 -#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GL_CONTEXT_LOST 0x0507 -#define GL_CONTEXT_PROFILE_MASK 0x9126 -#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB -#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC -#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 -#define GL_CONTINUOUS_AMD 0x9007 -#define GL_CONTRAST_NV 0x92A1 -#define GL_CONVEX_HULL_NV 0x908B -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_CONVOLUTION_HINT_SGIX 0x8316 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_10_ATI 0x894B -#define GL_CON_11_ATI 0x894C -#define GL_CON_12_ATI 0x894D -#define GL_CON_13_ATI 0x894E -#define GL_CON_14_ATI 0x894F -#define GL_CON_15_ATI 0x8950 -#define GL_CON_16_ATI 0x8951 -#define GL_CON_17_ATI 0x8952 -#define GL_CON_18_ATI 0x8953 -#define GL_CON_19_ATI 0x8954 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_20_ATI 0x8955 -#define GL_CON_21_ATI 0x8956 -#define GL_CON_22_ATI 0x8957 -#define GL_CON_23_ATI 0x8958 -#define GL_CON_24_ATI 0x8959 -#define GL_CON_25_ATI 0x895A -#define GL_CON_26_ATI 0x895B -#define GL_CON_27_ATI 0x895C -#define GL_CON_28_ATI 0x895D -#define GL_CON_29_ATI 0x895E -#define GL_CON_2_ATI 0x8943 -#define GL_CON_30_ATI 0x895F -#define GL_CON_31_ATI 0x8960 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_CON_8_ATI 0x8949 -#define GL_CON_9_ATI 0x894A -#define GL_COORD_REPLACE_ARB 0x8862 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_COPY 0x1503 -#define GL_COPY_INVERTED 0x150C -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_READ_BUFFER_BINDING 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNT_DOWN_NV 0x9089 -#define GL_COUNT_UP_NV 0x9088 -#define GL_COVERAGE_MODULATION_NV 0x9332 -#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 -#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 -#define GL_CUBIC_CURVE_TO_NV 0x0C -#define GL_CUBIC_EXT 0x8334 -#define GL_CUBIC_HP 0x815F -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_CULL_MODES_NV 0x86E0 -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_IBM 103050 -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_CURRENT_QUERY 0x8865 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_CW 0x0900 -#define GL_D3D12_FENCE_VALUE_EXT 0x9595 -#define GL_DARKEN_KHR 0x9297 -#define GL_DARKEN_NV 0x9297 -#define GL_DATA_BUFFER_AMD 0x9151 -#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 -#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 -#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 -#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 -#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F -#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B -#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 -#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D -#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E -#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C -#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A -#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D -#define GL_DEBUG_LOGGED_MESSAGES 0x9145 -#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 -#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 -#define GL_DEBUG_OUTPUT 0x92E0 -#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 -#define GL_DEBUG_SEVERITY_HIGH 0x9146 -#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 -#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 -#define GL_DEBUG_SEVERITY_LOW 0x9148 -#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 -#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 -#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 -#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 -#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 -#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B -#define GL_DEBUG_SOURCE_API 0x8246 -#define GL_DEBUG_SOURCE_API_ARB 0x8246 -#define GL_DEBUG_SOURCE_APPLICATION 0x824A -#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A -#define GL_DEBUG_SOURCE_OTHER 0x824B -#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B -#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 -#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D -#define GL_DEBUG_TYPE_ERROR 0x824C -#define GL_DEBUG_TYPE_ERROR_ARB 0x824C -#define GL_DEBUG_TYPE_MARKER 0x8268 -#define GL_DEBUG_TYPE_OTHER 0x8251 -#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 -#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 -#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 -#define GL_DEBUG_TYPE_POP_GROUP 0x826A -#define GL_DEBUG_TYPE_PORTABILITY 0x824F -#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F -#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E -#define GL_DECODE_EXT 0x8A49 -#define GL_DECR 0x1E03 -#define GL_DECR_WRAP 0x8508 -#define GL_DECR_WRAP_EXT 0x8508 -#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 -#define GL_DEFORMATIONS_MASK_SGIX 0x8196 -#define GL_DELETE_STATUS 0x8B80 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DEPTH 0x1801 -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_DEPTH_BOUNDS_EXT 0x8891 -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF -#define GL_DEPTH_CLAMP 0x864F -#define GL_DEPTH_CLAMP_FAR_AMD 0x901F -#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E -#define GL_DEPTH_CLAMP_NV 0x864F -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 -#define GL_DEPTH_COMPONENTS 0x8284 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_RENDERABLE 0x8287 -#define GL_DEPTH_SAMPLES_NV 0x932D -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DETACHED_BUFFERS_NV 0x95AB -#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 -#define GL_DETACHED_TEXTURES_NV 0x95AA -#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 -#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 -#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C -#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A -#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B -#define GL_DEVICE_LUID_EXT 0x9599 -#define GL_DEVICE_NODE_MASK_EXT 0x959A -#define GL_DEVICE_UUID_EXT 0x9597 -#define GL_DIFFERENCE_KHR 0x929E -#define GL_DIFFERENCE_NV 0x929E -#define GL_DISCARD_ATI 0x8763 -#define GL_DISCARD_NV 0x8530 -#define GL_DISCRETE_AMD 0x9006 -#define GL_DISJOINT_NV 0x9283 -#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE -#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 -#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 -#define GL_DITHER 0x0BD0 -#define GL_DONT_CARE 0x1100 -#define GL_DOT2_ADD_ATI 0x896C -#define GL_DOT3_ATI 0x8966 -#define GL_DOT3_RGBA_ARB 0x86AF -#define GL_DOT3_RGBA_EXT 0x8741 -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT4_ATI 0x8967 -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_DOUBLE 0x140A -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT2_EXT 0x8F46 -#define GL_DOUBLE_MAT2x3 0x8F49 -#define GL_DOUBLE_MAT2x3_EXT 0x8F49 -#define GL_DOUBLE_MAT2x4 0x8F4A -#define GL_DOUBLE_MAT2x4_EXT 0x8F4A -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT3_EXT 0x8F47 -#define GL_DOUBLE_MAT3x2 0x8F4B -#define GL_DOUBLE_MAT3x2_EXT 0x8F4B -#define GL_DOUBLE_MAT3x4 0x8F4C -#define GL_DOUBLE_MAT3x4_EXT 0x8F4C -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_MAT4_EXT 0x8F48 -#define GL_DOUBLE_MAT4x2 0x8F4D -#define GL_DOUBLE_MAT4x2_EXT 0x8F4D -#define GL_DOUBLE_MAT4x3 0x8F4E -#define GL_DOUBLE_MAT4x3_EXT 0x8F4E -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC2_EXT 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC3_EXT 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE -#define GL_DOUBLE_VEC4_EXT 0x8FFE -#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 -#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 -#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_DRAW_BUFFER15_ARB 0x8834 -#define GL_DRAW_BUFFER15_ATI 0x8834 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 -#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 -#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 -#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 -#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_DRIVER_UUID_EXT 0x9598 -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_DSDT_NV 0x86F5 -#define GL_DST_ALPHA 0x0304 -#define GL_DST_ATOP_NV 0x928F -#define GL_DST_COLOR 0x0306 -#define GL_DST_IN_NV 0x928B -#define GL_DST_NV 0x9287 -#define GL_DST_OUT_NV 0x928D -#define GL_DST_OVER_NV 0x9289 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_BIAS_NV 0x8717 -#define GL_DT_SCALE_NV 0x8711 -#define GL_DU8DV8_ATI 0x877A -#define GL_DUAL_ALPHA12_SGIS 0x8112 -#define GL_DUAL_ALPHA16_SGIS 0x8113 -#define GL_DUAL_ALPHA4_SGIS 0x8110 -#define GL_DUAL_ALPHA8_SGIS 0x8111 -#define GL_DUAL_INTENSITY12_SGIS 0x811A -#define GL_DUAL_INTENSITY16_SGIS 0x811B -#define GL_DUAL_INTENSITY4_SGIS 0x8118 -#define GL_DUAL_INTENSITY8_SGIS 0x8119 -#define GL_DUAL_LUMINANCE12_SGIS 0x8116 -#define GL_DUAL_LUMINANCE16_SGIS 0x8117 -#define GL_DUAL_LUMINANCE4_SGIS 0x8114 -#define GL_DUAL_LUMINANCE8_SGIS 0x8115 -#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C -#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D -#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 -#define GL_DUDV_ATI 0x8779 -#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 -#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_DYNAMIC_COPY_ARB 0x88EA -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_STORAGE_BIT 0x0100 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 -#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 -#define GL_ELEMENT_ARRAY_APPLE 0x8A0C -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 -#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_MAP_NV 0x855F -#define GL_EQUAL 0x0202 -#define GL_EQUIV 0x1509 -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EXCLUSION_KHR 0x92A0 -#define GL_EXCLUSION_NV 0x92A0 -#define GL_EXCLUSIVE_EXT 0x8F11 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXTENSIONS 0x1F03 -#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_EYE_PLANE 0x2502 -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_EYE_RADIAL_NV 0x855B -#define GL_E_TIMES_F_NV 0x8531 -#define GL_FACTOR_MAX_AMD 0x901D -#define GL_FACTOR_MIN_AMD 0x901C -#define GL_FAILURE_NV 0x9030 -#define GL_FALSE 0 -#define GL_FASTEST 0x1101 -#define GL_FENCE_APPLE 0x8A0B -#define GL_FENCE_CONDITION_NV 0x84F4 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FIELDS_NV 0x8E27 -#define GL_FIELD_LOWER_NV 0x9023 -#define GL_FIELD_UPPER_NV 0x9022 -#define GL_FILE_NAME_NV 0x9074 -#define GL_FILL 0x1B02 -#define GL_FILL_RECTANGLE_NV 0x933C -#define GL_FILTER 0x829A -#define GL_FILTER4_SGIS 0x8146 -#define GL_FIRST_TO_REST_NV 0x90AF -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_FIXED 0x140C -#define GL_FIXED_OES 0x140C -#define GL_FIXED_ONLY 0x891D -#define GL_FIXED_ONLY_ARB 0x891D -#define GL_FLOAT 0x1406 -#define GL_FLOAT16_MAT2_AMD 0x91C5 -#define GL_FLOAT16_MAT2x3_AMD 0x91C8 -#define GL_FLOAT16_MAT2x4_AMD 0x91C9 -#define GL_FLOAT16_MAT3_AMD 0x91C6 -#define GL_FLOAT16_MAT3x2_AMD 0x91CA -#define GL_FLOAT16_MAT3x4_AMD 0x91CB -#define GL_FLOAT16_MAT4_AMD 0x91C7 -#define GL_FLOAT16_MAT4x2_AMD 0x91CC -#define GL_FLOAT16_MAT4x3_AMD 0x91CD -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4 0x8B5C -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_FLOAT_RGBA_MODE_NV 0x888E -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_FOG 0x0B60 -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 -#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_FOG_FUNC_POINTS_SGIS 0x812B -#define GL_FOG_FUNC_SGIS 0x812A -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC -#define GL_FONT_ASCENDER_BIT_NV 0x00200000 -#define GL_FONT_DESCENDER_BIT_NV 0x00400000 -#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 -#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 -#define GL_FONT_HEIGHT_BIT_NV 0x00800000 -#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 -#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 -#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 -#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 -#define GL_FONT_UNAVAILABLE_NV 0x936A -#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 -#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 -#define GL_FONT_UNINTELLIGIBLE_NV 0x936B -#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 -#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 -#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 -#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 -#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 -#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 -#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE -#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_FRAGMENT_INPUT_NV 0x936D -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_FRAGMENT_LIGHT0_SGIX 0x840C -#define GL_FRAGMENT_LIGHT1_SGIX 0x840D -#define GL_FRAGMENT_LIGHT2_SGIX 0x840E -#define GL_FRAGMENT_LIGHT3_SGIX 0x840F -#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 -#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 -#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 -#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 -#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B -#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 -#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 -#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 -#define GL_FRAGMENT_SUBROUTINE 0x92EC -#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 -#define GL_FRAGMENT_TEXTURE 0x829F -#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_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 -#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 -#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_FRAMEBUFFER_BLEND 0x828B -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#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_EXT 0x8D40 -#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC -#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 -#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 -#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 -#define GL_FRAMEBUFFER_RENDERABLE 0x8289 -#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A -#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 -#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 -#define GL_FRAMEBUFFER_SRGB 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C -#define GL_FRAMEZOOM_SGIX 0x818B -#define GL_FRAME_NV 0x8E26 -#define GL_FRONT 0x0404 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_FRONT_FACE 0x0B46 -#define GL_FRONT_FACE_COMMAND_NV 0x0012 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 -#define GL_FULL_SUPPORT 0x82B7 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 -#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 -#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 -#define GL_GEOMETRY_SUBROUTINE 0x92EB -#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 -#define GL_GEOMETRY_TEXTURE 0x829E -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEQUAL 0x0206 -#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 -#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 -#define GL_GLYPH_HEIGHT_BIT_NV 0x02 -#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 -#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 -#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 -#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 -#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 -#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 -#define GL_GLYPH_WIDTH_BIT_NV 0x01 -#define GL_GPU_ADDRESS_NV 0x8F34 -#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 -#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 -#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B -#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A -#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 -#define GL_GREATER 0x0204 -#define GL_GREEN 0x1904 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_GREEN_NV 0x1904 -#define GL_GUILTY_CONTEXT_RESET 0x8253 -#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 -#define GL_HALF_APPLE 0x140B -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_HALF_FLOAT 0x140B -#define GL_HALF_FLOAT_ARB 0x140B -#define GL_HALF_FLOAT_NV 0x140B -#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B -#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C -#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 -#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A -#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 -#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 -#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 -#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 -#define GL_HARDLIGHT_KHR 0x929B -#define GL_HARDLIGHT_NV 0x929B -#define GL_HARDMIX_NV 0x92A9 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_HIGH_INT 0x8DF5 -#define GL_HILO16_NV 0x86F8 -#define GL_HILO8_NV 0x885E -#define GL_HILO_NV 0x86F4 -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HI_BIAS_NV 0x8714 -#define GL_HI_SCALE_NV 0x870E -#define GL_HORIZONTAL_LINE_TO_NV 0x06 -#define GL_HSL_COLOR_KHR 0x92AF -#define GL_HSL_COLOR_NV 0x92AF -#define GL_HSL_HUE_KHR 0x92AD -#define GL_HSL_HUE_NV 0x92AD -#define GL_HSL_LUMINOSITY_KHR 0x92B0 -#define GL_HSL_LUMINOSITY_NV 0x92B0 -#define GL_HSL_SATURATION_KHR 0x92AE -#define GL_HSL_SATURATION_NV 0x92AE -#define GL_IDENTITY_NV 0x862A -#define GL_IGNORE_BORDER_HP 0x8150 -#define GL_IMAGE_1D 0x904C -#define GL_IMAGE_1D_ARRAY 0x9052 -#define GL_IMAGE_1D_ARRAY_EXT 0x9052 -#define GL_IMAGE_1D_EXT 0x904C -#define GL_IMAGE_2D 0x904D -#define GL_IMAGE_2D_ARRAY 0x9053 -#define GL_IMAGE_2D_ARRAY_EXT 0x9053 -#define GL_IMAGE_2D_EXT 0x904D -#define GL_IMAGE_2D_MULTISAMPLE 0x9055 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 -#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 -#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 -#define GL_IMAGE_2D_RECT 0x904F -#define GL_IMAGE_2D_RECT_EXT 0x904F -#define GL_IMAGE_3D 0x904E -#define GL_IMAGE_3D_EXT 0x904E -#define GL_IMAGE_BINDING_ACCESS 0x8F3E -#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E -#define GL_IMAGE_BINDING_FORMAT 0x906E -#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E -#define GL_IMAGE_BINDING_LAYER 0x8F3D -#define GL_IMAGE_BINDING_LAYERED 0x8F3C -#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C -#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D -#define GL_IMAGE_BINDING_LEVEL 0x8F3B -#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B -#define GL_IMAGE_BINDING_NAME 0x8F3A -#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A -#define GL_IMAGE_BUFFER 0x9051 -#define GL_IMAGE_BUFFER_EXT 0x9051 -#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_CUBE 0x9050 -#define GL_IMAGE_CUBE_EXT 0x9050 -#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 -#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 -#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E -#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_IMAGE_MAG_FILTER_HP 0x815C -#define GL_IMAGE_MIN_FILTER_HP 0x815D -#define GL_IMAGE_PIXEL_FORMAT 0x82A9 -#define GL_IMAGE_PIXEL_TYPE 0x82AA -#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 -#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A -#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B -#define GL_IMAGE_SCALE_X_HP 0x8155 -#define GL_IMAGE_SCALE_Y_HP 0x8156 -#define GL_IMAGE_TEXEL_SIZE 0x82A7 -#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 -#define GL_IMAGE_TRANSLATE_X_HP 0x8157 -#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_INCLUSIVE_EXT 0x8F10 -#define GL_INCR 0x1E02 -#define GL_INCR_WRAP 0x8507 -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_INDEX_MATERIAL_EXT 0x81B8 -#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA -#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 -#define GL_INDEX_TEST_EXT 0x81B5 -#define GL_INDEX_TEST_FUNC_EXT 0x81B6 -#define GL_INDEX_TEST_REF_EXT 0x81B7 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_INNOCENT_CONTEXT_RESET 0x8254 -#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 -#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 -#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 -#define GL_INT 0x1404 -#define GL_INT16_NV 0x8FE4 -#define GL_INT16_VEC2_NV 0x8FE5 -#define GL_INT16_VEC3_NV 0x8FE6 -#define GL_INT16_VEC4_NV 0x8FE7 -#define GL_INT64_ARB 0x140E -#define GL_INT64_NV 0x140E -#define GL_INT64_VEC2_ARB 0x8FE9 -#define GL_INT64_VEC2_NV 0x8FE9 -#define GL_INT64_VEC3_ARB 0x8FEA -#define GL_INT64_VEC3_NV 0x8FEA -#define GL_INT64_VEC4_ARB 0x8FEB -#define GL_INT64_VEC4_NV 0x8FEB -#define GL_INT8_NV 0x8FE0 -#define GL_INT8_VEC2_NV 0x8FE1 -#define GL_INT8_VEC3_NV 0x8FE2 -#define GL_INT8_VEC4_NV 0x8FE3 -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_INTENSITY16_EXT 0x804D -#define GL_INTENSITY16_SNORM 0x901B -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_INGR 0x8568 -#define GL_INTERLACE_READ_OML 0x8981 -#define GL_INTERLACE_SGIX 0x8094 -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#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_INTERPOLATE_ARB 0x8575 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_INT_2_10_10_10_REV 0x8D9F -#define GL_INT_IMAGE_1D 0x9057 -#define GL_INT_IMAGE_1D_ARRAY 0x905D -#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D -#define GL_INT_IMAGE_1D_EXT 0x9057 -#define GL_INT_IMAGE_2D 0x9058 -#define GL_INT_IMAGE_2D_ARRAY 0x905E -#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E -#define GL_INT_IMAGE_2D_EXT 0x9058 -#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 -#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 -#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 -#define GL_INT_IMAGE_2D_RECT 0x905A -#define GL_INT_IMAGE_2D_RECT_EXT 0x905A -#define GL_INT_IMAGE_3D 0x9059 -#define GL_INT_IMAGE_3D_EXT 0x9059 -#define GL_INT_IMAGE_BUFFER 0x905C -#define GL_INT_IMAGE_BUFFER_EXT 0x905C -#define GL_INT_IMAGE_CUBE 0x905B -#define GL_INT_IMAGE_CUBE_EXT 0x905B -#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F -#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_INVALID_INDEX 0xFFFFFFFF -#define GL_INVALID_OPERATION 0x0502 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_INVARIANT_EXT 0x87C2 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVERSE_NV 0x862B -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_INVERT 0x150A -#define GL_INVERTED_SCREEN_W_REND 0x8491 -#define GL_INVERT_OVG_NV 0x92B4 -#define GL_INVERT_RGB_NV 0x92A3 -#define GL_IR_INSTRUMENT1_SGIX 0x817F -#define GL_ISOLINES 0x8E7A -#define GL_IS_PER_PATCH 0x92E7 -#define GL_IS_ROW_MAJOR 0x9300 -#define GL_ITALIC_BIT_NV 0x02 -#define GL_IUI_N3F_V2F_EXT 0x81AF -#define GL_IUI_N3F_V3F_EXT 0x81B0 -#define GL_IUI_V2F_EXT 0x81AD -#define GL_IUI_V3F_EXT 0x81AE -#define GL_KEEP 0x1E00 -#define GL_LARGE_CCW_ARC_TO_NV 0x16 -#define GL_LARGE_CW_ARC_TO_NV 0x18 -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 -#define GL_LAYER_NV 0x8DAA -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E -#define GL_LAYOUT_DEFAULT_INTEL 0 -#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 -#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 -#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F -#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 -#define GL_LAYOUT_GENERAL_EXT 0x958D -#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 -#define GL_LAYOUT_LINEAR_INTEL 1 -#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 -#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 -#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 -#define GL_LEFT 0x0406 -#define GL_LEQUAL 0x0203 -#define GL_LERP_ATI 0x8969 -#define GL_LESS 0x0201 -#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 -#define GL_LIGHTEN_KHR 0x9298 -#define GL_LIGHTEN_NV 0x9298 -#define GL_LIGHT_ENV_MODE_SGIX 0x8407 -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 -#define GL_LINE 0x1B01 -#define GL_LINEAR 0x2601 -#define GL_LINEARBURN_NV 0x92A5 -#define GL_LINEARDODGE_NV 0x92A4 -#define GL_LINEARLIGHT_NV 0x92A7 -#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 -#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F -#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 -#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 -#define GL_LINEAR_DETAIL_SGIS 0x8097 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE -#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF -#define GL_LINEAR_SHARPEN_SGIS 0x80AD -#define GL_LINEAR_TILING_EXT 0x9585 -#define GL_LINES 0x0001 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINES_ADJACENCY_ARB 0x000A -#define GL_LINES_ADJACENCY_EXT 0x000A -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_LINE_STRIP 0x0003 -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B -#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B -#define GL_LINE_TO_NV 0x04 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_COMMAND_NV 0x000D -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINK_STATUS 0x8B82 -#define GL_LIST_PRIORITY_SGIX 0x8182 -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_EXT 0x87C4 -#define GL_LOCATION 0x930E -#define GL_LOCATION_COMPONENT 0x934A -#define GL_LOCATION_INDEX 0x930F -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_LOSE_CONTEXT_ON_RESET 0x8252 -#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_LOW_FLOAT 0x8DF0 -#define GL_LOW_INT 0x8DF3 -#define GL_LO_BIAS_NV 0x8715 -#define GL_LO_SCALE_NV 0x870F -#define GL_LUID_SIZE_EXT 8 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE16F_EXT 0x881E -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE32F_EXT 0x8818 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#define GL_LUMINANCE_ALPHA16F_EXT 0x881F -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_MAD_ATI 0x8968 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_MAJOR_VERSION 0x821B -#define GL_MANUAL_GENERATE_MIPMAP 0x8294 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP2_BINORMAL_EXT 0x8447 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_MAP_COHERENT_BIT 0x0080 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_PERSISTENT_BIT 0x0040 -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX7_NV 0x8637 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX_EXT 0x87C0 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MATRIX_STRIDE 0x92FF -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_MAX 0x8008 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 -#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 -#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC -#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 -#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 -#define GL_MAX_CLIP_DISTANCES 0x0D32 -#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 -#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 -#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 -#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA -#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 -#define GL_MAX_COMBINED_DIMENSIONS 0x8282 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 -#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 -#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 -#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 -#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC -#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 -#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 -#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB -#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF -#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD -#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB -#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_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 -#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 -#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE -#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB -#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C -#define GL_MAX_CULL_DISTANCES 0x82F9 -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C -#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 -#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 -#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 -#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 -#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 -#define GL_MAX_DEPTH 0x8280 -#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD -#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENT_INDEX 0x8D6B -#define GL_MAX_EXT 0x8008 -#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C -#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 -#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C -#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 -#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 -#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 -#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 -#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 -#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD -#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_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_HEIGHT 0x827F -#define GL_MAX_IMAGE_SAMPLES 0x906D -#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D -#define GL_MAX_IMAGE_UNITS 0x8F38 -#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 -#define GL_MAX_INTEGER_SAMPLES 0x9110 -#define GL_MAX_LABEL_LENGTH 0x82E8 -#define GL_MAX_LAYERS 0x8281 -#define GL_MAX_LGPU_GPUS_NVX 0x92BA -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 -#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 -#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 -#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 -#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 -#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 -#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 -#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 -#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 -#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 -#define GL_MAX_MESH_VIEWS_NV 0x9557 -#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 -#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MAX_NAME_LENGTH 0x92F6 -#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 -#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 -#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 -#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_MAX_SAMPLES_EXT 0x8D57 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 -#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 -#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 -#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE -#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 -#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 -#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A -#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A -#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 -#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 -#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D -#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C -#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A -#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A -#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E -#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 -#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 -#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 -#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B -#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 -#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C -#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_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 -#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_ATOMIC_COUNTERS 0x92D4 -#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE -#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 -#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_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 -#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_LOCATIONS 0x826E -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 -#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA -#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 -#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_VERTEX_HINT_PGI 0x1A22D -#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_STREAMS 0x8E71 -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_VIEWPORTS 0x825B -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_VIEWS_OVR 0x9631 -#define GL_MAX_WIDTH 0x827E -#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 -#define GL_MEMORY_ATTACHABLE_NV 0x95A8 -#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 -#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 -#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF -#define GL_MESH_OUTPUT_TYPE_NV 0x957B -#define GL_MESH_PRIMITIVES_OUT_NV 0x957A -#define GL_MESH_SHADER_BIT_NV 0x00000040 -#define GL_MESH_SHADER_NV 0x9559 -#define GL_MESH_SUBROUTINE_NV 0x957C -#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E -#define GL_MESH_VERTICES_OUT_NV 0x9579 -#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E -#define GL_MIN 0x8007 -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 -#define GL_MINOR_VERSION 0x821C -#define GL_MINUS_CLAMPED_NV 0x92B3 -#define GL_MINUS_NV 0x929F -#define GL_MIN_EXT 0x8007 -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B -#define GL_MIN_LOD_WARNING_AMD 0x919C -#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 -#define GL_MIN_SPARSE_LEVEL_AMD 0x919B -#define GL_MIPMAP 0x8293 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_MIRRORED_REPEAT_ARB 0x8370 -#define GL_MIRRORED_REPEAT_IBM 0x8370 -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 -#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MITER_REVERT_NV 0x90A7 -#define GL_MITER_TRUNCATE_NV 0x90A8 -#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F -#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MODELVIEW1_EXT 0x850A -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 -#define GL_MOVE_TO_CONTINUES_NV 0x90B6 -#define GL_MOVE_TO_NV 0x02 -#define GL_MOVE_TO_RESETS_NV 0x90B5 -#define GL_MOV_ATI 0x8961 -#define GL_MULTICAST_GPUS_NV 0x92BA -#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 -#define GL_MULTIPLY_KHR 0x9294 -#define GL_MULTIPLY_NV 0x9294 -#define GL_MULTISAMPLE 0x809D -#define GL_MULTISAMPLES_NV 0x9371 -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 -#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 -#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 -#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_MUL_ATI 0x8964 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 -#define GL_NAMED_STRING_TYPE_ARB 0x8DEA -#define GL_NAME_LENGTH 0x92F9 -#define GL_NAND 0x150E -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 -#define GL_NEAREST 0x2600 -#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E -#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NEGATIVE_ONE_TO_ONE 0x935E -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEVER 0x0200 -#define GL_NEXT_BUFFER_NV -2 -#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 -#define GL_NICEST 0x1102 -#define GL_NONE 0 -#define GL_NOOP 0x1505 -#define GL_NOP_COMMAND_NV 0x0001 -#define GL_NOR 0x1508 -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_NOTEQUAL 0x0205 -#define GL_NO_ERROR 0 -#define GL_NO_RESET_NOTIFICATION 0x8261 -#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 -#define GL_NUM_ACTIVE_VARIABLES 0x9304 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 -#define GL_NUM_EXTENSIONS 0x821D -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_NUM_SAMPLE_COUNTS 0x9380 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 -#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA -#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 -#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 -#define GL_NUM_TILING_TYPES_EXT 0x9582 -#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 -#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 -#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_LINE_SGIS 0x81F7 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_OBJECT_TYPE 0x9112 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 -#define GL_OFFSET 0x92FC -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_ONE 1 -#define GL_ONE_EXT 0x87DE -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_ALPHA_ARB 0x859A -#define GL_OPERAND2_ALPHA_EXT 0x859A -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND3_ALPHA_NV 0x859B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPTIMAL_TILING_EXT 0x9584 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_MOV_EXT 0x8799 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_SUB_EXT 0x8796 -#define GL_OR 0x1507 -#define GL_OR_INVERTED 0x150D -#define GL_OR_REVERSE 0x150B -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_OVERLAY_KHR 0x9296 -#define GL_OVERLAY_NV 0x9296 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_PACK_CMYK_HINT_EXT 0x800E -#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_PACK_IMAGE_DEPTH_SGIS 0x8131 -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_PACK_INVERT_MESA 0x8758 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_PACK_RESAMPLE_SGIX 0x842E -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 -#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_PARAMETER_BUFFER 0x80EE -#define GL_PARAMETER_BUFFER_ARB 0x80EE -#define GL_PARAMETER_BUFFER_BINDING 0x80EF -#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF -#define GL_PARTIAL_SUCCESS_NV 0x902E -#define GL_PASS_THROUGH_NV 0x86E6 -#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_PATH_CLIENT_LENGTH_NV 0x907F -#define GL_PATH_COMMAND_COUNT_NV 0x909D -#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 -#define GL_PATH_COORD_COUNT_NV 0x909E -#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF -#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F -#define GL_PATH_DASH_CAPS_NV 0x907B -#define GL_PATH_DASH_OFFSET_NV 0x907E -#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 -#define GL_PATH_END_CAPS_NV 0x9076 -#define GL_PATH_ERROR_POSITION_NV 0x90AB -#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 -#define GL_PATH_FILL_COVER_MODE_NV 0x9082 -#define GL_PATH_FILL_MASK_NV 0x9081 -#define GL_PATH_FILL_MODE_NV 0x9080 -#define GL_PATH_FORMAT_PS_NV 0x9071 -#define GL_PATH_FORMAT_SVG_NV 0x9070 -#define GL_PATH_GEN_COEFF_NV 0x90B1 -#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 -#define GL_PATH_GEN_MODE_NV 0x90B0 -#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C -#define GL_PATH_INITIAL_END_CAP_NV 0x9077 -#define GL_PATH_JOIN_STYLE_NV 0x9079 -#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 -#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 -#define GL_PATH_MITER_LIMIT_NV 0x907A -#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 -#define GL_PATH_MODELVIEW_NV 0x1700 -#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 -#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A -#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 -#define GL_PATH_PROJECTION_NV 0x1701 -#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 -#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD -#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE -#define GL_PATH_STENCIL_FUNC_NV 0x90B7 -#define GL_PATH_STENCIL_REF_NV 0x90B8 -#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 -#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 -#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 -#define GL_PATH_STROKE_MASK_NV 0x9084 -#define GL_PATH_STROKE_WIDTH_NV 0x9075 -#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D -#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 -#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 -#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AMD 0x8BC6 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFORMANCE_MONITOR_AMD 0x9152 -#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC -#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB -#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA -#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 -#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 -#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF -#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 -#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 -#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 -#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE -#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 -#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 -#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 -#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 -#define GL_PERFQUERY_FLUSH_INTEL 0x83FA -#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 -#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 -#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD -#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 -#define GL_PERFQUERY_WAIT_INTEL 0x83FB -#define GL_PERTURB_EXT 0x85AE -#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 -#define GL_PER_GPU_STORAGE_NV 0x9548 -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 -#define GL_PHONG_HINT_WIN 0x80EB -#define GL_PHONG_WIN 0x80EA -#define GL_PINLIGHT_NV 0x92A8 -#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE -#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF -#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 -#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 -#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 -#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 -#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 -#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 -#define GL_PIXEL_TEXTURE_SGIS 0x8353 -#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B -#define GL_PIXEL_TEX_GEN_SGIX 0x8139 -#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E -#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F -#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 -#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 -#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 -#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 -#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 -#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 -#define GL_PLUS_CLAMPED_NV 0x92B1 -#define GL_PLUS_DARKER_NV 0x9292 -#define GL_PLUS_NV 0x9291 -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_POINT 0x1B00 -#define GL_POINTS 0x0000 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_SIZE_MAX_SGIS 0x8127 -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MIN_SGIS 0x8126 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 -#define GL_POLYGON_OFFSET_CLAMP 0x8E1B -#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B -#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_FACTOR_EXT 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_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 -#define GL_PRESENT_DURATION_NV 0x8E2B -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESERVE_ATI 0x8762 -#define GL_PREVIOUS_ARB 0x8578 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_PRIMITIVES_SUBMITTED 0x82EF -#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF -#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PROGRAM 0x82E2 -#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 -#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 -#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 -#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_INPUT 0x92E3 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_PROGRAM_OBJECT_EXT 0x8B40 -#define GL_PROGRAM_OUTPUT 0x92E4 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_PROGRAM_PIPELINE 0x82E4 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B -#define GL_PROVOKING_VERTEX 0x8E4F -#define GL_PROVOKING_VERTEX_EXT 0x8E4F -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_PURGEABLE_APPLE 0x8A1D -#define GL_PURGED_CONTEXT_RESET_NV 0x92BB -#define GL_QUADRATIC_CURVE_TO_NV 0x0A -#define GL_QUADS 0x0007 -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_QUAD_ALPHA4_SGIS 0x811E -#define GL_QUAD_ALPHA8_SGIS 0x811F -#define GL_QUAD_INTENSITY4_SGIS 0x8122 -#define GL_QUAD_INTENSITY8_SGIS 0x8123 -#define GL_QUAD_LUMINANCE4_SGIS 0x8120 -#define GL_QUAD_LUMINANCE8_SGIS 0x8121 -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_QUERY 0x82E3 -#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF -#define GL_QUERY_BUFFER 0x9192 -#define GL_QUERY_BUFFER_AMD 0x9192 -#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 -#define GL_QUERY_BUFFER_BINDING 0x9193 -#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 -#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 -#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 -#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_OBJECT_AMD 0x9153 -#define GL_QUERY_OBJECT_EXT 0x9153 -#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 -#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 -#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 -#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 -#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 -#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_QUERY_RESULT_NO_WAIT 0x9194 -#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 -#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 -#define GL_QUERY_TARGET 0x82EA -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_WAIT_INVERTED 0x8E17 -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_R16 0x822A -#define GL_R16F 0x822D -#define GL_R16F_EXT 0x822D -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R16_SNORM 0x8F98 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R32F 0x822E -#define GL_R32F_EXT 0x822E -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_R3_G3_B2 0x2A10 -#define GL_R8 0x8229 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R8_EXT 0x8229 -#define GL_R8_SNORM 0x8F94 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A -#define GL_RASTER_MULTISAMPLE_EXT 0x9327 -#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 -#define GL_RASTER_SAMPLES_EXT 0x9328 -#define GL_READ_BUFFER 0x0C02 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_READ_ONLY 0x88B8 -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_READ_PIXELS 0x828C -#define GL_READ_PIXELS_FORMAT 0x828D -#define GL_READ_PIXELS_TYPE 0x828E -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D -#define GL_READ_WRITE 0x88BA -#define GL_READ_WRITE_ARB 0x88BA -#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE -#define GL_RECT_NV 0xF6 -#define GL_RED 0x1903 -#define GL_REDUCE_EXT 0x8016 -#define GL_RED_BIT_ATI 0x00000001 -#define GL_RED_INTEGER 0x8D94 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_RED_NV 0x1903 -#define GL_RED_SNORM 0x8F90 -#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_MESH_SHADER_NV 0x95A0 -#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 -#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 -#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 -#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 -#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E -#define GL_REFERENCE_PLANE_SGIX 0x817D -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_REFLECTION_MAP_NV 0x8512 -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_10_ATI 0x892B -#define GL_REG_11_ATI 0x892C -#define GL_REG_12_ATI 0x892D -#define GL_REG_13_ATI 0x892E -#define GL_REG_14_ATI 0x892F -#define GL_REG_15_ATI 0x8930 -#define GL_REG_16_ATI 0x8931 -#define GL_REG_17_ATI 0x8932 -#define GL_REG_18_ATI 0x8933 -#define GL_REG_19_ATI 0x8934 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_20_ATI 0x8935 -#define GL_REG_21_ATI 0x8936 -#define GL_REG_22_ATI 0x8937 -#define GL_REG_23_ATI 0x8938 -#define GL_REG_24_ATI 0x8939 -#define GL_REG_25_ATI 0x893A -#define GL_REG_26_ATI 0x893B -#define GL_REG_27_ATI 0x893C -#define GL_REG_28_ATI 0x893D -#define GL_REG_29_ATI 0x893E -#define GL_REG_2_ATI 0x8923 -#define GL_REG_30_ATI 0x893F -#define GL_REG_31_ATI 0x8940 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_REG_6_ATI 0x8927 -#define GL_REG_7_ATI 0x8928 -#define GL_REG_8_ATI 0x8929 -#define GL_REG_9_ATI 0x892A -#define GL_RELATIVE_ARC_TO_NV 0xFF -#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B -#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D -#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 -#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 -#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 -#define GL_RELATIVE_LINE_TO_NV 0x05 -#define GL_RELATIVE_MOVE_TO_NV 0x03 -#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B -#define GL_RELATIVE_RECT_NV 0xF7 -#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB -#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED -#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF -#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 -#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 -#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 -#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 -#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F -#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 -#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERER 0x1F01 -#define GL_RENDER_GPU_MASK_NV 0x9558 -#define GL_REPEAT 0x2901 -#define GL_REPLACE 0x1E01 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACE_EXT 0x8062 -#define GL_REPLACE_MIDDLE_SUN 0x0002 -#define GL_REPLACE_OLDEST_SUN 0x0003 -#define GL_REPLACE_VALUE_AMD 0x874B -#define GL_REPLICATE_BORDER_HP 0x8153 -#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 -#define GL_RESCALE_NORMAL_EXT 0x803A -#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 -#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define GL_RESTART_PATH_NV 0xF0 -#define GL_RESTART_SUN 0x0001 -#define GL_RETAINED_APPLE 0x8A1B -#define GL_RG 0x8227 -#define GL_RG16 0x822C -#define GL_RG16F 0x822F -#define GL_RG16F_EXT 0x822F -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG16_SNORM 0x8F99 -#define GL_RG32F 0x8230 -#define GL_RG32F_EXT 0x8230 -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_RG8 0x822B -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG8_EXT 0x822B -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB 0x1907 -#define GL_RGB10 0x8052 -#define GL_RGB10_A2 0x8059 -#define GL_RGB10_A2UI 0x906F -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGB16F 0x881B -#define GL_RGB16F_ARB 0x881B -#define GL_RGB16F_EXT 0x881B -#define GL_RGB16I 0x8D89 -#define GL_RGB16I_EXT 0x8D89 -#define GL_RGB16UI 0x8D77 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_RGB16_EXT 0x8054 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGB2_EXT 0x804E -#define GL_RGB32F 0x8815 -#define GL_RGB32F_ARB 0x8815 -#define GL_RGB32F_EXT 0x8815 -#define GL_RGB32I 0x8D83 -#define GL_RGB32I_EXT 0x8D83 -#define GL_RGB32UI 0x8D71 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_RGB4 0x804F -#define GL_RGB4_EXT 0x804F -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGB5 0x8050 -#define GL_RGB565 0x8D62 -#define GL_RGB5_A1 0x8057 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB8I 0x8D8F -#define GL_RGB8I_EXT 0x8D8F -#define GL_RGB8UI 0x8D7D -#define GL_RGB8UI_EXT 0x8D7D -#define GL_RGB8_EXT 0x8051 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGB9_E5 0x8C3D -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_RGBA 0x1908 -#define GL_RGBA12 0x805A -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16 0x805B -#define GL_RGBA16F 0x881A -#define GL_RGBA16F_ARB 0x881A -#define GL_RGBA16F_EXT 0x881A -#define GL_RGBA16I 0x8D88 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGBA16UI 0x8D76 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGBA16_EXT 0x805B -#define GL_RGBA16_SNORM 0x8F9B -#define GL_RGBA2 0x8055 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA32F 0x8814 -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGBA32F_EXT 0x8814 -#define GL_RGBA32I 0x8D82 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGBA32UI 0x8D70 -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGBA4 0x8056 -#define GL_RGBA4_DXT5_S3TC 0x83A5 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA8 0x8058 -#define GL_RGBA8I 0x8D8E -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGBA8UI 0x8D7C -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGBA8_EXT 0x8058 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_RGBA_FLOAT_MODE_ATI 0x8820 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C -#define GL_RGBA_SNORM 0x8F93 -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_RGB_422_APPLE 0x8A1F -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGB_RAW_422_APPLE 0x8A51 -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_RGB_SNORM 0x8F92 -#define GL_RG_INTEGER 0x8228 -#define GL_RG_SNORM 0x8F91 -#define GL_RIGHT 0x0407 -#define GL_ROUNDED_RECT2_NV 0xEA -#define GL_ROUNDED_RECT4_NV 0xEC -#define GL_ROUNDED_RECT8_NV 0xEE -#define GL_ROUNDED_RECT_NV 0xE8 -#define GL_ROUND_NV 0x90A4 -#define GL_SAMPLER 0x82E6 -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_BINDING 0x8919 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_SAMPLER_OBJECT_AMD 0x9155 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLES_PASSED 0x8914 -#define GL_SAMPLES_PASSED_ARB 0x8914 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_LOCATION_ARB 0x8E50 -#define GL_SAMPLE_LOCATION_NV 0x8E50 -#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F -#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F -#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E -#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E -#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D -#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_SAMPLE_SHADING_ARB 0x8C36 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_SCALAR_EXT 0x87BE -#define GL_SCALEBIAS_HINT_SGIX 0x8322 -#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA -#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 -#define GL_SCISSOR_COMMAND_NV 0x0011 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_SCREEN_KHR 0x9295 -#define GL_SCREEN_NV 0x9295 -#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E -#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 -#define GL_SEMAPHORE_TYPE_NV 0x95B3 -#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA -#define GL_SET 0x150F -#define GL_SET_AMD 0x874A -#define GL_SHADER 0x82E1 -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 -#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 -#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 -#define GL_SHADER_IMAGE_ATOMIC 0x82A6 -#define GL_SHADER_IMAGE_LOAD 0x82A4 -#define GL_SHADER_IMAGE_STORE 0x82A5 -#define GL_SHADER_INCLUDE_ARB 0x8DAE -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_SHADER_OBJECT_EXT 0x8B48 -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 -#define GL_SHADER_STORAGE_BLOCK 0x92E6 -#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_SHADER_TYPE 0x8B4F -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C -#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F -#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 -#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 -#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 -#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 -#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A -#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B -#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 -#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C -#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D -#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E -#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B -#define GL_SHADING_RATE_IMAGE_NV 0x9563 -#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 -#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E -#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 -#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D -#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C -#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 -#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE -#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF -#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 -#define GL_SHADOW_AMBIENT_SGIX 0x80BF -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_SHARED_EDGE_NV 0xC0 -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB -#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 -#define GL_SHORT 0x1402 -#define GL_SIGNALED 0x9119 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#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_SINGLE_COLOR_EXT 0x81F9 -#define GL_SKIP_COMPONENTS1_NV -6 -#define GL_SKIP_COMPONENTS2_NV -5 -#define GL_SKIP_COMPONENTS3_NV -4 -#define GL_SKIP_COMPONENTS4_NV -3 -#define GL_SKIP_DECODE_EXT 0x8A4A -#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 -#define GL_SLICE_ACCUM_SUN 0x85CC -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SMALL_CCW_ARC_TO_NV 0x12 -#define GL_SMALL_CW_ARC_TO_NV 0x14 -#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 -#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_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E -#define GL_SM_COUNT_NV 0x933B -#define GL_SOFTLIGHT_KHR 0x929C -#define GL_SOFTLIGHT_NV 0x929C -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SPARE0_NV 0x852E -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_SPARE1_NV 0x852F -#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 -#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 -#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 -#define GL_SPIR_V_BINARY 0x9552 -#define GL_SPIR_V_BINARY_ARB 0x9552 -#define GL_SPIR_V_EXTENSIONS 0x9553 -#define GL_SPRITE_AXIAL_SGIX 0x814C -#define GL_SPRITE_AXIS_SGIX 0x814A -#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E -#define GL_SPRITE_MODE_SGIX 0x8149 -#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D -#define GL_SPRITE_SGIX 0x8148 -#define GL_SPRITE_TRANSLATION_SGIX 0x814B -#define GL_SQUARE_NV 0x90A3 -#define GL_SR8_EXT 0x8FBD -#define GL_SRC1_ALPHA 0x8589 -#define GL_SRC1_COLOR 0x88F9 -#define GL_SRC_ALPHA 0x0302 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_SRC_ATOP_NV 0x928E -#define GL_SRC_COLOR 0x0300 -#define GL_SRC_IN_NV 0x928A -#define GL_SRC_NV 0x9286 -#define GL_SRC_OUT_NV 0x928C -#define GL_SRC_OVER_NV 0x9288 -#define GL_SRG8_EXT 0x8FBE -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB_DECODE_ARB 0x8299 -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_READ 0x8297 -#define GL_SRGB_WRITE 0x8298 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_STANDARD_FONT_FORMAT_NV 0x936C -#define GL_STANDARD_FONT_NAME_NV 0x9072 -#define GL_STATIC_ATI 0x8760 -#define GL_STATIC_COPY 0x88E6 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 -#define GL_STENCIL 0x1802 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_COMPONENTS 0x8285 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_INDEX 0x1901 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_OP_VALUE_AMD 0x874C -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_REF_COMMAND_NV 0x000C -#define GL_STENCIL_RENDERABLE 0x8288 -#define GL_STENCIL_SAMPLES_NV 0x932E -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STEREO 0x0C33 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_CLIENT_APPLE 0x85B4 -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_SHARED_APPLE 0x85BF -#define GL_STREAM_COPY 0x88E2 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_RASTERIZATION_AMD 0x91A0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 -#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 -#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 -#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 -#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 -#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 -#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 -#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 -#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 -#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 -#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 -#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 -#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 -#define GL_SUBGROUP_SIZE_KHR 0x9532 -#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 -#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 -#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 -#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_SUB_ATI 0x8965 -#define GL_SUCCESS_NV 0x902F -#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 -#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 -#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 -#define GL_SURFACE_MAPPED_NV 0x8700 -#define GL_SURFACE_REGISTERED_NV 0x86FD -#define GL_SURFACE_STATE_NV 0x86EB -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SYNC_CL_EVENT_ARB 0x8240 -#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 -#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_SYNC_X11_FENCE_EXT 0x90E1 -#define GL_SYSTEM_FONT_NAME_NV 0x9073 -#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 -#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 -#define GL_T2F_IUI_V2F_EXT 0x81B1 -#define GL_T2F_IUI_V3F_EXT 0x81B2 -#define GL_TABLE_TOO_LARGE_EXT 0x8031 -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TASK_SHADER_BIT_NV 0x00000080 -#define GL_TASK_SHADER_NV 0x955A -#define GL_TASK_SUBROUTINE_NV 0x957D -#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F -#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F -#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_CONTROL_PROGRAM_NV 0x891E -#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 -#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 -#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 -#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF -#define GL_TESS_CONTROL_TEXTURE 0x829C -#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F -#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 -#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 -#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA -#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 -#define GL_TESS_EVALUATION_TEXTURE 0x829D -#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_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 -#define GL_TEXTURE 0x1702 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_TEXTURE31_ARB 0x84DF -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_TEXTURE_3D 0x806F -#define GL_TEXTURE_3D_BINDING_EXT 0x806A -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_TEXTURE_4DSIZE_SGIS 0x8136 -#define GL_TEXTURE_4D_BINDING_SGIS 0x814F -#define GL_TEXTURE_4D_SGIS 0x8134 -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_TEXTURE_BUFFER_BINDING 0x8C2A -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E -#define GL_TEXTURE_BUFFER_OFFSET 0x919D -#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F -#define GL_TEXTURE_BUFFER_SIZE 0x919E -#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 -#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 -#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 -#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 -#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 -#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 -#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 -#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 -#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 -#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F -#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 -#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE -#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 -#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 -#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_TEXTURE_GATHER 0x82A2 -#define GL_TEXTURE_GATHER_SHADOW 0x82A3 -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_IMAGE_FORMAT 0x828F -#define GL_TEXTURE_IMAGE_TYPE 0x8290 -#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F -#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 -#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 -#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E -#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MAG_SIZE_NV 0x871F -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E -#define GL_TEXTURE_NORMAL_EXT 0x85AF -#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 -#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 -#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_TEXTURE_SHADOW 0x82A1 -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F -#define GL_TEXTURE_SPARSE_ARB 0x91A6 -#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_TARGET 0x1006 -#define GL_TEXTURE_TILING_EXT 0x9580 -#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F -#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 -#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 -#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_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 -#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 -#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 -#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA -#define GL_TILING_TYPES_EXT 0x9583 -#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF -#define GL_TIMESTAMP 0x8E28 -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIME_ELAPSED_EXT 0x88BF -#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C -#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 -#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 -#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC -#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC -#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED -#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED -#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -#define GL_TRANSFORM_HINT_APPLE 0x85B1 -#define GL_TRANSLATE_2D_NV 0x9090 -#define GL_TRANSLATE_3D_NV 0x9091 -#define GL_TRANSLATE_X_NV 0x908E -#define GL_TRANSLATE_Y_NV 0x908F -#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 -#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_NV 0x862C -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLES_ADJACENCY_ARB 0x000C -#define GL_TRIANGLES_ADJACENCY_EXT 0x000C -#define GL_TRIANGLE_FAN 0x0006 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_TRIANGLE_MESH_SUN 0x8615 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D -#define GL_TRIANGULAR_NV 0x90A5 -#define GL_TRUE 1 -#define GL_TYPE 0x92FA -#define GL_UNCORRELATED_NV 0x9282 -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_UNDEFINED_VERTEX 0x8260 -#define GL_UNIFORM 0x92E1 -#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA -#define GL_UNIFORM_BARRIER_BIT 0x00000004 -#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 -#define GL_UNIFORM_BLOCK 0x92E2 -#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_COMPUTE_SHADER 0x90EC -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E -#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_UNKNOWN_CONTEXT_RESET 0x8255 -#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 -#define GL_UNPACK_CMYK_HINT_EXT 0x800F -#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_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_UNPACK_RESAMPLE_SGIX 0x842F -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 -#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNSIGNALED 0x9118 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INT 0x1405 -#define GL_UNSIGNED_INT16_NV 0x8FF0 -#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 -#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 -#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_UNSIGNED_INT64_ARB 0x140F -#define GL_UNSIGNED_INT64_NV 0x140F -#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 -#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 -#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 -#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 -#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 -#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_UNSIGNED_INT8_NV 0x8FEC -#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED -#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE -#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_UNSIGNED_INT_24_8_NV 0x84FA -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#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_1D_ARRAY_EXT 0x9068 -#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 -#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 -#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 -#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C -#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B -#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 -#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 -#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 -#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 -#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 -#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 -#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A -#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 -#define GL_UNSIGNED_SHORT 0x1403 -#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_EXT 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_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_UPLOAD_GPU_MASK_NVX 0x954A -#define GL_UPPER_LEFT 0x8CA2 -#define GL_USE_MISSING_GLYPH_NV 0x90AA -#define GL_UTF16_NV 0x909B -#define GL_UTF8_NV 0x909A -#define GL_UUID_SIZE_EXT 16 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_EXT 0x87C1 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_VECTOR_EXT 0x87BF -#define GL_VENDOR 0x1F00 -#define GL_VERSION 0x1F02 -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 -#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 -#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD -#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A -#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E -#define GL_VERTEX_ATTRIB_BINDING 0x82D4 -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 -#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 -#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 -#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 -#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_BLEND_ARB 0x86A7 -#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B -#define GL_VERTEX_DATA_HINT_PGI 0x1A22A -#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 -#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SOURCE_ATI 0x8774 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_VERTEX_STREAM0_ATI 0x876C -#define GL_VERTEX_STREAM1_ATI 0x876D -#define GL_VERTEX_STREAM2_ATI 0x876E -#define GL_VERTEX_STREAM3_ATI 0x876F -#define GL_VERTEX_STREAM4_ATI 0x8770 -#define GL_VERTEX_STREAM5_ATI 0x8771 -#define GL_VERTEX_STREAM6_ATI 0x8772 -#define GL_VERTEX_STREAM7_ATI 0x8773 -#define GL_VERTEX_SUBROUTINE 0x92E8 -#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE -#define GL_VERTEX_TEXTURE 0x829B -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTICAL_LINE_TO_NV 0x08 -#define GL_VERTICES_SUBMITTED 0x82EE -#define GL_VERTICES_SUBMITTED_ARB 0x82EE -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 -#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D -#define GL_VIDEO_BUFFER_NV 0x9020 -#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 -#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B -#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A -#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 -#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 -#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C -#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 -#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 -#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A -#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B -#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C -#define GL_VIEWPORT 0x0BA2 -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_VIEWPORT_COMMAND_NV 0x0010 -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C -#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D -#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 -#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 -#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 -#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 -#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 -#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 -#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 -#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 -#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B -#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 -#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 -#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A -#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_ASTC_10x10_RGBA 0x9393 -#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 -#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 -#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 -#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 -#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 -#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 -#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 -#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A -#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B -#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C -#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D -#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E -#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F -#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 -#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 -#define GL_VIEW_CLASS_EAC_R11 0x9383 -#define GL_VIEW_CLASS_EAC_RG11 0x9384 -#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 -#define GL_VIEW_CLASS_ETC2_RGB 0x9385 -#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 -#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 -#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 -#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 -#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 -#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 -#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 -#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 -#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 -#define GL_VIVIDLIGHT_NV 0x92A6 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_WAIT_FAILED 0x911D -#define GL_WARPS_PER_SM_NV 0x933A -#define GL_WARP_SIZE_NV 0x9339 -#define GL_WEIGHTED_AVERAGE_ARB 0x9367 -#define GL_WEIGHTED_AVERAGE_EXT 0x9367 -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_WIDE_LINE_HINT_PGI 0x1A222 -#define GL_WINDOW_RECTANGLE_EXT 0x8F12 -#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 -#define GL_WRAP_BORDER_SUN 0x81D4 -#define GL_WRITE_DISCARD_NV 0x88BE -#define GL_WRITE_ONLY 0x88B9 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_W_EXT 0x87D8 -#define GL_XOR 0x1506 -#define GL_XOR_NV 0x1506 -#define GL_X_EXT 0x87D5 -#define GL_YCBAYCR8A_4224_NV 0x9032 -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_YCBCR_MESA 0x8757 -#define GL_YCBYCR8_422_NV 0x9031 -#define GL_YCRCBA_SGIX 0x8319 -#define GL_YCRCB_422_SGIX 0x81BB -#define GL_YCRCB_444_SGIX 0x81BC -#define GL_YCRCB_SGIX 0x8318 -#define GL_Y_EXT 0x87D6 -#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 -#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 -#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 -#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 -#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 -#define GL_ZERO 0 -#define GL_ZERO_EXT 0x87DD -#define GL_ZERO_TO_ONE 0x935F -#define GL_Z_EXT 0x87D7 - -#include "khrplatform.h" -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; -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) -typedef khronos_intptr_t GLintptr; -#else -typedef khronos_intptr_t GLintptr; -#endif -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) -typedef khronos_intptr_t GLintptrARB; -#else -typedef khronos_intptr_t GLintptrARB; -#endif -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) -typedef khronos_ssize_t GLsizeiptr; -#else -typedef khronos_ssize_t GLsizeiptr; -#endif -#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) -typedef khronos_ssize_t GLsizeiptrARB; -#else -typedef khronos_ssize_t GLsizeiptrARB; -#endif -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(GLAD_API_PTR *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, - GLsizei length, const GLchar *message, - const void *userParam); -typedef void(GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, - GLsizei length, const GLchar *message, - const void *userParam); -typedef void(GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, - GLsizei length, const GLchar *message, - const void *userParam); -typedef void(GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, - GLsizei length, const GLchar *message, void *userParam); -typedef unsigned short GLhalfNV; -typedef GLintptr GLvdpauSurfaceNV; -typedef void(GLAD_API_PTR *GLVULKANPROCNV)(void); - -#define GL_VERSION_1_0 1 -#define GL_VERSION_1_1 1 -#define GL_VERSION_1_2 1 -#define GL_VERSION_1_3 1 -#define GL_VERSION_1_4 1 -#define GL_VERSION_1_5 1 -#define GL_VERSION_2_0 1 -#define GL_VERSION_2_1 1 -#define GL_VERSION_3_0 1 -#define GL_VERSION_3_1 1 -#define GL_VERSION_3_2 1 -#define GL_VERSION_3_3 1 -#define GL_VERSION_4_0 1 -#define GL_VERSION_4_1 1 -#define GL_VERSION_4_2 1 -#define GL_VERSION_4_3 1 -#define GL_VERSION_4_4 1 -#define GL_VERSION_4_5 1 -#define GL_VERSION_4_6 1 -#define GL_3DFX_multisample 1 -#define GL_3DFX_tbuffer 1 -#define GL_3DFX_texture_compression_FXT1 1 -#define GL_AMD_blend_minmax_factor 1 -#define GL_AMD_conservative_depth 1 -#define GL_AMD_debug_output 1 -#define GL_AMD_depth_clamp_separate 1 -#define GL_AMD_draw_buffers_blend 1 -#define GL_AMD_framebuffer_multisample_advanced 1 -#define GL_AMD_framebuffer_sample_positions 1 -#define GL_AMD_gcn_shader 1 -#define GL_AMD_gpu_shader_half_float 1 -#define GL_AMD_gpu_shader_int16 1 -#define GL_AMD_gpu_shader_int64 1 -#define GL_AMD_interleaved_elements 1 -#define GL_AMD_multi_draw_indirect 1 -#define GL_AMD_name_gen_delete 1 -#define GL_AMD_occlusion_query_event 1 -#define GL_AMD_performance_monitor 1 -#define GL_AMD_pinned_memory 1 -#define GL_AMD_query_buffer_object 1 -#define GL_AMD_sample_positions 1 -#define GL_AMD_seamless_cubemap_per_texture 1 -#define GL_AMD_shader_atomic_counter_ops 1 -#define GL_AMD_shader_ballot 1 -#define GL_AMD_shader_explicit_vertex_parameter 1 -#define GL_AMD_shader_gpu_shader_half_float_fetch 1 -#define GL_AMD_shader_image_load_store_lod 1 -#define GL_AMD_shader_stencil_export 1 -#define GL_AMD_shader_trinary_minmax 1 -#define GL_AMD_sparse_texture 1 -#define GL_AMD_stencil_operation_extended 1 -#define GL_AMD_texture_gather_bias_lod 1 -#define GL_AMD_texture_texture4 1 -#define GL_AMD_transform_feedback3_lines_triangles 1 -#define GL_AMD_transform_feedback4 1 -#define GL_AMD_vertex_shader_layer 1 -#define GL_AMD_vertex_shader_tessellator 1 -#define GL_AMD_vertex_shader_viewport_index 1 -#define GL_APPLE_aux_depth_stencil 1 -#define GL_APPLE_client_storage 1 -#define GL_APPLE_element_array 1 -#define GL_APPLE_fence 1 -#define GL_APPLE_float_pixels 1 -#define GL_APPLE_flush_buffer_range 1 -#define GL_APPLE_object_purgeable 1 -#define GL_APPLE_rgb_422 1 -#define GL_APPLE_row_bytes 1 -#define GL_APPLE_specular_vector 1 -#define GL_APPLE_texture_range 1 -#define GL_APPLE_transform_hint 1 -#define GL_APPLE_vertex_array_object 1 -#define GL_APPLE_vertex_array_range 1 -#define GL_APPLE_vertex_program_evaluators 1 -#define GL_APPLE_ycbcr_422 1 -#define GL_ARB_ES2_compatibility 1 -#define GL_ARB_ES3_1_compatibility 1 -#define GL_ARB_ES3_2_compatibility 1 -#define GL_ARB_ES3_compatibility 1 -#define GL_ARB_arrays_of_arrays 1 -#define GL_ARB_base_instance 1 -#define GL_ARB_bindless_texture 1 -#define GL_ARB_blend_func_extended 1 -#define GL_ARB_buffer_storage 1 -#define GL_ARB_cl_event 1 -#define GL_ARB_clear_buffer_object 1 -#define GL_ARB_clear_texture 1 -#define GL_ARB_clip_control 1 -#define GL_ARB_color_buffer_float 1 -#define GL_ARB_compatibility 1 -#define GL_ARB_compressed_texture_pixel_storage 1 -#define GL_ARB_compute_shader 1 -#define GL_ARB_compute_variable_group_size 1 -#define GL_ARB_conditional_render_inverted 1 -#define GL_ARB_conservative_depth 1 -#define GL_ARB_copy_buffer 1 -#define GL_ARB_copy_image 1 -#define GL_ARB_cull_distance 1 -#define GL_ARB_debug_output 1 -#define GL_ARB_depth_buffer_float 1 -#define GL_ARB_depth_clamp 1 -#define GL_ARB_depth_texture 1 -#define GL_ARB_derivative_control 1 -#define GL_ARB_direct_state_access 1 -#define GL_ARB_draw_buffers 1 -#define GL_ARB_draw_buffers_blend 1 -#define GL_ARB_draw_elements_base_vertex 1 -#define GL_ARB_draw_indirect 1 -#define GL_ARB_draw_instanced 1 -#define GL_ARB_enhanced_layouts 1 -#define GL_ARB_explicit_attrib_location 1 -#define GL_ARB_explicit_uniform_location 1 -#define GL_ARB_fragment_coord_conventions 1 -#define GL_ARB_fragment_layer_viewport 1 -#define GL_ARB_fragment_program 1 -#define GL_ARB_fragment_program_shadow 1 -#define GL_ARB_fragment_shader 1 -#define GL_ARB_fragment_shader_interlock 1 -#define GL_ARB_framebuffer_no_attachments 1 -#define GL_ARB_framebuffer_object 1 -#define GL_ARB_framebuffer_sRGB 1 -#define GL_ARB_geometry_shader4 1 -#define GL_ARB_get_program_binary 1 -#define GL_ARB_get_texture_sub_image 1 -#define GL_ARB_gl_spirv 1 -#define GL_ARB_gpu_shader5 1 -#define GL_ARB_gpu_shader_fp64 1 -#define GL_ARB_gpu_shader_int64 1 -#define GL_ARB_half_float_pixel 1 -#define GL_ARB_half_float_vertex 1 -#define GL_ARB_imaging 1 -#define GL_ARB_indirect_parameters 1 -#define GL_ARB_instanced_arrays 1 -#define GL_ARB_internalformat_query 1 -#define GL_ARB_internalformat_query2 1 -#define GL_ARB_invalidate_subdata 1 -#define GL_ARB_map_buffer_alignment 1 -#define GL_ARB_map_buffer_range 1 -#define GL_ARB_matrix_palette 1 -#define GL_ARB_multi_bind 1 -#define GL_ARB_multi_draw_indirect 1 -#define GL_ARB_multisample 1 -#define GL_ARB_multitexture 1 -#define GL_ARB_occlusion_query 1 -#define GL_ARB_occlusion_query2 1 -#define GL_ARB_parallel_shader_compile 1 -#define GL_ARB_pipeline_statistics_query 1 -#define GL_ARB_pixel_buffer_object 1 -#define GL_ARB_point_parameters 1 -#define GL_ARB_point_sprite 1 -#define GL_ARB_polygon_offset_clamp 1 -#define GL_ARB_post_depth_coverage 1 -#define GL_ARB_program_interface_query 1 -#define GL_ARB_provoking_vertex 1 -#define GL_ARB_query_buffer_object 1 -#define GL_ARB_robust_buffer_access_behavior 1 -#define GL_ARB_robustness 1 -#define GL_ARB_robustness_isolation 1 -#define GL_ARB_sample_locations 1 -#define GL_ARB_sample_shading 1 -#define GL_ARB_sampler_objects 1 -#define GL_ARB_seamless_cube_map 1 -#define GL_ARB_seamless_cubemap_per_texture 1 -#define GL_ARB_separate_shader_objects 1 -#define GL_ARB_shader_atomic_counter_ops 1 -#define GL_ARB_shader_atomic_counters 1 -#define GL_ARB_shader_ballot 1 -#define GL_ARB_shader_bit_encoding 1 -#define GL_ARB_shader_clock 1 -#define GL_ARB_shader_draw_parameters 1 -#define GL_ARB_shader_group_vote 1 -#define GL_ARB_shader_image_load_store 1 -#define GL_ARB_shader_image_size 1 -#define GL_ARB_shader_objects 1 -#define GL_ARB_shader_precision 1 -#define GL_ARB_shader_stencil_export 1 -#define GL_ARB_shader_storage_buffer_object 1 -#define GL_ARB_shader_subroutine 1 -#define GL_ARB_shader_texture_image_samples 1 -#define GL_ARB_shader_texture_lod 1 -#define GL_ARB_shader_viewport_layer_array 1 -#define GL_ARB_shading_language_100 1 -#define GL_ARB_shading_language_420pack 1 -#define GL_ARB_shading_language_include 1 -#define GL_ARB_shading_language_packing 1 -#define GL_ARB_shadow 1 -#define GL_ARB_shadow_ambient 1 -#define GL_ARB_sparse_buffer 1 -#define GL_ARB_sparse_texture 1 -#define GL_ARB_sparse_texture2 1 -#define GL_ARB_sparse_texture_clamp 1 -#define GL_ARB_spirv_extensions 1 -#define GL_ARB_stencil_texturing 1 -#define GL_ARB_sync 1 -#define GL_ARB_tessellation_shader 1 -#define GL_ARB_texture_barrier 1 -#define GL_ARB_texture_border_clamp 1 -#define GL_ARB_texture_buffer_object 1 -#define GL_ARB_texture_buffer_object_rgb32 1 -#define GL_ARB_texture_buffer_range 1 -#define GL_ARB_texture_compression 1 -#define GL_ARB_texture_compression_bptc 1 -#define GL_ARB_texture_compression_rgtc 1 -#define GL_ARB_texture_cube_map 1 -#define GL_ARB_texture_cube_map_array 1 -#define GL_ARB_texture_env_add 1 -#define GL_ARB_texture_env_combine 1 -#define GL_ARB_texture_env_crossbar 1 -#define GL_ARB_texture_env_dot3 1 -#define GL_ARB_texture_filter_anisotropic 1 -#define GL_ARB_texture_filter_minmax 1 -#define GL_ARB_texture_float 1 -#define GL_ARB_texture_gather 1 -#define GL_ARB_texture_mirror_clamp_to_edge 1 -#define GL_ARB_texture_mirrored_repeat 1 -#define GL_ARB_texture_multisample 1 -#define GL_ARB_texture_non_power_of_two 1 -#define GL_ARB_texture_query_levels 1 -#define GL_ARB_texture_query_lod 1 -#define GL_ARB_texture_rectangle 1 -#define GL_ARB_texture_rg 1 -#define GL_ARB_texture_rgb10_a2ui 1 -#define GL_ARB_texture_stencil8 1 -#define GL_ARB_texture_storage 1 -#define GL_ARB_texture_storage_multisample 1 -#define GL_ARB_texture_swizzle 1 -#define GL_ARB_texture_view 1 -#define GL_ARB_timer_query 1 -#define GL_ARB_transform_feedback2 1 -#define GL_ARB_transform_feedback3 1 -#define GL_ARB_transform_feedback_instanced 1 -#define GL_ARB_transform_feedback_overflow_query 1 -#define GL_ARB_transpose_matrix 1 -#define GL_ARB_uniform_buffer_object 1 -#define GL_ARB_vertex_array_bgra 1 -#define GL_ARB_vertex_array_object 1 -#define GL_ARB_vertex_attrib_64bit 1 -#define GL_ARB_vertex_attrib_binding 1 -#define GL_ARB_vertex_blend 1 -#define GL_ARB_vertex_buffer_object 1 -#define GL_ARB_vertex_program 1 -#define GL_ARB_vertex_shader 1 -#define GL_ARB_vertex_type_10f_11f_11f_rev 1 -#define GL_ARB_vertex_type_2_10_10_10_rev 1 -#define GL_ARB_viewport_array 1 -#define GL_ARB_window_pos 1 -#define GL_ATI_draw_buffers 1 -#define GL_ATI_element_array 1 -#define GL_ATI_envmap_bumpmap 1 -#define GL_ATI_fragment_shader 1 -#define GL_ATI_map_object_buffer 1 -#define GL_ATI_meminfo 1 -#define GL_ATI_pixel_format_float 1 -#define GL_ATI_pn_triangles 1 -#define GL_ATI_separate_stencil 1 -#define GL_ATI_text_fragment_shader 1 -#define GL_ATI_texture_env_combine3 1 -#define GL_ATI_texture_float 1 -#define GL_ATI_texture_mirror_once 1 -#define GL_ATI_vertex_array_object 1 -#define GL_ATI_vertex_attrib_array_object 1 -#define GL_ATI_vertex_streams 1 -#define GL_EXT_422_pixels 1 -#define GL_EXT_EGL_image_storage 1 -#define GL_EXT_EGL_sync 1 -#define GL_EXT_abgr 1 -#define GL_EXT_bgra 1 -#define GL_EXT_bindable_uniform 1 -#define GL_EXT_blend_color 1 -#define GL_EXT_blend_equation_separate 1 -#define GL_EXT_blend_func_separate 1 -#define GL_EXT_blend_logic_op 1 -#define GL_EXT_blend_minmax 1 -#define GL_EXT_blend_subtract 1 -#define GL_EXT_clip_volume_hint 1 -#define GL_EXT_cmyka 1 -#define GL_EXT_color_subtable 1 -#define GL_EXT_compiled_vertex_array 1 -#define GL_EXT_convolution 1 -#define GL_EXT_coordinate_frame 1 -#define GL_EXT_copy_texture 1 -#define GL_EXT_cull_vertex 1 -#define GL_EXT_debug_label 1 -#define GL_EXT_debug_marker 1 -#define GL_EXT_depth_bounds_test 1 -#define GL_EXT_direct_state_access 1 -#define GL_EXT_draw_buffers2 1 -#define GL_EXT_draw_instanced 1 -#define GL_EXT_draw_range_elements 1 -#define GL_EXT_external_buffer 1 -#define GL_EXT_fog_coord 1 -#define GL_EXT_framebuffer_blit 1 -#define GL_EXT_framebuffer_blit_layers 1 -#define GL_EXT_framebuffer_multisample 1 -#define GL_EXT_framebuffer_multisample_blit_scaled 1 -#define GL_EXT_framebuffer_object 1 -#define GL_EXT_framebuffer_sRGB 1 -#define GL_EXT_geometry_shader4 1 -#define GL_EXT_gpu_program_parameters 1 -#define GL_EXT_gpu_shader4 1 -#define GL_EXT_histogram 1 -#define GL_EXT_index_array_formats 1 -#define GL_EXT_index_func 1 -#define GL_EXT_index_material 1 -#define GL_EXT_index_texture 1 -#define GL_EXT_light_texture 1 -#define GL_EXT_memory_object 1 -#define GL_EXT_memory_object_fd 1 -#define GL_EXT_memory_object_win32 1 -#define GL_EXT_misc_attribute 1 -#define GL_EXT_multi_draw_arrays 1 -#define GL_EXT_multisample 1 -#define GL_EXT_multiview_tessellation_geometry_shader 1 -#define GL_EXT_multiview_texture_multisample 1 -#define GL_EXT_multiview_timer_query 1 -#define GL_EXT_packed_depth_stencil 1 -#define GL_EXT_packed_float 1 -#define GL_EXT_packed_pixels 1 -#define GL_EXT_paletted_texture 1 -#define GL_EXT_pixel_buffer_object 1 -#define GL_EXT_pixel_transform 1 -#define GL_EXT_pixel_transform_color_table 1 -#define GL_EXT_point_parameters 1 -#define GL_EXT_polygon_offset 1 -#define GL_EXT_polygon_offset_clamp 1 -#define GL_EXT_post_depth_coverage 1 -#define GL_EXT_provoking_vertex 1 -#define GL_EXT_raster_multisample 1 -#define GL_EXT_rescale_normal 1 -#define GL_EXT_secondary_color 1 -#define GL_EXT_semaphore 1 -#define GL_EXT_semaphore_fd 1 -#define GL_EXT_semaphore_win32 1 -#define GL_EXT_separate_shader_objects 1 -#define GL_EXT_separate_specular_color 1 -#define GL_EXT_shader_framebuffer_fetch 1 -#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 -#define GL_EXT_shader_image_load_formatted 1 -#define GL_EXT_shader_image_load_store 1 -#define GL_EXT_shader_integer_mix 1 -#define GL_EXT_shader_samples_identical 1 -#define GL_EXT_shadow_funcs 1 -#define GL_EXT_shared_texture_palette 1 -#define GL_EXT_sparse_texture2 1 -#define GL_EXT_stencil_clear_tag 1 -#define GL_EXT_stencil_two_side 1 -#define GL_EXT_stencil_wrap 1 -#define GL_EXT_subtexture 1 -#define GL_EXT_texture 1 -#define GL_EXT_texture3D 1 -#define GL_EXT_texture_array 1 -#define GL_EXT_texture_buffer_object 1 -#define GL_EXT_texture_compression_latc 1 -#define GL_EXT_texture_compression_rgtc 1 -#define GL_EXT_texture_compression_s3tc 1 -#define GL_EXT_texture_cube_map 1 -#define GL_EXT_texture_env_add 1 -#define GL_EXT_texture_env_combine 1 -#define GL_EXT_texture_env_dot3 1 -#define GL_EXT_texture_filter_anisotropic 1 -#define GL_EXT_texture_filter_minmax 1 -#define GL_EXT_texture_integer 1 -#define GL_EXT_texture_lod_bias 1 -#define GL_EXT_texture_mirror_clamp 1 -#define GL_EXT_texture_object 1 -#define GL_EXT_texture_perturb_normal 1 -#define GL_EXT_texture_sRGB 1 -#define GL_EXT_texture_sRGB_R8 1 -#define GL_EXT_texture_sRGB_RG8 1 -#define GL_EXT_texture_sRGB_decode 1 -#define GL_EXT_texture_shadow_lod 1 -#define GL_EXT_texture_shared_exponent 1 -#define GL_EXT_texture_snorm 1 -#define GL_EXT_texture_storage 1 -#define GL_EXT_texture_swizzle 1 -#define GL_EXT_timer_query 1 -#define GL_EXT_transform_feedback 1 -#define GL_EXT_vertex_array 1 -#define GL_EXT_vertex_array_bgra 1 -#define GL_EXT_vertex_attrib_64bit 1 -#define GL_EXT_vertex_shader 1 -#define GL_EXT_vertex_weighting 1 -#define GL_EXT_win32_keyed_mutex 1 -#define GL_EXT_window_rectangles 1 -#define GL_EXT_x11_sync_object 1 -#define GL_GREMEDY_frame_terminator 1 -#define GL_GREMEDY_string_marker 1 -#define GL_HP_convolution_border_modes 1 -#define GL_HP_image_transform 1 -#define GL_HP_occlusion_test 1 -#define GL_HP_texture_lighting 1 -#define GL_IBM_cull_vertex 1 -#define GL_IBM_multimode_draw_arrays 1 -#define GL_IBM_rasterpos_clip 1 -#define GL_IBM_static_data 1 -#define GL_IBM_texture_mirrored_repeat 1 -#define GL_IBM_vertex_array_lists 1 -#define GL_INGR_blend_func_separate 1 -#define GL_INGR_color_clamp 1 -#define GL_INGR_interlace_read 1 -#define GL_INTEL_blackhole_render 1 -#define GL_INTEL_conservative_rasterization 1 -#define GL_INTEL_fragment_shader_ordering 1 -#define GL_INTEL_framebuffer_CMAA 1 -#define GL_INTEL_map_texture 1 -#define GL_INTEL_parallel_arrays 1 -#define GL_INTEL_performance_query 1 -#define GL_KHR_blend_equation_advanced 1 -#define GL_KHR_blend_equation_advanced_coherent 1 -#define GL_KHR_context_flush_control 1 -#define GL_KHR_debug 1 -#define GL_KHR_no_error 1 -#define GL_KHR_parallel_shader_compile 1 -#define GL_KHR_robust_buffer_access_behavior 1 -#define GL_KHR_robustness 1 -#define GL_KHR_shader_subgroup 1 -#define GL_KHR_texture_compression_astc_hdr 1 -#define GL_KHR_texture_compression_astc_ldr 1 -#define GL_KHR_texture_compression_astc_sliced_3d 1 -#define GL_MESAX_texture_stack 1 -#define GL_MESA_framebuffer_flip_x 1 -#define GL_MESA_framebuffer_flip_y 1 -#define GL_MESA_framebuffer_swap_xy 1 -#define GL_MESA_pack_invert 1 -#define GL_MESA_program_binary_formats 1 -#define GL_MESA_resize_buffers 1 -#define GL_MESA_shader_integer_functions 1 -#define GL_MESA_tile_raster_order 1 -#define GL_MESA_window_pos 1 -#define GL_MESA_ycbcr_texture 1 -#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 -#define GL_NVX_conditional_render 1 -#define GL_NVX_gpu_memory_info 1 -#define GL_NVX_gpu_multicast2 1 -#define GL_NVX_linked_gpu_multicast 1 -#define GL_NVX_progress_fence 1 -#define GL_NV_alpha_to_coverage_dither_control 1 -#define GL_NV_bindless_multi_draw_indirect 1 -#define GL_NV_bindless_multi_draw_indirect_count 1 -#define GL_NV_bindless_texture 1 -#define GL_NV_blend_equation_advanced 1 -#define GL_NV_blend_equation_advanced_coherent 1 -#define GL_NV_blend_minmax_factor 1 -#define GL_NV_blend_square 1 -#define GL_NV_clip_space_w_scaling 1 -#define GL_NV_command_list 1 -#define GL_NV_compute_program5 1 -#define GL_NV_compute_shader_derivatives 1 -#define GL_NV_conditional_render 1 -#define GL_NV_conservative_raster 1 -#define GL_NV_conservative_raster_dilate 1 -#define GL_NV_conservative_raster_pre_snap 1 -#define GL_NV_conservative_raster_pre_snap_triangles 1 -#define GL_NV_conservative_raster_underestimation 1 -#define GL_NV_copy_depth_to_color 1 -#define GL_NV_copy_image 1 -#define GL_NV_deep_texture3D 1 -#define GL_NV_depth_buffer_float 1 -#define GL_NV_depth_clamp 1 -#define GL_NV_draw_texture 1 -#define GL_NV_draw_vulkan_image 1 -#define GL_NV_evaluators 1 -#define GL_NV_explicit_multisample 1 -#define GL_NV_fence 1 -#define GL_NV_fill_rectangle 1 -#define GL_NV_float_buffer 1 -#define GL_NV_fog_distance 1 -#define GL_NV_fragment_coverage_to_color 1 -#define GL_NV_fragment_program 1 -#define GL_NV_fragment_program2 1 -#define GL_NV_fragment_program4 1 -#define GL_NV_fragment_program_option 1 -#define GL_NV_fragment_shader_barycentric 1 -#define GL_NV_fragment_shader_interlock 1 -#define GL_NV_framebuffer_mixed_samples 1 -#define GL_NV_framebuffer_multisample_coverage 1 -#define GL_NV_geometry_program4 1 -#define GL_NV_geometry_shader4 1 -#define GL_NV_geometry_shader_passthrough 1 -#define GL_NV_gpu_multicast 1 -#define GL_NV_gpu_program4 1 -#define GL_NV_gpu_program5 1 -#define GL_NV_gpu_program5_mem_extended 1 -#define GL_NV_gpu_shader5 1 -#define GL_NV_half_float 1 -#define GL_NV_internalformat_sample_query 1 -#define GL_NV_light_max_exponent 1 -#define GL_NV_memory_attachment 1 -#define GL_NV_memory_object_sparse 1 -#define GL_NV_mesh_shader 1 -#define GL_NV_multisample_coverage 1 -#define GL_NV_multisample_filter_hint 1 -#define GL_NV_occlusion_query 1 -#define GL_NV_packed_depth_stencil 1 -#define GL_NV_parameter_buffer_object 1 -#define GL_NV_parameter_buffer_object2 1 -#define GL_NV_path_rendering 1 -#define GL_NV_path_rendering_shared_edge 1 -#define GL_NV_pixel_data_range 1 -#define GL_NV_point_sprite 1 -#define GL_NV_present_video 1 -#define GL_NV_primitive_restart 1 -#define GL_NV_primitive_shading_rate 1 -#define GL_NV_query_resource 1 -#define GL_NV_query_resource_tag 1 -#define GL_NV_register_combiners 1 -#define GL_NV_register_combiners2 1 -#define GL_NV_representative_fragment_test 1 -#define GL_NV_robustness_video_memory_purge 1 -#define GL_NV_sample_locations 1 -#define GL_NV_sample_mask_override_coverage 1 -#define GL_NV_scissor_exclusive 1 -#define GL_NV_shader_atomic_counters 1 -#define GL_NV_shader_atomic_float 1 -#define GL_NV_shader_atomic_float64 1 -#define GL_NV_shader_atomic_fp16_vector 1 -#define GL_NV_shader_atomic_int64 1 -#define GL_NV_shader_buffer_load 1 -#define GL_NV_shader_buffer_store 1 -#define GL_NV_shader_storage_buffer_object 1 -#define GL_NV_shader_subgroup_partitioned 1 -#define GL_NV_shader_texture_footprint 1 -#define GL_NV_shader_thread_group 1 -#define GL_NV_shader_thread_shuffle 1 -#define GL_NV_shading_rate_image 1 -#define GL_NV_stereo_view_rendering 1 -#define GL_NV_tessellation_program5 1 -#define GL_NV_texgen_emboss 1 -#define GL_NV_texgen_reflection 1 -#define GL_NV_texture_barrier 1 -#define GL_NV_texture_compression_vtc 1 -#define GL_NV_texture_env_combine4 1 -#define GL_NV_texture_expand_normal 1 -#define GL_NV_texture_multisample 1 -#define GL_NV_texture_rectangle 1 -#define GL_NV_texture_rectangle_compressed 1 -#define GL_NV_texture_shader 1 -#define GL_NV_texture_shader2 1 -#define GL_NV_texture_shader3 1 -#define GL_NV_timeline_semaphore 1 -#define GL_NV_transform_feedback 1 -#define GL_NV_transform_feedback2 1 -#define GL_NV_uniform_buffer_std430_layout 1 -#define GL_NV_uniform_buffer_unified_memory 1 -#define GL_NV_vdpau_interop 1 -#define GL_NV_vdpau_interop2 1 -#define GL_NV_vertex_array_range 1 -#define GL_NV_vertex_array_range2 1 -#define GL_NV_vertex_attrib_integer_64bit 1 -#define GL_NV_vertex_buffer_unified_memory 1 -#define GL_NV_vertex_program 1 -#define GL_NV_vertex_program1_1 1 -#define GL_NV_vertex_program2 1 -#define GL_NV_vertex_program2_option 1 -#define GL_NV_vertex_program3 1 -#define GL_NV_vertex_program4 1 -#define GL_NV_video_capture 1 -#define GL_NV_viewport_array2 1 -#define GL_NV_viewport_swizzle 1 -#define GL_OES_byte_coordinates 1 -#define GL_OES_compressed_paletted_texture 1 -#define GL_OES_fixed_point 1 -#define GL_OES_query_matrix 1 -#define GL_OES_read_format 1 -#define GL_OES_single_precision 1 -#define GL_OML_interlace 1 -#define GL_OML_resample 1 -#define GL_OML_subsample 1 -#define GL_OVR_multiview 1 -#define GL_OVR_multiview2 1 -#define GL_PGI_misc_hints 1 -#define GL_PGI_vertex_hints 1 -#define GL_REND_screen_coordinates 1 -#define GL_S3_s3tc 1 -#define GL_SGIS_detail_texture 1 -#define GL_SGIS_fog_function 1 -#define GL_SGIS_generate_mipmap 1 -#define GL_SGIS_multisample 1 -#define GL_SGIS_pixel_texture 1 -#define GL_SGIS_point_line_texgen 1 -#define GL_SGIS_point_parameters 1 -#define GL_SGIS_sharpen_texture 1 -#define GL_SGIS_texture4D 1 -#define GL_SGIS_texture_border_clamp 1 -#define GL_SGIS_texture_color_mask 1 -#define GL_SGIS_texture_edge_clamp 1 -#define GL_SGIS_texture_filter4 1 -#define GL_SGIS_texture_lod 1 -#define GL_SGIS_texture_select 1 -#define GL_SGIX_async 1 -#define GL_SGIX_async_histogram 1 -#define GL_SGIX_async_pixel 1 -#define GL_SGIX_blend_alpha_minmax 1 -#define GL_SGIX_calligraphic_fragment 1 -#define GL_SGIX_clipmap 1 -#define GL_SGIX_convolution_accuracy 1 -#define GL_SGIX_depth_pass_instrument 1 -#define GL_SGIX_depth_texture 1 -#define GL_SGIX_flush_raster 1 -#define GL_SGIX_fog_offset 1 -#define GL_SGIX_fragment_lighting 1 -#define GL_SGIX_framezoom 1 -#define GL_SGIX_igloo_interface 1 -#define GL_SGIX_instruments 1 -#define GL_SGIX_interlace 1 -#define GL_SGIX_ir_instrument1 1 -#define GL_SGIX_list_priority 1 -#define GL_SGIX_pixel_texture 1 -#define GL_SGIX_pixel_tiles 1 -#define GL_SGIX_polynomial_ffd 1 -#define GL_SGIX_reference_plane 1 -#define GL_SGIX_resample 1 -#define GL_SGIX_scalebias_hint 1 -#define GL_SGIX_shadow 1 -#define GL_SGIX_shadow_ambient 1 -#define GL_SGIX_sprite 1 -#define GL_SGIX_subsample 1 -#define GL_SGIX_tag_sample_buffer 1 -#define GL_SGIX_texture_add_env 1 -#define GL_SGIX_texture_coordinate_clamp 1 -#define GL_SGIX_texture_lod_bias 1 -#define GL_SGIX_texture_multi_buffer 1 -#define GL_SGIX_texture_scale_bias 1 -#define GL_SGIX_vertex_preclip 1 -#define GL_SGIX_ycrcb 1 -#define GL_SGIX_ycrcb_subsample 1 -#define GL_SGIX_ycrcba 1 -#define GL_SGI_color_matrix 1 -#define GL_SGI_color_table 1 -#define GL_SGI_texture_color_table 1 -#define GL_SUNX_constant_data 1 -#define GL_SUN_convolution_border_modes 1 -#define GL_SUN_global_alpha 1 -#define GL_SUN_mesh_array 1 -#define GL_SUN_slice_accum 1 -#define GL_SUN_triangle_list 1 -#define GL_SUN_vertex 1 -#define GL_WIN_phong_shading 1 -#define GL_WIN_specular_fog 1 - -typedef void(GLAD_API_PTR *PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); -typedef GLboolean(GLAD_API_PTR *PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, - GLuint timeout); -typedef void(GLAD_API_PTR *PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); -typedef void(GLAD_API_PTR *PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); -typedef void(GLAD_API_PTR *PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); -typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); -typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREARBPROC)(GLenum texture); -typedef void(GLAD_API_PTR *PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, - GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod); -typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, - GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, - GLuint arg2Rep, GLuint arg2Mod); -typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP3ATIPROC)( - GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, - GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void(GLAD_API_PTR *PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); -typedef void(GLAD_API_PTR *PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); -typedef void(GLAD_API_PTR *PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); -typedef GLboolean(GLAD_API_PTR *PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint *programs, - GLboolean *residences); -typedef GLboolean(GLAD_API_PTR *PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint *textures, - GLboolean *residences); -typedef void(GLAD_API_PTR *PFNGLARRAYELEMENTEXTPROC)(GLint i); -typedef void(GLAD_API_PTR *PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, - GLsizei stride, GLuint buffer, GLuint offset); -typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)( - GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, - const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, - GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, - GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, - const GLuint64 *signalValueArray); -typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYIMAGESUBDATANVXPROC)( - GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, - const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, - GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, - GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, - GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, - const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); -typedef void(GLAD_API_PTR *PFNGLASYNCMARKERSGIXPROC)(GLuint marker); -typedef void(GLAD_API_PTR *PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); -typedef void(GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); -typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLBEGINFRAGMENTSHADERATIPROC)(void); -typedef void(GLAD_API_PTR *PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); -typedef void(GLAD_API_PTR *PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); -typedef void(GLAD_API_PTR *PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); -typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); -typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); -typedef void(GLAD_API_PTR *PFNGLBEGINVERTEXSHADEREXTPROC)(void); -typedef void(GLAD_API_PTR *PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); -typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, - const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, - const GLcharARB *name); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, - GLintptr offset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, - GLintptr offset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, - GLintptr offset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, - const GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, - const GLuint *buffers, - const GLintptr *offsets, - const GLsizeiptr *sizes); -typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, - const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, - const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, - GLuint index, const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); -typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); -typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, - GLboolean layered, GLint layer, GLenum access, - GLenum format); -typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, - GLboolean layered, GLint layer, - GLenum access, GLint format); -typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, - const GLuint *textures); -typedef GLuint(GLAD_API_PTR *PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); -typedef GLuint(GLAD_API_PTR *PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); -typedef void(GLAD_API_PTR *PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, - GLuint texture); -typedef GLuint(GLAD_API_PTR *PFNGLBINDPARAMETEREXTPROC)(GLenum value); -typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); -typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); -typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); -typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, - const GLuint *samplers); -typedef void(GLAD_API_PTR *PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); -typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, - GLenum value); -typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); -typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); -typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); -typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); -typedef void(GLAD_API_PTR *PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, - const GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); -typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYPROC)(GLuint array); -typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); -typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, - GLintptr offset, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, - const GLuint *buffers, - const GLintptr *offsets, - const GLsizei *strides); -typedef void(GLAD_API_PTR *PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, - GLuint stream, - GLenum frame_region, - GLintptrARB offset); -typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, - GLuint stream, - GLenum frame_region, - GLenum target, GLuint texture); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3BVEXTPROC)(const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3DVEXTPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3FVEXTPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3IVEXTPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); -typedef void(GLAD_API_PTR *PFNGLBINORMAL3SVEXTPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, - GLfixed yorig, GLfixed xmove, GLfixed ymove, - const GLubyte *bitmap); -typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERKHRPROC)(void); -typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, - GLfloat alpha); -typedef void(GLAD_API_PTR *PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, - GLfloat alpha); -typedef void(GLAD_API_PTR *PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, - GLfixed alpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, - GLenum modeAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, - GLenum modeAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, - GLenum modeAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorAlpha, - GLenum dfactorAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, - GLenum dstRGB, GLenum srcAlpha, - GLenum dstAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, - GLenum srcAlpha, GLenum dstAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, - GLenum srcAlpha, GLenum dstAlpha); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); -typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); -typedef void(GLAD_API_PTR *PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); -typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, - GLint srcY1, GLint dstX0, GLint dstY0, - GLint dstX1, GLint dstY1, GLbitfield mask, - GLenum filter); -typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, - GLint srcY1, GLint dstX0, GLint dstY0, - GLint dstX1, GLint dstY1, GLbitfield mask, - GLenum filter); -typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, - GLint srcY1, GLint srcLayer, - GLint dstX0, GLint dstY0, GLint dstX1, - GLint dstY1, GLint dstLayer, - GLbitfield mask, GLenum filter); -typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYERSEXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, - GLint srcY1, GLint dstX0, GLint dstY0, - GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter); -typedef void(GLAD_API_PTR *PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, - GLuint drawFramebuffer, GLint srcX0, - GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, - GLint dstY1, GLbitfield mask, - GLenum filter); -typedef void(GLAD_API_PTR *PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, - GLuint64EXT address, GLsizeiptr length); -typedef void(GLAD_API_PTR *PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, - GLenum usage); -typedef void(GLAD_API_PTR *PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, - const void *data, GLenum usage); -typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, - GLsizeiptr size, GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)(GLenum target, GLintptr offset, - GLsizeiptr size, GLuint memory, - GLuint64 memOffset, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, - GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, - GLsizeiptr size, - GLeglClientBufferEXT clientBuffer, - GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, - const void *data); -typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, - GLsizeiptrARB size, const void *data); -typedef void(GLAD_API_PTR *PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); -typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); -typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); -typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, - GLenum target); -typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, - GLenum target); -typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); -typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); -typedef void(GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, - GLfixed alpha); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, - GLenum format, GLenum type, const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, - GLintptr offset, GLsizeiptr size, - GLenum format, GLenum type, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, - GLint stencil); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, - GLfloat alpha); -typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, - GLint alpha); -typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, - GLuint alpha); -typedef void(GLAD_API_PTR *PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, - GLfixed alpha); -typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHPROC)(GLdouble depth); -typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); -typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); -typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); -typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, - GLenum format, GLenum type, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, - GLenum format, GLenum type, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, - GLintptr offset, GLsizeiptr size, - GLenum format, GLenum type, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, - GLenum internalformat, - GLsizeiptr offset, GLsizeiptr size, - GLenum format, GLenum type, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, - GLint drawbuffer, GLfloat depth, - GLint stencil); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, - GLint drawbuffer, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, - GLint drawbuffer, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, - GLint drawbuffer, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); -typedef void(GLAD_API_PTR *PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, - GLenum type, const void *data); -typedef void(GLAD_API_PTR *PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, - GLenum type, const void *data); -typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); -typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); -typedef void(GLAD_API_PTR *PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, - const GLuint *semaphoreArray, - const GLuint64 *fenceValueArray); -typedef GLenum(GLAD_API_PTR *PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, - GLuint64 timeout); -typedef void(GLAD_API_PTR *PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); -typedef void(GLAD_API_PTR *PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat *equation); -typedef void(GLAD_API_PTR *PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed *equation); -typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void(GLAD_API_PTR *PFNGLCOLOR3HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); -typedef void(GLAD_API_PTR *PFNGLCOLOR3XVOESPROC)(const GLfixed *components); -typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, - GLfloat a, GLfloat nx, GLfloat ny, - GLfloat nz, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, - GLhalfNV alpha); -typedef void(GLAD_API_PTR *PFNGLCOLOR4HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, - GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte *c, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, - GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte *c, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, - GLfixed alpha); -typedef void(GLAD_API_PTR *PFNGLCOLOR4XVOESPROC)(const GLfixed *components); -typedef void(GLAD_API_PTR *PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod); -typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, - GLuint arg2Rep, GLuint arg2Mod); -typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, - GLuint arg2Rep, GLuint arg2Mod, - GLuint arg3, GLuint arg3Rep, - GLuint arg3Mod); -typedef void(GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, - GLboolean alpha); -typedef void(GLAD_API_PTR *PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, - GLboolean b, GLboolean a); -typedef void(GLAD_API_PTR *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, - GLboolean a); -typedef void(GLAD_API_PTR *PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, - GLsizei count, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, - const void **pointer); -typedef void(GLAD_API_PTR *PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, - GLenum format, GLenum type, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, - const void *table); -typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLenum format, GLenum type, - const void *table); -typedef void(GLAD_API_PTR *PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, - GLenum input, GLenum mapping, - GLenum componentUsage); -typedef void(GLAD_API_PTR *PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, - GLenum cdOutput, GLenum sumOutput, - GLenum scale, GLenum bias, - GLboolean abDotProduct, - GLboolean cdDotProduct, GLboolean muxSum); -typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); -typedef void(GLAD_API_PTR *PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); -typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); -typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); -typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, - const GLchar *const *path, - const GLint *length); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)( - GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLint border, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)( - GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLint border, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( - GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLsizei width, GLenum format, - GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( - GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( - GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLint border, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLint border, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLint border, - GLsizei imageSize, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLint border, - GLsizei imageSize, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, - GLint border, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, - GLint border, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, - GLint xoffset, GLsizei width, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, - GLint xoffset, GLsizei width, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum internalformat, - GLsizei width, GLint border, - GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum internalformat, - GLsizei width, GLsizei height, - GLint border, GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)( - GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, - GLint xoffset, GLsizei width, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, - GLsizei width, GLenum format, - GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLsizei imageSize, - const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( - GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLsizei imageSize, const void *bits); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)( - GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( - GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, - const void *bits); -typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); -typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLenum format, - GLenum type, const void *image); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const void *image); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, - GLfloat params); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, - GLint params); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, - GLfixed param); -typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, - const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, - GLintptr readOffset, GLintptr writeOffset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, - GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, - GLint x, GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, - GLenum internalformat, GLint x, - GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, - GLenum internalformat, GLint x, - GLint y, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, - GLint srcLevel, GLint srcX, GLint srcY, - GLint srcZ, GLuint dstName, GLenum dstTarget, - GLint dstLevel, GLint dstX, GLint dstY, - GLint dstZ, GLsizei srcWidth, - GLsizei srcHeight, GLsizei srcDepth); -typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATANVPROC)( - GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, - GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, - GLsizei width, GLsizei height, GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLenum internalformat, - GLint x, GLint y, GLsizei width, - GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLenum internalformat, - GLint x, GLint y, GLsizei width, - GLsizei height, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, GLint x, - GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, - GLint x, GLint y, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, - GLintptr readOffset, - GLintptr writeOffset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, - GLenum internalformat, GLint x, GLint y, - GLsizei width, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, - GLenum internalformat, GLint x, GLint y, - GLsizei width, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, - GLenum internalformat, GLint x, GLint y, - GLsizei width, GLsizei height, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, - GLenum internalformat, GLint x, GLint y, - GLsizei width, GLsizei height, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, - GLint x, GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLint x, GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLint x, - GLint y, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLint x, - GLint y, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum internalformat, - GLint x, GLint y, GLsizei width, - GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum internalformat, - GLint x, GLint y, GLsizei width, - GLsizei height, GLint border); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, - GLint xoffset, GLint x, GLint y, - GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, GLint x, - GLint y, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, GLint x, - GLint y, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLint x, - GLint y, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, - const void *paths, GLuint pathBase, - GLenum coverMode, - GLenum transformType, - const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); -typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)( - GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, - GLenum transformType, const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); -typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); -typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint *lists); -typedef void(GLAD_API_PTR *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -typedef void(GLAD_API_PTR *PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint *memoryObjects); -typedef void(GLAD_API_PTR *PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint *queryHandle); -typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); -typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATEPROGRAMOBJECTARBPROC)(void); -typedef void(GLAD_API_PTR *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); -typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRESSFENCENVXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -typedef void(GLAD_API_PTR *PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); -typedef void(GLAD_API_PTR *PFNGLCREATESEMAPHORESNVPROC)(GLsizei n, GLuint *semaphores); -typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); -typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); -typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar *string); -typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, - const GLchar *const *strings); -typedef void(GLAD_API_PTR *PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint *states); -typedef GLsync(GLAD_API_PTR *PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context *context, - struct _cl_event *event, - GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); -typedef void(GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, - const void *userParam); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, - void *userParam); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, - const void *userParam); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, - GLenum severity, GLsizei count, - const GLuint *ids, GLboolean enabled); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, - GLenum severity, GLsizei count, - const GLuint *ids, GLboolean enabled); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, - GLsizei count, const GLuint *ids, - GLboolean enabled); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, - GLenum severity, GLsizei length, - const GLchar *buf); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, - GLuint id, GLsizei length, - const GLchar *buf); -typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, - GLenum severity, GLsizei length, - const GLchar *buf); -typedef void(GLAD_API_PTR *PFNGLDEFORMSGIXPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, - GLint ustride, GLint uorder, GLdouble v1, - GLdouble v2, GLint vstride, GLint vorder, - GLdouble w1, GLdouble w2, GLint wstride, - GLint worder, const GLdouble *points); -typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, - GLint ustride, GLint uorder, GLfloat v1, - GLfloat v2, GLint vstride, GLint vorder, - GLfloat w1, GLfloat w2, GLint wstride, - GLint worder, const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); -typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint *lists); -typedef void(GLAD_API_PTR *PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint *fences); -typedef void(GLAD_API_PTR *PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint *fences); -typedef void(GLAD_API_PTR *PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); -typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers); -typedef void(GLAD_API_PTR *PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint *memoryObjects); -typedef void(GLAD_API_PTR *PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, - const GLuint *names); -typedef void(GLAD_API_PTR *PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); -typedef void(GLAD_API_PTR *PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); -typedef void(GLAD_API_PTR *PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); -typedef void(GLAD_API_PTR *PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); -typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); -typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); -typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); -typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); -typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint *tagIds); -typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); -typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers); -typedef void(GLAD_API_PTR *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); -typedef void(GLAD_API_PTR *PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint *semaphores); -typedef void(GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); -typedef void(GLAD_API_PTR *PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint *states); -typedef void(GLAD_API_PTR *PFNGLDELETESYNCPROC)(GLsync sync); -typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); -typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint *arrays); -typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); -typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); -typedef void(GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); -typedef void(GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); -typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); -typedef void(GLAD_API_PTR *PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, - GLhandleARB attachedObj); -typedef void(GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); -typedef void(GLAD_API_PTR *PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, - const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); -typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISABLEIPROC)(GLenum target, GLuint index); -typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, - GLuint num_groups_z); -typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)( - GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, - GLuint group_size_y, GLuint group_size_z); -typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, - GLsizei instancecount); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, - GLsizei count, - GLsizei instancecount, - GLuint baseinstance); -typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERPROC)(GLenum buf); -typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); -typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum *bufs); -typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum *bufs); -typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, - const GLuint64 *indirects, - const GLsizei *sizes, GLuint count); -typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, - const GLintptr *indirects, const GLsizei *sizes, - GLuint count); -typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 *indirects, - const GLsizei *sizes, - const GLuint *states, - const GLuint *fbos, GLuint count); -typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr *indirects, - const GLsizei *sizes, - const GLuint *states, const GLuint *fbos, - GLuint count); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, - const void *indices); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, - const void *indices, GLint basevertex); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, - const void *indirect); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, - const void *indices, - GLsizei instancecount); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, - GLenum type, const void *indices, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, - GLenum type, - const void *indices, - GLsizei instancecount, - GLuint baseinstance); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, - GLenum type, - const void *indices, - GLsizei instancecount, - GLint basevertex); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)( - GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, - GLint basevertex, GLuint baseinstance); -typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, - GLenum type, const void *indices, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, - GLsizei width); -typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); -typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); -typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, - GLuint end, GLint first, - GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, - GLsizei count); -typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, - GLsizei count, GLenum type, - const void *indices); -typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, - GLuint end, GLsizei count, - GLenum type, const void *indices, - GLint basevertex); -typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, - GLsizei count, GLenum type, - const void *indices); -typedef void(GLAD_API_PTR *PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, - GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, - GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); -typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); -typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, - GLsizei instancecount); -typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); -typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, - GLuint stream); -typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, - GLuint stream, - GLsizei instancecount); -typedef void(GLAD_API_PTR *PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, - GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, - GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); -typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, - const GLint *attrib_list); -typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, - GLeglImageOES image, - const GLint *attrib_list); -typedef void(GLAD_API_PTR *PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, - const GLboolean *pointer); -typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean **pointer, - GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); -typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLENABLEIPROC)(GLenum target, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDFRAGMENTSHADERATIPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDOCCLUSIONQUERYNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); -typedef void(GLAD_API_PTR *PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); -typedef void(GLAD_API_PTR *PFNGLENDQUERYPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLENDQUERYARBPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); -typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDVERTEXSHADEREXTPROC)(void); -typedef void(GLAD_API_PTR *PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); -typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XOESPROC)(GLfixed u); -typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); -typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLEVALUATEDEPTHVALUESARBPROC)(void); -typedef void(GLAD_API_PTR *PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); -typedef void(GLAD_API_PTR *PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, - const GLfixed *buffer); -typedef GLsync(GLAD_API_PTR *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, - GLenum mapping, GLenum componentUsage); -typedef void(GLAD_API_PTR *PFNGLFINISHPROC)(void); -typedef GLint(GLAD_API_PTR *PFNGLFINISHASYNCSGIXPROC)(GLuint *markerp); -typedef void(GLAD_API_PTR *PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); -typedef void(GLAD_API_PTR *PFNGLFINISHFENCENVPROC)(GLuint fence); -typedef void(GLAD_API_PTR *PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); -typedef void(GLAD_API_PTR *PFNGLFINISHTEXTURESUNXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFLUSHPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, - GLsizeiptr length); -typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr length); -typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr length); -typedef void(GLAD_API_PTR *PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLFLUSHRASTERSGIXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); -typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDDEXTPROC)(GLdouble coord); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDDVEXTPROC)(const GLdouble *coord); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDFEXTPROC)(GLfloat coord); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDFVEXTPROC)(const GLfloat *coord); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); -typedef void(GLAD_API_PTR *PFNGLFOGCOORDHVNVPROC)(const GLhalfNV *fog); -typedef void(GLAD_API_PTR *PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed *param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, - GLfloat param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLFRAMETERMINATORGREMEDYPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFRAMEZOOMSGIXPROC)(GLint factor); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, - const GLenum *bufs); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, - GLenum renderbuffertarget, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, - GLenum renderbuffertarget, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, - GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, - GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, - GLuint numsamples, - GLuint pixelindex, - const GLfloat *values); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level, GLint zoffset); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level, GLint zoffset); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level, - GLenum face); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level, - GLenum face); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level, - GLint layer); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level, - GLint layer); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, - GLuint texture, GLint level, - GLint layer); -typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, - GLenum attachment, - GLuint texture, GLint level, - GLint baseViewIndex, - GLsizei numViews); -typedef void(GLAD_API_PTR *PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, - GLfloat n, GLfloat f); -typedef void(GLAD_API_PTR *PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, - GLfixed n, GLfixed f); -typedef GLuint(GLAD_API_PTR *PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); -typedef void(GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint *buffers); -typedef void(GLAD_API_PTR *PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint *fences); -typedef void(GLAD_API_PTR *PFNGLGENFENCESNVPROC)(GLsizei n, GLuint *fences); -typedef GLuint(GLAD_API_PTR *PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); -typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers); -typedef void(GLAD_API_PTR *PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint *names); -typedef void(GLAD_API_PTR *PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint *ids); -typedef GLuint(GLAD_API_PTR *PFNGLGENPATHSNVPROC)(GLsizei range); -typedef void(GLAD_API_PTR *PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); -typedef void(GLAD_API_PTR *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); -typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); -typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint *programs); -typedef void(GLAD_API_PTR *PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint *tagIds); -typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers); -typedef void(GLAD_API_PTR *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); -typedef void(GLAD_API_PTR *PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint *semaphores); -typedef GLuint(GLAD_API_PTR *PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, - GLenum range, GLuint components); -typedef void(GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint *textures); -typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint *ids); -typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); -typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint *arrays); -typedef GLuint(GLAD_API_PTR *PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); -typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); -typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); -typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, - GLuint bufferIndex, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, - GLsizei *length, GLint *size, GLenum *type, - GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, - GLsizei maxLength, GLsizei *length, - GLint *size, GLenum *type, GLcharARB *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, - GLuint index, GLsizei bufSize, - GLsizei *length, GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, - GLenum shadertype, GLuint index, - GLsizei bufSize, - GLsizei *length, GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, - GLuint index, GLenum pname, - GLint *values); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, - GLsizei *length, GLint *size, GLenum *type, - GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, - GLsizei maxLength, GLsizei *length, - GLint *size, GLenum *type, - GLcharARB *name); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, - GLuint uniformBlockIndex, - GLsizei bufSize, GLsizei *length, - GLchar *uniformBlockName); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, - GLuint uniformBlockIndex, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, - GLsizei bufSize, GLsizei *length, - GLchar *uniformName); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, - const GLuint *uniformIndices, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, - GLsizei bufSize, GLsizei *length, - GLsizei *size, GLenum *type, GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, - GLsizei maxCount, GLsizei *count, - GLhandleARB *obj); -typedef void(GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, - GLsizei *count, GLuint *shaders); -typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, - const GLcharARB *name); -typedef void(GLAD_API_PTR *PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, - GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, - GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, - void **params); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, - GLsizeiptr size, void *data); -typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, - GLsizeiptrARB size, void *data); -typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat *equation); -typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed *equation); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, - void *data); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, - void *table); -typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, - GLenum variable, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, - GLenum variable, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, - GLfloat *params); -typedef GLuint(GLAD_API_PTR *PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, - GLint lod, void *img); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, - void *img); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, - GLsizei bufSize, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, - GLint lod, void *img); -typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLsizei bufSize, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, - GLenum type, void *image); -typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, - GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat *v); -typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, - GLenum *sources, GLenum *types, - GLuint *ids, GLenum *severities, - GLsizei *lengths, GLchar *messageLog); -typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufSize, - GLenum *categories, GLenum *severities, - GLuint *ids, GLsizei *lengths, - GLchar *message); -typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, - GLenum *sources, GLenum *types, - GLuint *ids, GLenum *severities, - GLsizei *lengths, GLchar *messageLog); -typedef void(GLAD_API_PTR *PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, - GLdouble *data); -typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); -typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); -typedef GLenum(GLAD_API_PTR *PFNGLGETERRORPROC)(void); -typedef void(GLAD_API_PTR *PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, - GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint *queryId); -typedef void(GLAD_API_PTR *PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, - GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETFOGFUNCSGISPROC)(GLfloat *points); -typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, - GLenum attachment, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, - GLenum attachment, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, - GLuint numsamples, - GLuint pixelindex, GLsizei size, - GLfloat *values); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, - GLint *params); -typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSPROC)(void); -typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); -typedef GLhandleARB(GLAD_API_PTR *PFNGLGETHANDLEARBPROC)(GLenum pname); -typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, - GLenum type, void *values); -typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, - GLfixed *params); -typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, - GLboolean layered, GLint layer, - GLenum format); -typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, - GLboolean layered, GLint layer, - GLenum format); -typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, - GLsizei *length, GLcharARB *infoLog); -typedef GLint(GLAD_API_PTR *PFNGLGETINSTRUMENTSSGIXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); -typedef void(GLAD_API_PTR *PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); -typedef void(GLAD_API_PTR *PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, - GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, - GLuint64EXT *result); -typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT *result); -typedef void(GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, - GLenum internalformat, - GLsizei samples, GLenum pname, - GLsizei count, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, - GLenum pname, GLsizei count, - GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, - GLenum pname, GLsizei count, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, - GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, - GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, - GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, - GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, - GLsizei ustride, GLsizei vstride, - GLboolean packed, void *points); -typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed *v); -typedef void(GLAD_API_PTR *PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)( - GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, - GLenum type, void *values); -typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, - GLenum format, GLenum type, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); -typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat *val); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, - GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, - void **params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, - void **params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, void *data); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, void *data); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, - GLenum attachment, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, - GLenum attachment, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)( - GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, - GLfloat *values); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, - GLenum pname, GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, - GLenum target, - GLuint index, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, - GLenum target, - GLuint index, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, - GLenum target, GLuint index, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, - GLenum target, GLuint index, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, - GLenum pname, void *string); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, - GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name, - GLsizei bufSize, GLint *stringlen, - GLchar *string); -typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar *name, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint *nextQueryId); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, - GLsizei *length, GLchar *label); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, - GLsizei *length, GLchar *label); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, - GLsizei *length, GLchar *label); -typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte *commands); -typedef void(GLAD_API_PTR *PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat *dashArray); -typedef GLfloat(GLAD_API_PTR *PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, - GLsizei numSegments); -typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, - GLuint firstPathName, GLsizei numPaths, - GLsizei stride, GLfloat *metrics); -typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, - GLenum pathNameType, const void *paths, - GLuint pathBase, GLsizei stride, - GLfloat *metrics); -typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, - GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint *value); -typedef void(GLAD_API_PTR *PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, - GLenum pathNameType, const void *paths, - GLuint pathBase, GLfloat advanceScale, - GLfloat kerningScale, GLenum transformType, - GLfloat *returnedSpacing); -typedef void(GLAD_API_PTR *PFNGLGETPERFCOUNTERINFOINTELPROC)( - GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, - GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, - GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, - GLuint64 *rawCounterMaxValue); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, - GLsizei dataSize, GLuint *data, - GLint *bytesWritten); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, - GLenum pname, void *data); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, - GLsizei bufSize, - GLsizei *length, - GLchar *counterString); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint *numCounters, - GLint *maxActiveCounters, - GLsizei counterSize, - GLuint *counters); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, - GLsizei *length, - GLchar *groupString); -typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint *numGroups, GLsizei groupsSize, - GLuint *groups); -typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, - GLsizei dataSize, void *data, - GLuint *bytesWritten); -typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar *queryName, GLuint *queryId); -typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, - GLchar *queryName, GLuint *dataSize, - GLuint *noCounters, GLuint *noInstances, - GLuint *capsMask); -typedef void(GLAD_API_PTR *PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed *values); -typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, - void **data); -typedef void(GLAD_API_PTR *PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void **params); -typedef void(GLAD_API_PTR *PFNGLGETPOINTERVPROC)(GLenum pname, void **params); -typedef void(GLAD_API_PTR *PFNGLGETPOINTERVEXTPROC)(GLenum pname, void **params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, - GLsizei *length, GLenum *binaryFormat, - void *binary); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, - GLsizei *length, GLchar *infoLog); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, - GLenum pname, GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, - GLsizei *length, GLchar *infoLog); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, - GLint *params); -typedef GLuint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, - GLenum programInterface, - const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, - GLenum programInterface, - const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, - GLenum programInterface, - const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, - GLuint index, GLsizei bufSize, - GLsizei *length, GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, - GLuint index, GLsizei propCount, - const GLenum *props, GLsizei count, - GLsizei *length, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, - GLuint index, GLsizei propCount, - const GLenum *props, GLsizei count, - GLsizei *length, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, - GLenum pname, GLint *values); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void *string); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte *program); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, - GLuint *param); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, - GLenum pname, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, - GLenum pname, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, - GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, - GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, - GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, - GLenum type, void *row, void *column, - void *span); -typedef void(GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, - GLsizei *length, GLchar *infoLog); -typedef void(GLAD_API_PTR *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, - GLenum precisiontype, GLint *range, - GLint *precision); -typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, - GLsizei *length, GLchar *source); -typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, - GLsizei *length, GLcharARB *source); -typedef void(GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, - GLenum *rate); -typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, - GLuint index, - GLint *location); -typedef void(GLAD_API_PTR *PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat *points); -typedef GLushort(GLAD_API_PTR *PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); -typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); -typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); -typedef GLuint(GLAD_API_PTR *PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, - const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, - GLenum shadertype, - const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, - GLsizei *length, GLint *values); -typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat *param); -typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, - GLfloat *weights); -typedef void(GLAD_API_PTR *PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, - GLenum type, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, - GLenum pname, GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, - void **params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, - GLfixed *params); -typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); -typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, - GLenum type, GLsizei bufSize, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, - GLenum format, GLenum type, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, - GLint level, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLint *params); -typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); -typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); -typedef void(GLAD_API_PTR *PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLenum format, GLenum type, GLsizei bufSize, - void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, - GLsizei bufSize, GLsizei *length, - GLsizei *size, GLenum *type, - GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, - GLsizei bufSize, - GLsizei *length, GLsizei *size, - GLenum *type, GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, - GLint *location); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, - GLuint index, GLint64 *param); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, - GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); -typedef GLuint(GLAD_API_PTR *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, - const GLchar *uniformBlockName); -typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, - const GLchar *const *uniformNames, - GLuint *uniformIndices); -typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); -typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, - const GLcharARB *name); -typedef GLintptr(GLAD_API_PTR *PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, - GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, - GLint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, - GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, - GLubyte *data); -typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte *data); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, - GLboolean *data); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); -typedef void(GLAD_API_PTR *PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void **data); -typedef GLint(GLAD_API_PTR *PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, - GLenum pname, GLint64 *param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, - GLenum pname, GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, - GLenum pname, GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, - GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, - GLenum pname, void **param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, - void **param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, - GLint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, - void **pointer); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, - void **pointer); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, - void **pointer); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, - GLint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, - GLuint64EXT *params); -typedef void(GLAD_API_PTR *PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint *params); -typedef GLVULKANPROCNV(GLAD_API_PTR *PFNGLGETVKPROCADDRNVPROC)(const GLchar *name); -typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, - GLsizei bufSize, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, - GLsizei bufSize, void *img); -typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, - GLenum type, GLsizei bufSize, void *pixels); -typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, - GLenum type, GLsizei bufSize, void *img); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, - GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, - GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, - GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLint *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, - GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, - GLsizei bufSize, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); -typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); -typedef void(GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLHINTPGIPROC)(GLenum target, GLint mode); -typedef void(GLAD_API_PTR *PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, - GLenum internalformat, GLboolean sink); -typedef void(GLAD_API_PTR *PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void *params); -typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, - GLfloat param); -typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, - GLenum handleType, GLint fd); -typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, - GLenum handleType, void *handle); -typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, - GLenum handleType, const void *name); -typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, - GLint fd); -typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, - GLenum handleType, void *handle); -typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, - GLenum handleType, - const void *name); -typedef GLsync(GLAD_API_PTR *PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, - GLintptr external_sync, GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); -typedef void(GLAD_API_PTR *PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLINDEXXOESPROC)(GLfixed component); -typedef void(GLAD_API_PTR *PFNGLINDEXXVOESPROC)(const GLfixed *component); -typedef void(GLAD_API_PTR *PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); -typedef void(GLAD_API_PTR *PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker); -typedef void(GLAD_API_PTR *PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint *buffer); -typedef void(GLAD_API_PTR *PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, - GLuint pathB, GLfloat weight); -typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr length); -typedef void(GLAD_API_PTR *PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, - const GLenum *attachments); -typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, - GLsizei numAttachments, - const GLenum *attachments); -typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)( - GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, - const GLenum *attachments, GLint x, - GLint y, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth); -typedef GLboolean(GLAD_API_PTR *PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); -typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERARBPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); -typedef GLboolean(GLAD_API_PTR *PFNGLISCOMMANDLISTNVPROC)(GLuint list); -typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); -typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); -typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDIPROC)(GLenum target, GLuint index); -typedef GLboolean(GLAD_API_PTR *PFNGLISFENCEAPPLEPROC)(GLuint fence); -typedef GLboolean(GLAD_API_PTR *PFNGLISFENCENVPROC)(GLuint fence); -typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); -typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); -typedef GLboolean(GLAD_API_PTR *PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); -typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); -typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); -typedef GLboolean(GLAD_API_PTR *PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISPATHNVPROC)(GLuint path); -typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, - GLfloat y); -typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); -typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); -typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMARBPROC)(GLuint program); -typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMNVPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); -typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYARBPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); -typedef GLboolean(GLAD_API_PTR *PFNGLISSAMPLERPROC)(GLuint sampler); -typedef GLboolean(GLAD_API_PTR *PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); -typedef GLboolean(GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); -typedef GLboolean(GLAD_API_PTR *PFNGLISSTATENVPROC)(GLuint state); -typedef GLboolean(GLAD_API_PTR *PFNGLISSYNCPROC)(GLsync sync); -typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); -typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREEXTPROC)(GLuint texture); -typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); -typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); -typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); -typedef GLboolean(GLAD_API_PTR *PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); -typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYPROC)(GLuint array); -typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); -typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); -typedef void(GLAD_API_PTR *PFNGLLGPUCOPYIMAGESUBDATANVXPROC)( - GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, - GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, - GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, - GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLLGPUINTERLOCKNVXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, - GLintptr offset, GLsizeiptr size, - const void *data); -typedef void(GLAD_API_PTR *PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, - const GLchar *label); -typedef void(GLAD_API_PTR *PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed *param); -typedef void(GLAD_API_PTR *PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); -typedef void(GLAD_API_PTR *PFNGLLINEWIDTHXOESPROC)(GLfixed width); -typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); -typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); -typedef void(GLAD_API_PTR *PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)( - GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, - const GLuint *states, const GLuint *fbos, GLuint count); -typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLLOADMATRIXXOESPROC)(const GLfixed *m); -typedef void(GLAD_API_PTR *PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, - const GLubyte *program); -typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); -typedef void(GLAD_API_PTR *PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); -typedef void(GLAD_API_PTR *PFNGLLOGICOPPROC)(GLenum opcode); -typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); -typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); -typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); -typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); -typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); -typedef void(GLAD_API_PTR *PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, - GLint order, GLfixed points); -typedef void(GLAD_API_PTR *PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, - GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, - GLint vorder, GLfixed points); -typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); -typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); -typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, - GLsizeiptr length, GLbitfield access); -typedef void(GLAD_API_PTR *PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, - GLsizei ustride, GLsizei vstride, - GLint uorder, GLint vorder, - GLboolean packed, const void *points); -typedef void(GLAD_API_PTR *PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); -typedef void(GLAD_API_PTR *PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, - GLfixed v2); -typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); -typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); -typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr length, GLbitfield access); -typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr length, GLbitfield access); -typedef void *(GLAD_API_PTR *PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void *(GLAD_API_PTR *PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, - GLbitfield access, GLint *stride, - GLenum *layout); -typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, - GLdouble u2, GLint stride, GLint order, - const GLdouble *points); -typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, - GLfloat u2, GLint stride, GLint order, - const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, - GLdouble u2, GLint ustride, - GLint uorder, GLdouble v1, GLdouble v2, - GLint vstride, GLint vorder, - const GLdouble *points); -typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, - GLfloat u2, GLint ustride, GLint uorder, - GLfloat v1, GLfloat v2, GLint vstride, - GLint vorder, const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed *param); -typedef void(GLAD_API_PTR *PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, GLdouble zNear, - GLdouble zFar); -typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte *indices); -typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint *indices); -typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort *indices); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, GLdouble zNear, - GLdouble zFar); -typedef void(GLAD_API_PTR *PFNGLMATRIXPOPEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLMATRIXPUSHEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, - GLdouble y, GLdouble z); -typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); -typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); -typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); -typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); -typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); -typedef void(GLAD_API_PTR *PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGPROC)(GLfloat value); -typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); -typedef void(GLAD_API_PTR *PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, - GLboolean sink); -typedef void(GLAD_API_PTR *PFNGLMULTMATRIXXOESPROC)(const GLfixed *m); -typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); -typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); -typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, - const GLsizei *count, GLsizei drawcount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint *first, - const GLsizei *count, GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, - GLsizei drawcount, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void *indirect, - GLsizei primcount, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)( - GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, - GLint vertexBufferCount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, - const void *indirect, - GLsizei drawCount, - GLsizei stride, - GLint vertexBufferCount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void *indirect, - GLintptr drawcount, - GLsizei maxdrawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, - const void *indirect, - GLintptr drawcount, - GLsizei maxdrawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint *first, - const GLsizei *count, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, - GLenum type, const void *const *indices, - GLsizei drawcount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, - GLenum type, - const void *const *indices, - GLsizei drawcount, - const GLint *basevertex); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei *count, - GLenum type, const void *const *indices, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, - const void *indirect, - GLsizei drawcount, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, - const void *indirect, - GLsizei primcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)( - GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, - GLsizei stride, GLint vertexBufferCount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, - const void *indirect, - GLsizei drawCount, - GLsizei stride, - GLint vertexBufferCount); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, - const void *indirect, - GLintptr drawcount, - GLsizei maxdrawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, - const void *indirect, - GLintptr drawcount, - GLsizei maxdrawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, - GLintptr drawcount, - GLsizei maxdrawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, - GLsizei drawcount, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, - GLuint end, const GLint *first, - const GLsizei *count, - GLsizei primcount); -typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum *mode, const GLint *first, - const GLsizei *count, GLsizei primcount, - GLint modestride); -typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum *mode, - const GLsizei *count, GLenum type, - const void *const *indices, - GLsizei primcount, GLint modestride); -typedef void(GLAD_API_PTR *PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, - GLenum internalformat, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, - GLbyte r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, - GLdouble r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, - GLfloat r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, - GLhalfNV r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, - GLshort r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, - GLfixed r); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, - GLbyte r, GLbyte q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, - GLdouble r, GLdouble q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, - GLfloat r, GLfloat q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, - GLhalfNV r, GLhalfNV q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, - GLint q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, - GLshort r, GLshort q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, - GLfixed r, GLfixed q); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, - GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, - GLfloat param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLdouble param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - const GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLfloat param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLint border, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLsizei height, GLint border, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, - GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLsizei width, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLsizei width, - GLsizei height, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, - GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, - GLsizei depth, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLMULTICASTBARRIERNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)( - GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef void(GLAD_API_PTR *PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, - GLintptr offset, GLsizeiptr size, - const void *data); -typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)( - GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, - GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)( - GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, - GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, - GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -typedef void(GLAD_API_PTR *PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( - GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, - GLenum pname, GLint64 *params); -typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, - GLenum pname, GLint *params); -typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, - GLenum pname, GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, - GLenum pname, GLuint *params); -typedef void(GLAD_API_PTR *PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, - GLsizei count, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, - GLsizei count, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, - GLfloat xcoeff, - GLfloat ycoeff); -typedef void(GLAD_API_PTR *PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, - const void *data, GLenum usage); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, - const void *data, GLenum usage); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, GLuint memory, - GLuint64 memOffset, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, - const void *data, GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, - const void *data, GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)( - GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, - GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, const void *data); -typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, - GLsizeiptr size, const void *data); -typedef void(GLAD_API_PTR *PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, - GLuint writeBuffer, - GLintptr readOffset, - GLintptr writeOffset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, - const GLenum *bufs); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, - GLenum attachment, - GLenum renderbuffertarget, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, - GLenum attachment, - GLenum renderbuffertarget, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, - GLuint start, - GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, - GLuint start, - GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, - GLuint numsamples, - GLuint pixelindex, - const GLfloat *values); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, - GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, - GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, - GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, - GLenum attachment, - GLenum textarget, GLuint texture, - GLint level, GLint zoffset); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, - GLenum attachment, GLuint texture, - GLint level); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, - GLenum attachment, - GLuint texture, GLint level, - GLenum face); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, - GLenum attachment, GLuint texture, - GLint level, GLint layer); -typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, - GLenum attachment, - GLuint texture, GLint level, - GLint layer); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, - GLuint index, GLdouble x, - GLdouble y, GLdouble z, - GLdouble w); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, - GLuint index, - const GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, - GLuint index, GLfloat x, - GLfloat y, GLfloat z, - GLfloat w); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, - GLuint index, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, - GLuint index, GLint x, - GLint y, GLint z, GLint w); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, - GLenum target, GLuint index, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, - GLenum target, GLuint index, - GLuint x, GLuint y, GLuint z, - GLuint w); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, - GLenum target, GLuint index, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, - GLenum target, GLuint index, - GLsizei count, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, - GLenum target, GLuint index, - GLsizei count, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)( - GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, - GLenum format, GLsizei len, - const void *string); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, - GLenum internalformat, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, - GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)( - GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( - GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( - GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( - GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar *name, - GLint stringlen, const GLchar *string); -typedef GLuint(GLAD_API_PTR *PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void *pointer, - GLenum usage); -typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, - GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *n, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); -typedef void(GLAD_API_PTR *PFNGLNORMAL3HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); -typedef void(GLAD_API_PTR *PFNGLNORMAL3XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void **pointer); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, - GLbyte nz); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, - GLdouble nz); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, - GLfloat nz); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, - GLshort nz); -typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); -typedef void(GLAD_API_PTR *PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, - const GLchar *label); -typedef void(GLAD_API_PTR *PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, - const GLchar *label); -typedef GLenum(GLAD_API_PTR *PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, - GLenum option); -typedef GLenum(GLAD_API_PTR *PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, - GLenum option); -typedef void(GLAD_API_PTR *PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, - GLfloat n, GLfloat f); -typedef void(GLAD_API_PTR *PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, - GLfixed n, GLfixed f); -typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); -typedef void(GLAD_API_PTR *PFNGLPASSTHROUGHXOESPROC)(GLfixed token); -typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); -typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); -typedef void(GLAD_API_PTR *PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, - const GLubyte *commands, GLsizei numCoords, - GLenum coordType, const void *coords); -typedef void(GLAD_API_PTR *PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, - const void *coords); -typedef void(GLAD_API_PTR *PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); -typedef void(GLAD_API_PTR *PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, - const GLfloat *dashArray); -typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXARRAYNVPROC)( - GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, - GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); -typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, - const void *fontName, - GLbitfield fontStyle, - GLuint pathParameterTemplate, - GLfloat emScale, GLuint *baseAndCount); -typedef void(GLAD_API_PTR *PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, - const void *fontName, GLbitfield fontStyle, - GLuint firstGlyph, GLsizei numGlyphs, - GLenum handleMissingGlyphs, - GLuint pathParameterTemplate, - GLfloat emScale); -typedef void(GLAD_API_PTR *PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, - const void *fontName, GLbitfield fontStyle, - GLsizei numGlyphs, GLenum type, - const void *charcodes, GLenum handleMissingGlyphs, - GLuint pathParameterTemplate, GLfloat emScale); -typedef GLenum(GLAD_API_PTR *PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)( - GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, - GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, - GLfloat emScale); -typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); -typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); -typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); -typedef void(GLAD_API_PTR *PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, - const void *pathString); -typedef void(GLAD_API_PTR *PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, - GLsizei commandsToDelete, - GLsizei numCommands, const GLubyte *commands, - GLsizei numCoords, GLenum coordType, - const void *coords); -typedef void(GLAD_API_PTR *PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, - GLsizei numCoords, GLenum coordType, - const void *coords); -typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); -typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed *values); -typedef void(GLAD_API_PTR *PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, - GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); -typedef GLboolean(GLAD_API_PTR *PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, - GLsizei numSegments, GLfloat distance, - GLfloat *x, GLfloat *y, - GLfloat *tangentX, GLfloat *tangentY); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLPOINTSIZEPROC)(GLfloat size); -typedef void(GLAD_API_PTR *PFNGLPOINTSIZEXOESPROC)(GLfixed size); -typedef GLint(GLAD_API_PTR *PFNGLPOLLASYNCSGIXPROC)(GLuint *markerp); -typedef GLint(GLAD_API_PTR *PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint *marker_p); -typedef void(GLAD_API_PTR *PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); -typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, - GLfloat clamp); -typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, - GLfloat clamp); -typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); -typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); -typedef void(GLAD_API_PTR *PFNGLPOPDEBUGGROUPPROC)(void); -typedef void(GLAD_API_PTR *PFNGLPOPGROUPMARKEREXTPROC)(void); -typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEDUALFILLNVPROC)( - GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, - GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, - GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, - GLuint64EXT minPresentTime, - GLuint beginPresentTimeId, - GLuint presentDurationId, GLenum type, - GLenum target0, GLuint fill0, GLuint key0, - GLenum target1, GLuint fill1, GLuint key1); -typedef void(GLAD_API_PTR *PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, - GLfloat minZ, GLfloat minW, - GLfloat maxX, GLfloat maxY, - GLfloat maxZ, GLfloat maxW); -typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); -typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint *textures, - const GLclampf *priorities); -typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint *textures, - const GLfixed *priorities); -typedef void(GLAD_API_PTR *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, - const void *binary, GLsizei length); -typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, - GLuint bindingIndex, - GLuint wordIndex, GLsizei count, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, - GLuint bindingIndex, - GLuint wordIndex, GLsizei count, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, - GLuint wordIndex, GLsizei count, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, - GLdouble x, GLdouble y, GLdouble z, - GLdouble w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, - const GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, - GLfloat x, GLfloat y, GLfloat z, - GLfloat w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, - GLint y, GLint z, GLint w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, - GLuint x, GLuint y, GLuint z, - GLuint w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, - GLsizei count, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, - GLsizei count, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, - GLsizei count, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, - GLdouble x, GLdouble y, GLdouble z, - GLdouble w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, - const GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, - GLfloat x, GLfloat y, GLfloat z, - GLfloat w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, - GLint x, GLint y, GLint z, GLint w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, - GLuint x, GLuint y, GLuint z, - GLuint w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, - GLsizei count, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, - GLsizei count, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, - GLsizei count, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, GLdouble x, - GLdouble y, GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, GLfloat x, - GLfloat y, GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, - const GLubyte *name, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, - GLdouble y, GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, - GLfloat y, GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, - GLint value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, - GLint value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, - GLsizei count, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, - GLsizei count, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, - GLenum genMode, GLint components, - const GLfloat *coeffs); -typedef void(GLAD_API_PTR *PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, - const void *string); -typedef void(GLAD_API_PTR *PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, - GLdouble x); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, - GLfloat v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, - GLint64 x); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, - GLint64EXT x); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, - GLsizei count, const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, - GLuint64 x); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, - GLuint64EXT x); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, - GLuint v0); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, - GLdouble v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, - GLdouble y); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, - GLint v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, - GLint64 x, GLint64 y); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, - GLint64EXT x, GLint64EXT y); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, - GLsizei count, const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, - GLint v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, - GLuint64 x, GLuint64 y); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, - GLuint64EXT x, GLuint64EXT y); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, - GLdouble v1, GLdouble v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, - GLdouble y, GLdouble z); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1, GLfloat v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1, GLfloat v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, - GLint v1, GLint v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, - GLint64 x, GLint64 y, GLint64 z); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, - GLint64EXT x, GLint64EXT y, GLint64EXT z); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, - GLsizei count, const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, - GLint v1, GLint v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1, GLuint v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, - GLuint64 x, GLuint64 y, GLuint64 z); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, - GLuint64EXT x, GLuint64EXT y, - GLuint64EXT z); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1, GLuint v2); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, - GLdouble v1, GLdouble v2, GLdouble v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, - GLdouble y, GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1, GLfloat v2, GLfloat v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, - GLfloat v1, GLfloat v2, GLfloat v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, - GLint v1, GLint v2, GLint v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, - GLint64 x, GLint64 y, GLint64 z, - GLint64 w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, - GLint64EXT x, GLint64EXT y, GLint64EXT z, - GLint64EXT w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, - GLsizei count, const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, - GLint v1, GLint v2, GLint v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1, GLuint v2, GLuint v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, - GLuint64 x, GLuint64 y, GLuint64 z, - GLuint64 w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, - GLuint64EXT x, GLuint64EXT y, - GLuint64EXT z, GLuint64EXT w); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, - GLsizei count, const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, - GLuint v1, GLuint v2, GLuint v3); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, - GLsizei count, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, - GLuint64 value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, - GLuint64 value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64 *values); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, - GLsizei count, - const GLuint64 *values); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, - GLsizei count, GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, - GLsizei count, - GLboolean transpose, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, - GLuint64EXT value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, - GLsizei count, const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); -typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, - const GLchar *message); -typedef void(GLAD_API_PTR *PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker); -typedef void(GLAD_API_PTR *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); -typedef GLbitfield(GLAD_API_PTR *PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa, GLint *exponent); -typedef void(GLAD_API_PTR *PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, - GLenum pname, GLuint param); -typedef GLint(GLAD_API_PTR *PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, - GLint *buffer); -typedef void(GLAD_API_PTR *PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar *tagString); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); -typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLREADBUFFERPROC)(GLenum src); -typedef void(GLAD_API_PTR *PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); -typedef void(GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, void *pixels); -typedef void(GLAD_API_PTR *PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLsizei bufSize, - void *data); -typedef void(GLAD_API_PTR *PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLsizei bufSize, - void *data); -typedef void(GLAD_API_PTR *PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); -typedef void(GLAD_API_PTR *PFNGLRECTXVOESPROC)(const GLfixed *v1, const GLfixed *v2); -typedef void(GLAD_API_PTR *PFNGLREFERENCEPLANESGIXPROC)(const GLdouble *equation); -typedef GLboolean(GLAD_API_PTR *PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); -typedef void(GLAD_API_PTR *PFNGLRELEASESHADERCOMPILERPROC)(void); -typedef void(GLAD_API_PTR *PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, - GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( - GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( - GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( - GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, - const void **pointer); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte *code); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, - GLfloat g, GLfloat b, - GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint *rc, - const GLfloat *c, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)( - GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, - GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, - const GLfloat *c, - const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, - GLubyte g, GLubyte b, - GLubyte a, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint *rc, - const GLubyte *c, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, - GLfloat ny, GLfloat nz, - GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, - const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( - GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, - GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( - const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( - GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)( - const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, - GLfloat t, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint *rc, - const GLfloat *tc, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint *rc, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint *code); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); -typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort *code); -typedef void(GLAD_API_PTR *PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); -typedef void(GLAD_API_PTR *PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); -typedef void(GLAD_API_PTR *PFNGLRESETMINMAXEXTPROC)(GLenum target); -typedef void(GLAD_API_PTR *PFNGLRESIZEBUFFERSMESAPROC)(void); -typedef void(GLAD_API_PTR *PFNGLRESOLVEDEPTHVALUESNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); -typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); -typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); -typedef void(GLAD_API_PTR *PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); -typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); -typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); -typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); -typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, - const GLint *param); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, - const GLuint *param); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, - const GLfloat *param); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, - const GLint *param); -typedef void(GLAD_API_PTR *PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); -typedef void(GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, - const GLint *v); -typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, - GLdouble blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, - GLhalfNV blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, - GLushort blue); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, - GLint stride, - const void **pointer, - GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, - GLuint group, GLint numCounters, - GLuint *counterList); -typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, - const GLuint64 *params); -typedef void(GLAD_API_PTR *PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const void *row, const void *column); -typedef void(GLAD_API_PTR *PFNGLSETFENCEAPPLEPROC)(GLuint fence); -typedef void(GLAD_API_PTR *PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); -typedef void(GLAD_API_PTR *PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void *addr); -typedef void(GLAD_API_PTR *PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void *addr); -typedef void(GLAD_API_PTR *PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, - const GLfloat *val); -typedef void(GLAD_API_PTR *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, - GLenum binaryFormat, const void *binary, - GLsizei length); -typedef void(GLAD_API_PTR *PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); -typedef void(GLAD_API_PTR *PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void(GLAD_API_PTR *PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, - GLuint arg3); -typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, - const GLchar *const *string, const GLint *length); -typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, - const GLcharARB **string, const GLint *length); -typedef void(GLAD_API_PTR *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, - GLuint storageBlockIndex, - GLuint storageBlockBinding); -typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); -typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, - GLsizei count, const GLenum *rates); -typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, - const GLint *locations); -typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); -typedef void(GLAD_API_PTR *PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, - const GLfloat *points); -typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, - const GLuint *buffers, - GLuint numTextureBarriers, - const GLuint *textures, - const GLenum *dstLayouts); -typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, - GLsizei fenceObjectCount, - const GLuint *semaphoreArray, - const GLuint64 *fenceValueArray); -typedef void(GLAD_API_PTR *PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); -typedef void(GLAD_API_PTR *PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); -typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar *pEntryPoint, - GLuint numSpecializationConstants, - const GLuint *pConstantIndex, - const GLuint *pConstantValue); -typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar *pEntryPoint, - GLuint numSpecializationConstants, - const GLuint *pConstantIndex, - const GLuint *pConstantValue); -typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLSTARTINSTRUMENTSSGIXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, - GLuint stencilClearTag); -typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHINSTANCEDNVPROC)( - GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, - GLuint mask, GLenum transformType, const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, - GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, - GLint ref, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); -typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, - GLenum dppass); -typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, - GLenum dppass); -typedef void(GLAD_API_PTR *PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); -typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)( - GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, - GLuint mask, GLenum transformType, const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); -typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)( - GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, - GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, - GLuint mask, GLenum coverMode); -typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)( - GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, - GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, - GLuint mask, GLenum coverMode); -typedef void(GLAD_API_PTR *PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); -typedef void(GLAD_API_PTR *PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void *string); -typedef void(GLAD_API_PTR *PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); -typedef void(GLAD_API_PTR *PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, - GLenum outZ, GLenum outW); -typedef void(GLAD_API_PTR *PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); -typedef void(GLAD_API_PTR *PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); -typedef void(GLAD_API_PTR *PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); -typedef void(GLAD_API_PTR *PFNGLTANGENT3BVEXTPROC)(const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); -typedef void(GLAD_API_PTR *PFNGLTANGENT3DVEXTPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); -typedef void(GLAD_API_PTR *PFNGLTANGENT3FVEXTPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); -typedef void(GLAD_API_PTR *PFNGLTANGENT3IVEXTPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); -typedef void(GLAD_API_PTR *PFNGLTANGENT3SVEXTPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); -typedef void(GLAD_API_PTR *PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); -typedef void(GLAD_API_PTR *PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); -typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCEAPPLEPROC)(GLuint fence); -typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCENVPROC)(GLuint fence); -typedef GLboolean(GLAD_API_PTR *PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); -typedef void(GLAD_API_PTR *PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, - GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, - GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, - GLuint buffer, GLintptr offset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat *param); -typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint *param); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BOESPROC)(GLbyte s); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XOESPROC)(GLfixed s); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, - GLfloat g, GLfloat b, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *tc, - const GLfloat *c, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( - GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, - GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, - const GLfloat *c, - const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, - GLubyte g, GLubyte b, GLubyte a, - GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat *tc, - const GLubyte *c, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, - GLfloat ny, GLfloat nz, - GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, - const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, - GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)( - GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, - GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat *tc, - const GLfloat *c, - const GLfloat *n, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, - GLfloat q, GLfloat x, GLfloat y, - GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, - GLsizei count, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, - const void **pointer); -typedef void(GLAD_API_PTR *PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, - const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, - const GLfloat *weights); -typedef void(GLAD_API_PTR *PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, - GLsizei width, GLint border, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, - GLsizei width, GLsizei height, GLint border, - GLenum format, GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, - GLenum internalformat, GLsizei width, - GLsizei height, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)( - GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, - GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, - GLenum format, GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)( - GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, - GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLsizei size4d, - GLint border, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, - GLsizei depth, GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTMEMNVPROC)(GLenum target, GLint layer, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLuint memory, GLuint64 offset, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); -typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, - const GLfixed *params); -typedef void(GLAD_API_PTR *PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, - GLenum internalformat, GLsizei width, - GLsizei height, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLsizei height, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, - GLenum internalFormat, - GLsizei width, GLsizei height, - GLboolean fixedSampleLocations, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLsizei height, GLsizei depth, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)( - GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, - GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height, - GLsizei depth, GLsizei layers, - GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, - GLsizei width, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLsizei width, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLsizei width, GLsizei height, - GLenum format, GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLsizei width, GLsizei height, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLint woffset, - GLsizei width, GLsizei height, GLsizei depth, - GLsizei size4d, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERPROC)(void); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERNVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, - GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, - GLenum internalformat, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, - GLuint buffer, GLintptr offset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, - GLenum internalformat, GLuint buffer, - GLintptr offset, GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, - GLboolean blue, GLboolean alpha); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLint border, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLsizei height, GLint border, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)( - GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, - GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, - GLsizei samples, - GLint internalFormat, - GLsizei width, GLsizei height, - GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, - GLint internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)( - GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, - GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, - GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)( - GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, - GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); -typedef void(GLAD_API_PTR *PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); -typedef void(GLAD_API_PTR *PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); -typedef void(GLAD_API_PTR *PFNGLTEXTURENORMALEXTPROC)(GLenum mode); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)(GLuint texture, GLint layer, - GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, - GLsizei depth, GLuint memory, - GLuint64 offset, GLboolean commit); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, - const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, const GLuint *params); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, - const GLfloat *param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, - GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, - const GLint *param); -typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, - GLenum pname, const GLint *params); -typedef void(GLAD_API_PTR *PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, - GLuint renderbuffer); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, - GLenum internalformat, GLsizei width); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, - GLsizei levels, GLenum internalformat, - GLsizei width); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, - GLsizei levels, GLenum internalformat, - GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, - GLenum internalformat, - GLsizei width, GLsizei height, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, - GLsizei samples, - GLenum internalformat, - GLsizei width, GLsizei height, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, - GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, - GLsizei levels, GLenum internalformat, - GLsizei width, GLsizei height, - GLsizei depth); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, - GLenum internalformat, - GLsizei width, GLsizei height, - GLsizei depth, - GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)( - GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, - GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLsizei height, GLuint memory, - GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)( - GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, - GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, - GLenum internalFormat, GLsizei width, - GLsizei height, GLsizei depth, - GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)( - GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, - GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); -typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, - GLenum internalFormat, GLsizei width, - GLsizei height, GLsizei depth, - GLsizei layers, GLbitfield flags); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, - GLsizei width, GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, GLsizei width, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, - GLint yoffset, GLsizei width, GLsizei height, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, - GLint yoffset, GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, GLenum format, - GLenum type, const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, - GLint level, GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLenum format, GLenum type, - const void *pixels); -typedef void(GLAD_API_PTR *PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, - GLenum internalformat, GLuint minlevel, - GLuint numlevels, GLuint minlayer, - GLuint numlayers); -typedef void(GLAD_API_PTR *PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, - GLenum transform); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint *attribs, - GLenum bufferMode); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, - GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, - GLuint buffer, GLintptr offset, - GLsizeiptr size); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, - const GLint *attribs, - GLsizei nbuffers, - const GLint *bufstreams, - GLenum bufferMode); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, - const GLchar *const *varyings, - GLenum bufferMode); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, - const GLchar *const *varyings, - GLenum bufferMode); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, - const GLint *locations, - GLenum bufferMode); -typedef void(GLAD_API_PTR *PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, - GLenum transformType, - const GLfloat *transformValues); -typedef void(GLAD_API_PTR *PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, - const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, - const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, - const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, - const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, - GLfloat v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, - GLint64 z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, - GLint64EXT z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, - const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, - const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, - GLuint64 z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, - GLuint64EXT z); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, - GLdouble w); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, - const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, - GLfloat v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, - GLfloat v2, GLfloat v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, - const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, - GLint v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, - GLint64 w); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, - GLint64EXT z, GLint64EXT w); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, - const GLint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, - const GLint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, - GLint v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, - const GLint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, - GLuint v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, - GLuint64 z, GLuint64 w); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, - GLuint64EXT z, GLuint64EXT w); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, - GLuint v3); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, - const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, - GLuint uniformBlockBinding); -typedef void(GLAD_API_PTR *PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, - GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, - const GLuint64 *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLdouble *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, - GLboolean transpose, const GLfloat *value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, - const GLuint *indices); -typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); -typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, - const GLuint64EXT *value); -typedef void(GLAD_API_PTR *PFNGLUNLOCKARRAYSEXTPROC)(void); -typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERPROC)(GLenum target); -typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERARBPROC)(GLenum target); -typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); -typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); -typedef void(GLAD_API_PTR *PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, - GLsizei size, const void *pointer, - GLenum preserve); -typedef void(GLAD_API_PTR *PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); -typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); -typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); -typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, - GLuint program); -typedef void(GLAD_API_PTR *PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); -typedef void(GLAD_API_PTR *PFNGLVDPAUFININVPROC)(void); -typedef void(GLAD_API_PTR *PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, - GLsizei count, GLsizei *length, - GLint *values); -typedef void(GLAD_API_PTR *PFNGLVDPAUINITNVPROC)(const void *vdpDevice, const void *getProcAddress); -typedef GLboolean(GLAD_API_PTR *PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); -typedef void(GLAD_API_PTR *PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, - const GLvdpauSurfaceNV *surfaces); -typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)( - const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)( - const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)( - const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, - GLboolean isFrameStructure); -typedef void(GLAD_API_PTR *PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); -typedef void(GLAD_API_PTR *PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, - const GLvdpauSurfaceNV *surfaces); -typedef void(GLAD_API_PTR *PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); -typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); -typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); -typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); -typedef void(GLAD_API_PTR *PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, - GLuint buffer, GLuint offset); -typedef void(GLAD_API_PTR *PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, - const void *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint *addr); -typedef void(GLAD_API_PTR *PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort *addr); -typedef void(GLAD_API_PTR *PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); -typedef void(GLAD_API_PTR *PFNGLVERTEX2BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); -typedef void(GLAD_API_PTR *PFNGLVERTEX2HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEX2XOESPROC)(GLfixed x); -typedef void(GLAD_API_PTR *PFNGLVERTEX2XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); -typedef void(GLAD_API_PTR *PFNGLVERTEX3BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void(GLAD_API_PTR *PFNGLVERTEX3HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); -typedef void(GLAD_API_PTR *PFNGLVERTEX3XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); -typedef void(GLAD_API_PTR *PFNGLVERTEX4BVOESPROC)(const GLbyte *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void(GLAD_API_PTR *PFNGLVERTEX4HVNVPROC)(const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); -typedef void(GLAD_API_PTR *PFNGLVERTEX4XVOESPROC)(const GLfixed *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, - GLuint bindingindex); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, - GLint size, GLenum type, - GLboolean normalized, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, - GLint size, GLenum type, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, - GLint size, GLenum type, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, - GLuint bindingindex, - GLuint buffer, GLintptr offset, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, - GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLint size, GLenum type, - GLsizei stride, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLsizei stride, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLenum texunit, GLint size, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLint size, GLenum type, - GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLint size, GLenum type, - GLsizei stride, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, - GLuint attribindex, - GLuint bindingindex); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, - GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, - GLuint attribindex, - GLint size, GLenum type, - GLboolean normalized, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, - GLuint attribindex, - GLint size, GLenum type, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLuint index, GLint size, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, - GLuint attribindex, - GLint size, GLenum type, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLuint index, GLint size, - GLenum type, GLsizei stride, - GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)( - GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, - GLsizei stride, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, - GLuint bindingindex, - GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, - GLuint buffer, GLintptr offset, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, - GLsizei count, const GLuint *buffers, - const GLintptr *offsets, - const GLsizei *strides); -typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, - GLint size, GLenum type, - GLsizei stride, GLintptr offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, - GLhalfNV z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, - GLshort z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, - GLshort z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, - GLubyte w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, - GLubyte z, GLubyte w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, - GLfloat w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, - GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, - GLfloat w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, - GLhalfNV z, GLhalfNV w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, - GLshort w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, - GLshort z, GLshort w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, - GLshort w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, - GLubyte z, GLubyte w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, - GLenum type, GLboolean normalized, - GLsizei stride, GLuint buffer, - GLuint offset); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, - GLboolean normalized, - GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, - GLuint z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, - GLint w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, - GLint w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, - GLuint w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, - GLuint w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, - GLenum type, GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, - GLuint64EXT y); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, - GLint64EXT z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, - GLuint64EXT y, GLuint64EXT z); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, - GLint64EXT z, GLint64EXT w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, - GLuint64EXT y, GLuint64EXT z, - GLuint64EXT w); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, - GLenum type, GLuint relativeoffset); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, - GLboolean normalized, GLuint value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, - GLboolean normalized, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, - GLboolean normalized, GLuint value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, - GLboolean normalized, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, - GLboolean normalized, GLuint value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, - GLboolean normalized, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, - GLboolean normalized, GLuint value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, - GLboolean normalized, const GLuint *value); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, - GLint param); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, - GLboolean normalized, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, - GLsizei stride, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, - const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, - const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, - const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, - const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, - const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, - const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, - const GLubyte *v); -typedef void(GLAD_API_PTR *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); -typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDARBPROC)(GLint count); -typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); -typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); -typedef void(GLAD_API_PTR *PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); -typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, - GLsizei count, const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, - const void **pointer, GLint ptrstride); -typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, - const void **pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, - GLdouble z); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, - GLfloat z); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, - GLshort z); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, - GLdouble z, GLdouble w); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, - GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, - GLint w); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, - GLshort z, GLshort w); -typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort *coords); -typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); -typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat *weight); -typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); -typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV *weight); -typedef GLenum(GLAD_API_PTR *PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, - GLuint *sequence_num, - GLuint64EXT *capture_time); -typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - const GLdouble *params); -typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - const GLfloat *params); -typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, - GLuint stream, GLenum pname, - const GLint *params); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, - GLfloat h); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, - GLfloat ycoeff); -typedef void(GLAD_API_PTR *PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, - GLenum swizzley, GLenum swizzlez, - GLenum swizzlew); -typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, - const GLuint *buffers, - GLuint numTextureBarriers, - const GLuint *textures, - const GLenum *srcLayouts); -typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, - const GLuint *semaphoreArray, - const GLuint64 *fenceValueArray); -typedef void(GLAD_API_PTR *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void(GLAD_API_PTR *PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); -typedef void(GLAD_API_PTR *PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, - const GLuint *paths, const GLfloat *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, - const void *pointer); -typedef void(GLAD_API_PTR *PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTIVARBPROC)(GLint size, const GLint *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint *weights); -typedef void(GLAD_API_PTR *PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort *weights); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVARBPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVARBPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVARBPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVMESAPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVARBPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVMESAPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVARBPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVARBPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVARBPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVMESAPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVARBPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVMESAPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, - GLdouble w); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IVMESAPROC)(const GLint *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); -typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SVMESAPROC)(const GLshort *v); -typedef void(GLAD_API_PTR *PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, - const GLint *box); -typedef void(GLAD_API_PTR *PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, - GLenum outZ, GLenum outW); - -typedef struct GladGLContext { - PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram; - PFNGLACTIVETEXTUREPROC ActiveTexture; - PFNGLATTACHSHADERPROC AttachShader; - PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender; - PFNGLBEGINQUERYPROC BeginQuery; - PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed; - PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback; - PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation; - PFNGLBINDBUFFERPROC BindBuffer; - PFNGLBINDBUFFERBASEPROC BindBufferBase; - PFNGLBINDBUFFERRANGEPROC BindBufferRange; - PFNGLBINDBUFFERSBASEPROC BindBuffersBase; - PFNGLBINDBUFFERSRANGEPROC BindBuffersRange; - PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation; - PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed; - PFNGLBINDFRAMEBUFFERPROC BindFramebuffer; - PFNGLBINDIMAGETEXTUREPROC BindImageTexture; - PFNGLBINDIMAGETEXTURESPROC BindImageTextures; - PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline; - PFNGLBINDRENDERBUFFERPROC BindRenderbuffer; - PFNGLBINDSAMPLERPROC BindSampler; - PFNGLBINDSAMPLERSPROC BindSamplers; - PFNGLBINDTEXTUREPROC BindTexture; - PFNGLBINDTEXTUREUNITPROC BindTextureUnit; - PFNGLBINDTEXTURESPROC BindTextures; - PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback; - PFNGLBINDVERTEXARRAYPROC BindVertexArray; - PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer; - PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers; - PFNGLBLENDCOLORPROC BlendColor; - PFNGLBLENDEQUATIONPROC BlendEquation; - PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate; - PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei; - PFNGLBLENDEQUATIONIPROC BlendEquationi; - PFNGLBLENDFUNCPROC BlendFunc; - PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate; - PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei; - PFNGLBLENDFUNCIPROC BlendFunci; - PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer; - PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer; - PFNGLBUFFERDATAPROC BufferData; - PFNGLBUFFERSTORAGEPROC BufferStorage; - PFNGLBUFFERSUBDATAPROC BufferSubData; - PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus; - PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus; - PFNGLCLAMPCOLORPROC ClampColor; - PFNGLCLEARPROC Clear; - PFNGLCLEARBUFFERDATAPROC ClearBufferData; - PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData; - PFNGLCLEARBUFFERFIPROC ClearBufferfi; - PFNGLCLEARBUFFERFVPROC ClearBufferfv; - PFNGLCLEARBUFFERIVPROC ClearBufferiv; - PFNGLCLEARBUFFERUIVPROC ClearBufferuiv; - PFNGLCLEARCOLORPROC ClearColor; - PFNGLCLEARDEPTHPROC ClearDepth; - PFNGLCLEARDEPTHFPROC ClearDepthf; - PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData; - PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData; - PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi; - PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv; - PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv; - PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv; - PFNGLCLEARSTENCILPROC ClearStencil; - PFNGLCLEARTEXIMAGEPROC ClearTexImage; - PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage; - PFNGLCLIENTWAITSYNCPROC ClientWaitSync; - PFNGLCLIPCONTROLPROC ClipControl; - PFNGLCOLORMASKPROC ColorMask; - PFNGLCOLORMASKIPROC ColorMaski; - PFNGLCOMPILESHADERPROC CompileShader; - PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D; - PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D; - PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D; - PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D; - PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D; - PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D; - PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData; - PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData; - PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData; - PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D; - PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D; - PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D; - PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D; - PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D; - PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D; - PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D; - PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D; - PFNGLCREATEBUFFERSPROC CreateBuffers; - PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers; - PFNGLCREATEPROGRAMPROC CreateProgram; - PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines; - PFNGLCREATEQUERIESPROC CreateQueries; - PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers; - PFNGLCREATESAMPLERSPROC CreateSamplers; - PFNGLCREATESHADERPROC CreateShader; - PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv; - PFNGLCREATETEXTURESPROC CreateTextures; - PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks; - PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays; - PFNGLCULLFACEPROC CullFace; - PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback; - PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl; - PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert; - PFNGLDELETEBUFFERSPROC DeleteBuffers; - PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers; - PFNGLDELETEPROGRAMPROC DeleteProgram; - PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines; - PFNGLDELETEQUERIESPROC DeleteQueries; - PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers; - PFNGLDELETESAMPLERSPROC DeleteSamplers; - PFNGLDELETESHADERPROC DeleteShader; - PFNGLDELETESYNCPROC DeleteSync; - PFNGLDELETETEXTURESPROC DeleteTextures; - PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks; - PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays; - PFNGLDEPTHFUNCPROC DepthFunc; - PFNGLDEPTHMASKPROC DepthMask; - PFNGLDEPTHRANGEPROC DepthRange; - PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv; - PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed; - PFNGLDEPTHRANGEFPROC DepthRangef; - PFNGLDETACHSHADERPROC DetachShader; - PFNGLDISABLEPROC Disable; - PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib; - PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray; - PFNGLDISABLEIPROC Disablei; - PFNGLDISPATCHCOMPUTEPROC DispatchCompute; - PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect; - PFNGLDRAWARRAYSPROC DrawArrays; - PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect; - PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced; - PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance; - PFNGLDRAWBUFFERPROC DrawBuffer; - PFNGLDRAWBUFFERSPROC DrawBuffers; - PFNGLDRAWELEMENTSPROC DrawElements; - PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex; - PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect; - PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced; - PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance; - PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex; - PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC - DrawElementsInstancedBaseVertexBaseInstance; - PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements; - PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex; - PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback; - PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced; - PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream; - PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced; - PFNGLENABLEPROC Enable; - PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib; - PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray; - PFNGLENABLEIPROC Enablei; - PFNGLENDCONDITIONALRENDERPROC EndConditionalRender; - PFNGLENDQUERYPROC EndQuery; - PFNGLENDQUERYINDEXEDPROC EndQueryIndexed; - PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback; - PFNGLFENCESYNCPROC FenceSync; - PFNGLFINISHPROC Finish; - PFNGLFLUSHPROC Flush; - PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange; - PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange; - PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri; - PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer; - PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture; - PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D; - PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D; - PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D; - PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer; - PFNGLFRONTFACEPROC FrontFace; - PFNGLGENBUFFERSPROC GenBuffers; - PFNGLGENFRAMEBUFFERSPROC GenFramebuffers; - PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines; - PFNGLGENQUERIESPROC GenQueries; - PFNGLGENRENDERBUFFERSPROC GenRenderbuffers; - PFNGLGENSAMPLERSPROC GenSamplers; - PFNGLGENTEXTURESPROC GenTextures; - PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks; - PFNGLGENVERTEXARRAYSPROC GenVertexArrays; - PFNGLGENERATEMIPMAPPROC GenerateMipmap; - PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap; - PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv; - PFNGLGETACTIVEATTRIBPROC GetActiveAttrib; - PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName; - PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName; - PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv; - PFNGLGETACTIVEUNIFORMPROC GetActiveUniform; - PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName; - PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv; - PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName; - PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv; - PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders; - PFNGLGETATTRIBLOCATIONPROC GetAttribLocation; - PFNGLGETBOOLEANI_VPROC GetBooleani_v; - PFNGLGETBOOLEANVPROC GetBooleanv; - PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v; - PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv; - PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv; - PFNGLGETBUFFERSUBDATAPROC GetBufferSubData; - PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage; - PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage; - PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage; - PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog; - PFNGLGETDOUBLEI_VPROC GetDoublei_v; - PFNGLGETDOUBLEVPROC GetDoublev; - PFNGLGETERRORPROC GetError; - PFNGLGETFLOATI_VPROC GetFloati_v; - PFNGLGETFLOATVPROC GetFloatv; - PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex; - PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation; - PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv; - PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv; - PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus; - PFNGLGETINTEGER64I_VPROC GetInteger64i_v; - PFNGLGETINTEGER64VPROC GetInteger64v; - PFNGLGETINTEGERI_VPROC GetIntegeri_v; - PFNGLGETINTEGERVPROC GetIntegerv; - PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v; - PFNGLGETINTERNALFORMATIVPROC GetInternalformativ; - PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv; - PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v; - PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv; - PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv; - PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData; - PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv; - PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv; - PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv; - PFNGLGETOBJECTLABELPROC GetObjectLabel; - PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel; - PFNGLGETPOINTERVPROC GetPointerv; - PFNGLGETPROGRAMBINARYPROC GetProgramBinary; - PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; - PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv; - PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog; - PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv; - PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex; - PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation; - PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex; - PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName; - PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv; - PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv; - PFNGLGETPROGRAMIVPROC GetProgramiv; - PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v; - PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv; - PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v; - PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv; - PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv; - PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v; - PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv; - PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v; - PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv; - PFNGLGETQUERYIVPROC GetQueryiv; - PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv; - PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv; - PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv; - PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv; - PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv; - PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; - PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat; - PFNGLGETSHADERSOURCEPROC GetShaderSource; - PFNGLGETSHADERIVPROC GetShaderiv; - PFNGLGETSTRINGPROC GetString; - PFNGLGETSTRINGIPROC GetStringi; - PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex; - PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation; - PFNGLGETSYNCIVPROC GetSynciv; - PFNGLGETTEXIMAGEPROC GetTexImage; - PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv; - PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; - PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv; - PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv; - PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv; - PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv; - PFNGLGETTEXTUREIMAGEPROC GetTextureImage; - PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv; - PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv; - PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv; - PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv; - PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv; - PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv; - PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage; - PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying; - PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v; - PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v; - PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv; - PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex; - PFNGLGETUNIFORMINDICESPROC GetUniformIndices; - PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation; - PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv; - PFNGLGETUNIFORMDVPROC GetUniformdv; - PFNGLGETUNIFORMFVPROC GetUniformfv; - PFNGLGETUNIFORMIVPROC GetUniformiv; - PFNGLGETUNIFORMUIVPROC GetUniformuiv; - PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv; - PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv; - PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv; - PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv; - PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv; - PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv; - PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv; - PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv; - PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv; - PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv; - PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage; - PFNGLGETNTEXIMAGEPROC GetnTexImage; - PFNGLGETNUNIFORMDVPROC GetnUniformdv; - PFNGLGETNUNIFORMFVPROC GetnUniformfv; - PFNGLGETNUNIFORMIVPROC GetnUniformiv; - PFNGLGETNUNIFORMUIVPROC GetnUniformuiv; - PFNGLHINTPROC Hint; - PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData; - PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData; - PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer; - PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData; - PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData; - PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer; - PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage; - PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage; - PFNGLISBUFFERPROC IsBuffer; - PFNGLISENABLEDPROC IsEnabled; - PFNGLISENABLEDIPROC IsEnabledi; - PFNGLISFRAMEBUFFERPROC IsFramebuffer; - PFNGLISPROGRAMPROC IsProgram; - PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline; - PFNGLISQUERYPROC IsQuery; - PFNGLISRENDERBUFFERPROC IsRenderbuffer; - PFNGLISSAMPLERPROC IsSampler; - PFNGLISSHADERPROC IsShader; - PFNGLISSYNCPROC IsSync; - PFNGLISTEXTUREPROC IsTexture; - PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback; - PFNGLISVERTEXARRAYPROC IsVertexArray; - PFNGLLINEWIDTHPROC LineWidth; - PFNGLLINKPROGRAMPROC LinkProgram; - PFNGLLOGICOPPROC LogicOp; - PFNGLMAPBUFFERPROC MapBuffer; - PFNGLMAPBUFFERRANGEPROC MapBufferRange; - PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer; - PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange; - PFNGLMEMORYBARRIERPROC MemoryBarrier; - PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion; - PFNGLMINSAMPLESHADINGPROC MinSampleShading; - PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays; - PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect; - PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount; - PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements; - PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex; - PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect; - PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount; - PFNGLNAMEDBUFFERDATAPROC NamedBufferData; - PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage; - PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData; - PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer; - PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers; - PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri; - PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer; - PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer; - PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture; - PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer; - PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage; - PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample; - PFNGLOBJECTLABELPROC ObjectLabel; - PFNGLOBJECTPTRLABELPROC ObjectPtrLabel; - PFNGLPATCHPARAMETERFVPROC PatchParameterfv; - PFNGLPATCHPARAMETERIPROC PatchParameteri; - PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback; - PFNGLPIXELSTOREFPROC PixelStoref; - PFNGLPIXELSTOREIPROC PixelStorei; - PFNGLPOINTPARAMETERFPROC PointParameterf; - PFNGLPOINTPARAMETERFVPROC PointParameterfv; - PFNGLPOINTPARAMETERIPROC PointParameteri; - PFNGLPOINTPARAMETERIVPROC PointParameteriv; - PFNGLPOINTSIZEPROC PointSize; - PFNGLPOLYGONMODEPROC PolygonMode; - PFNGLPOLYGONOFFSETPROC PolygonOffset; - PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp; - PFNGLPOPDEBUGGROUPPROC PopDebugGroup; - PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex; - PFNGLPROGRAMBINARYPROC ProgramBinary; - PFNGLPROGRAMPARAMETERIPROC ProgramParameteri; - PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d; - PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv; - PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f; - PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv; - PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i; - PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv; - PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui; - PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv; - PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d; - PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv; - PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f; - PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv; - PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i; - PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv; - PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui; - PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv; - PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d; - PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv; - PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f; - PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv; - PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i; - PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv; - PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui; - PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv; - PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d; - PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv; - PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f; - PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv; - PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i; - PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv; - PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui; - PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv; - PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv; - PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv; - PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv; - PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv; - PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv; - PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv; - PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv; - PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv; - PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv; - PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv; - PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv; - PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv; - PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv; - PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv; - PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv; - PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv; - PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv; - PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv; - PFNGLPROVOKINGVERTEXPROC ProvokingVertex; - PFNGLPUSHDEBUGGROUPPROC PushDebugGroup; - PFNGLQUERYCOUNTERPROC QueryCounter; - PFNGLREADBUFFERPROC ReadBuffer; - PFNGLREADPIXELSPROC ReadPixels; - PFNGLREADNPIXELSPROC ReadnPixels; - PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler; - PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage; - PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample; - PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback; - PFNGLSAMPLECOVERAGEPROC SampleCoverage; - PFNGLSAMPLEMASKIPROC SampleMaski; - PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv; - PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv; - PFNGLSAMPLERPARAMETERFPROC SamplerParameterf; - PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv; - PFNGLSAMPLERPARAMETERIPROC SamplerParameteri; - PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv; - PFNGLSCISSORPROC Scissor; - PFNGLSCISSORARRAYVPROC ScissorArrayv; - PFNGLSCISSORINDEXEDPROC ScissorIndexed; - PFNGLSCISSORINDEXEDVPROC ScissorIndexedv; - PFNGLSHADERBINARYPROC ShaderBinary; - PFNGLSHADERSOURCEPROC ShaderSource; - PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding; - PFNGLSPECIALIZESHADERPROC SpecializeShader; - PFNGLSTENCILFUNCPROC StencilFunc; - PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate; - PFNGLSTENCILMASKPROC StencilMask; - PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate; - PFNGLSTENCILOPPROC StencilOp; - PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate; - PFNGLTEXBUFFERPROC TexBuffer; - PFNGLTEXBUFFERRANGEPROC TexBufferRange; - PFNGLTEXIMAGE1DPROC TexImage1D; - PFNGLTEXIMAGE2DPROC TexImage2D; - PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample; - PFNGLTEXIMAGE3DPROC TexImage3D; - PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample; - PFNGLTEXPARAMETERIIVPROC TexParameterIiv; - PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv; - PFNGLTEXPARAMETERFPROC TexParameterf; - PFNGLTEXPARAMETERFVPROC TexParameterfv; - PFNGLTEXPARAMETERIPROC TexParameteri; - PFNGLTEXPARAMETERIVPROC TexParameteriv; - PFNGLTEXSTORAGE1DPROC TexStorage1D; - PFNGLTEXSTORAGE2DPROC TexStorage2D; - PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample; - PFNGLTEXSTORAGE3DPROC TexStorage3D; - PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample; - PFNGLTEXSUBIMAGE1DPROC TexSubImage1D; - PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; - PFNGLTEXSUBIMAGE3DPROC TexSubImage3D; - PFNGLTEXTUREBARRIERPROC TextureBarrier; - PFNGLTEXTUREBUFFERPROC TextureBuffer; - PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange; - PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv; - PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv; - PFNGLTEXTUREPARAMETERFPROC TextureParameterf; - PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv; - PFNGLTEXTUREPARAMETERIPROC TextureParameteri; - PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv; - PFNGLTEXTURESTORAGE1DPROC TextureStorage1D; - PFNGLTEXTURESTORAGE2DPROC TextureStorage2D; - PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample; - PFNGLTEXTURESTORAGE3DPROC TextureStorage3D; - PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample; - PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D; - PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D; - PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D; - PFNGLTEXTUREVIEWPROC TextureView; - PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase; - PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange; - PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings; - PFNGLUNIFORM1DPROC Uniform1d; - PFNGLUNIFORM1DVPROC Uniform1dv; - PFNGLUNIFORM1FPROC Uniform1f; - PFNGLUNIFORM1FVPROC Uniform1fv; - PFNGLUNIFORM1IPROC Uniform1i; - PFNGLUNIFORM1IVPROC Uniform1iv; - PFNGLUNIFORM1UIPROC Uniform1ui; - PFNGLUNIFORM1UIVPROC Uniform1uiv; - PFNGLUNIFORM2DPROC Uniform2d; - PFNGLUNIFORM2DVPROC Uniform2dv; - PFNGLUNIFORM2FPROC Uniform2f; - PFNGLUNIFORM2FVPROC Uniform2fv; - PFNGLUNIFORM2IPROC Uniform2i; - PFNGLUNIFORM2IVPROC Uniform2iv; - PFNGLUNIFORM2UIPROC Uniform2ui; - PFNGLUNIFORM2UIVPROC Uniform2uiv; - PFNGLUNIFORM3DPROC Uniform3d; - PFNGLUNIFORM3DVPROC Uniform3dv; - PFNGLUNIFORM3FPROC Uniform3f; - PFNGLUNIFORM3FVPROC Uniform3fv; - PFNGLUNIFORM3IPROC Uniform3i; - PFNGLUNIFORM3IVPROC Uniform3iv; - PFNGLUNIFORM3UIPROC Uniform3ui; - PFNGLUNIFORM3UIVPROC Uniform3uiv; - PFNGLUNIFORM4DPROC Uniform4d; - PFNGLUNIFORM4DVPROC Uniform4dv; - PFNGLUNIFORM4FPROC Uniform4f; - PFNGLUNIFORM4FVPROC Uniform4fv; - PFNGLUNIFORM4IPROC Uniform4i; - PFNGLUNIFORM4IVPROC Uniform4iv; - PFNGLUNIFORM4UIPROC Uniform4ui; - PFNGLUNIFORM4UIVPROC Uniform4uiv; - PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding; - PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv; - PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv; - PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv; - PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv; - PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv; - PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv; - PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv; - PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv; - PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv; - PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv; - PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv; - PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv; - PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv; - PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; - PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv; - PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv; - PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv; - PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv; - PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv; - PFNGLUNMAPBUFFERPROC UnmapBuffer; - PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer; - PFNGLUSEPROGRAMPROC UseProgram; - PFNGLUSEPROGRAMSTAGESPROC UseProgramStages; - PFNGLVALIDATEPROGRAMPROC ValidateProgram; - PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline; - PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding; - PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat; - PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat; - PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat; - PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor; - PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer; - PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer; - PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers; - PFNGLVERTEXATTRIB1DPROC VertexAttrib1d; - PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv; - PFNGLVERTEXATTRIB1FPROC VertexAttrib1f; - PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv; - PFNGLVERTEXATTRIB1SPROC VertexAttrib1s; - PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv; - PFNGLVERTEXATTRIB2DPROC VertexAttrib2d; - PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv; - PFNGLVERTEXATTRIB2FPROC VertexAttrib2f; - PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv; - PFNGLVERTEXATTRIB2SPROC VertexAttrib2s; - PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv; - PFNGLVERTEXATTRIB3DPROC VertexAttrib3d; - PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv; - PFNGLVERTEXATTRIB3FPROC VertexAttrib3f; - PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv; - PFNGLVERTEXATTRIB3SPROC VertexAttrib3s; - PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv; - PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv; - PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv; - PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv; - PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub; - PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv; - PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv; - PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv; - PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv; - PFNGLVERTEXATTRIB4DPROC VertexAttrib4d; - PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv; - PFNGLVERTEXATTRIB4FPROC VertexAttrib4f; - PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv; - PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv; - PFNGLVERTEXATTRIB4SPROC VertexAttrib4s; - PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv; - PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv; - PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv; - PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv; - PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding; - PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor; - PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat; - PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i; - PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv; - PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui; - PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv; - PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i; - PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv; - PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui; - PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv; - PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i; - PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv; - PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui; - PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv; - PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv; - PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i; - PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv; - PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv; - PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv; - PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui; - PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv; - PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv; - PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat; - PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer; - PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d; - PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv; - PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d; - PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv; - PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d; - PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv; - PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d; - PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv; - PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat; - PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer; - PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui; - PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv; - PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui; - PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv; - PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui; - PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv; - PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui; - PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv; - PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer; - PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor; - PFNGLVIEWPORTPROC Viewport; - PFNGLVIEWPORTARRAYVPROC ViewportArrayv; - PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf; - PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv; - PFNGLWAITSYNCPROC WaitSync; - -} GladGLContext; - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/StgSharp.Native/sn-head/glfw_function.h b/src/StgSharp.Native/sn-head/glfw_function.h index 36f7fc98..b785e82c 100644 --- a/src/StgSharp.Native/sn-head/glfw_function.h +++ b/src/StgSharp.Native/sn-head/glfw_function.h @@ -1,6 +1,10 @@ #ifndef GLFW_FUNCTION_TABLE_H #define GLFW_FUNCTION_TABLE_H +#ifndef GLFW_INCLUDE_NONE +#define GLFW_INCLUDE_NONE +#endif + #include "../lib/glfw/glfw3.h" #ifdef __cplusplus diff --git a/src/StgSharp.Native/sn-head/khrplatform.h b/src/StgSharp.Native/sn-head/khrplatform.h deleted file mode 100644 index 5cd17f65..00000000 --- a/src/StgSharp.Native/sn-head/khrplatform.h +++ /dev/null @@ -1,310 +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 -/* - * To support platform where unsigned long cannot be used interchangeably with - * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. - * Ideally, we could just use (u)intptr_t everywhere, but this could result in - * ABI breakage if khronos_uintptr_t is changed from unsigned long to - * unsigned long long or similar (this results in different C++ name mangling). - * To avoid changes for existing platforms, we restrict usage of intptr_t to - * platforms where the size of a pointer is larger than the size of long. - */ -#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) -#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ -#define KHRONOS_USE_INTPTR_T -#endif -#endif - -#elif defined(__VMS) || defined(__sgi) - -/* - * Using - */ -#include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) - -/* - * Win32 - */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__sun__) || defined(__digital__) - -/* - * Sun or Digital - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; -#else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; -#endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif 0 - -/* - * Hypothetical platform with no float or int64 support - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 - -#else - -/* - * Generic fallback - */ -#include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#endif - -/* - * Types that are (so far) the same on all platforms - */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; - -/* - * Types that differ between LLP64 and LP64 architectures - in LLP64, - * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears - * to be the only LLP64 architecture in current use. - */ -#ifdef KHRONOS_USE_INTPTR_T -typedef intptr_t khronos_intptr_t; -typedef uintptr_t khronos_uintptr_t; -#elif defined(_WIN64) -typedef signed long long int khronos_intptr_t; -typedef unsigned long long int khronos_uintptr_t; -#else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -#endif - -#if defined(_WIN64) -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; -#else -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; -#endif - -#if KHRONOS_SUPPORT_FLOAT -/* - * Float type - */ -typedef float khronos_float_t; -#endif - -#if KHRONOS_SUPPORT_INT64 -/* Time types - * - * These types can be used to represent a time interval in nanoseconds or - * an absolute Unadjusted System Time. Unadjusted System Time is the number - * of nanoseconds since some arbitrary system event (e.g. since the last - * time the system booted). The Unadjusted System Time is an unsigned - * 64 bit value that wraps back to 0 every 584 years. Time intervals - * may be either signed or unsigned. - */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; -#endif - -/* - * Dummy value used to pad enum types to 32 bits. - */ -#ifndef KHRONOS_MAX_ENUM -#define KHRONOS_MAX_ENUM 0x7FFFFFFF -#endif - -/* - * Enumerated boolean type - * - * Values other than zero should be considered to be true. Therefore - * comparisons should not be made against KHRONOS_TRUE. - */ -typedef enum { - KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, - KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM -} khronos_boolean_enum_t; - -#endif /* __khrplatform_h_ */ diff --git a/src/StgSharp.Native/sn-head/wgl.h b/src/StgSharp.Native/sn-head/wgl.h deleted file mode 100644 index a48052de..00000000 --- a/src/StgSharp.Native/sn-head/wgl.h +++ /dev/null @@ -1,1076 +0,0 @@ -/** - * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:03 2024 - * - * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 - * - * Generator: C/C++ - * Specification: wgl - * Extensions: 57 - * - * APIs: - * - wgl=1.0 - * - * Options: - * - ALIAS = False - * - DEBUG = False - * - HEADER_ONLY = False - * - LOADER = False - * - MX = True - * - ON_DEMAND = False - * - * Commandline: - * --api='wgl=1.0' --extensions='WGL_3DFX_multisample,WGL_3DL_stereo_control,WGL_AMD_gpu_association,WGL_ARB_buffer_region,WGL_ARB_context_flush_control,WGL_ARB_create_context,WGL_ARB_create_context_no_error,WGL_ARB_create_context_profile,WGL_ARB_create_context_robustness,WGL_ARB_extensions_string,WGL_ARB_framebuffer_sRGB,WGL_ARB_make_current_read,WGL_ARB_multisample,WGL_ARB_pbuffer,WGL_ARB_pixel_format,WGL_ARB_pixel_format_float,WGL_ARB_render_texture,WGL_ARB_robustness_application_isolation,WGL_ARB_robustness_share_group_isolation,WGL_ATI_pixel_format_float,WGL_ATI_render_texture_rectangle,WGL_EXT_colorspace,WGL_EXT_create_context_es2_profile,WGL_EXT_create_context_es_profile,WGL_EXT_depth_float,WGL_EXT_display_color_table,WGL_EXT_extensions_string,WGL_EXT_framebuffer_sRGB,WGL_EXT_make_current_read,WGL_EXT_multisample,WGL_EXT_pbuffer,WGL_EXT_pixel_format,WGL_EXT_pixel_format_packed_float,WGL_EXT_swap_control,WGL_EXT_swap_control_tear,WGL_I3D_digital_video_control,WGL_I3D_gamma,WGL_I3D_genlock,WGL_I3D_image_buffer,WGL_I3D_swap_frame_lock,WGL_I3D_swap_frame_usage,WGL_NV_DX_interop,WGL_NV_DX_interop2,WGL_NV_copy_image,WGL_NV_delay_before_swap,WGL_NV_float_buffer,WGL_NV_gpu_affinity,WGL_NV_multigpu_context,WGL_NV_multisample_coverage,WGL_NV_present_video,WGL_NV_render_depth_texture,WGL_NV_render_texture_rectangle,WGL_NV_swap_group,WGL_NV_vertex_array_range,WGL_NV_video_capture,WGL_NV_video_output,WGL_OML_sync_control' c --mx - * - * Online: - * http://glad.sh/#api=wgl%3D1.0&extensions=WGL_3DFX_multisample%2CWGL_3DL_stereo_control%2CWGL_AMD_gpu_association%2CWGL_ARB_buffer_region%2CWGL_ARB_context_flush_control%2CWGL_ARB_create_context%2CWGL_ARB_create_context_no_error%2CWGL_ARB_create_context_profile%2CWGL_ARB_create_context_robustness%2CWGL_ARB_extensions_string%2CWGL_ARB_framebuffer_sRGB%2CWGL_ARB_make_current_read%2CWGL_ARB_multisample%2CWGL_ARB_pbuffer%2CWGL_ARB_pixel_format%2CWGL_ARB_pixel_format_float%2CWGL_ARB_render_texture%2CWGL_ARB_robustness_application_isolation%2CWGL_ARB_robustness_share_group_isolation%2CWGL_ATI_pixel_format_float%2CWGL_ATI_render_texture_rectangle%2CWGL_EXT_colorspace%2CWGL_EXT_create_context_es2_profile%2CWGL_EXT_create_context_es_profile%2CWGL_EXT_depth_float%2CWGL_EXT_display_color_table%2CWGL_EXT_extensions_string%2CWGL_EXT_framebuffer_sRGB%2CWGL_EXT_make_current_read%2CWGL_EXT_multisample%2CWGL_EXT_pbuffer%2CWGL_EXT_pixel_format%2CWGL_EXT_pixel_format_packed_float%2CWGL_EXT_swap_control%2CWGL_EXT_swap_control_tear%2CWGL_I3D_digital_video_control%2CWGL_I3D_gamma%2CWGL_I3D_genlock%2CWGL_I3D_image_buffer%2CWGL_I3D_swap_frame_lock%2CWGL_I3D_swap_frame_usage%2CWGL_NV_DX_interop%2CWGL_NV_DX_interop2%2CWGL_NV_copy_image%2CWGL_NV_delay_before_swap%2CWGL_NV_float_buffer%2CWGL_NV_gpu_affinity%2CWGL_NV_multigpu_context%2CWGL_NV_multisample_coverage%2CWGL_NV_present_video%2CWGL_NV_render_depth_texture%2CWGL_NV_render_texture_rectangle%2CWGL_NV_swap_group%2CWGL_NV_vertex_array_range%2CWGL_NV_video_capture%2CWGL_NV_video_output%2CWGL_OML_sync_control&generator=c&options=MX - * - */ - -#ifndef GLAD_WGL_H_ -#define GLAD_WGL_H_ - -#include -#include "gl.h" - -#define GLAD_WGL - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GLAD_PLATFORM_H_ -#define GLAD_PLATFORM_H_ - -#ifndef GLAD_PLATFORM_WIN32 -#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) -#define GLAD_PLATFORM_WIN32 1 -#else -#define GLAD_PLATFORM_WIN32 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_APPLE -#ifdef __APPLE__ -#define GLAD_PLATFORM_APPLE 1 -#else -#define GLAD_PLATFORM_APPLE 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_EMSCRIPTEN -#ifdef __EMSCRIPTEN__ -#define GLAD_PLATFORM_EMSCRIPTEN 1 -#else -#define GLAD_PLATFORM_EMSCRIPTEN 0 -#endif -#endif - -#ifndef GLAD_PLATFORM_UWP -#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) -#ifdef __has_include -#if __has_include() -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ -#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 -#endif -#endif - -#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY -#include -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ - WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -#define GLAD_PLATFORM_UWP 1 -#endif -#endif - -#ifndef GLAD_PLATFORM_UWP -#define GLAD_PLATFORM_UWP 0 -#endif -#endif - -#ifdef __GNUC__ -#define GLAD_GNUC_EXTENSION __extension__ -#else -#define GLAD_GNUC_EXTENSION -#endif - -#define GLAD_UNUSED(x) (void)(x) - -#ifndef GLAD_API_CALL -#if defined(GLAD_API_CALL_EXPORT) -#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) -#if defined(GLAD_API_CALL_EXPORT_BUILD) -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__((dllexport)) extern -#else -#define GLAD_API_CALL __declspec(dllexport) extern -#endif -#else -#if defined(__GNUC__) -#define GLAD_API_CALL __attribute__((dllimport)) extern -#else -#define GLAD_API_CALL __declspec(dllimport) extern -#endif -#endif -#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) -#define GLAD_API_CALL __attribute__((visibility("default"))) extern -#else -#define GLAD_API_CALL extern -#endif -#else -#define GLAD_API_CALL extern -#endif -#endif - -#ifdef APIENTRY -#define GLAD_API_PTR APIENTRY -#elif GLAD_PLATFORM_WIN32 -#define GLAD_API_PTR __stdcall -#else -#define GLAD_API_PTR -#endif - -#ifndef GLAPI -#define GLAPI GLAD_API_CALL -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY GLAD_API_PTR -#endif - -#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) -#define GLAD_VERSION_MAJOR(version) (version / 10000) -#define GLAD_VERSION_MINOR(version) (version % 10000) - -#define GLAD_GENERATOR_VERSION "2.0.5" - -typedef void (*GLADapiproc)(void); - -typedef GLADapiproc (*GLADloadfunc)(const char *name); -typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); - -typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); -typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, - ...); - -#endif /* GLAD_PLATFORM_H_ */ - -#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 -#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 -#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 -#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 -#define ERROR_INVALID_PROFILE_ARB 0x2096 -#define ERROR_INVALID_VERSION_ARB 0x2095 -#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 -#define WGL_ACCELERATION_ARB 0x2003 -#define WGL_ACCELERATION_EXT 0x2003 -#define WGL_ACCESS_READ_ONLY_NV 0x00000000 -#define WGL_ACCESS_READ_WRITE_NV 0x00000001 -#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002 -#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 -#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 -#define WGL_ACCUM_BITS_ARB 0x201D -#define WGL_ACCUM_BITS_EXT 0x201D -#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 -#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 -#define WGL_ACCUM_GREEN_BITS_ARB 0x201F -#define WGL_ACCUM_GREEN_BITS_EXT 0x201F -#define WGL_ACCUM_RED_BITS_ARB 0x201E -#define WGL_ACCUM_RED_BITS_EXT 0x201E -#define WGL_ALPHA_BITS_ARB 0x201B -#define WGL_ALPHA_BITS_EXT 0x201B -#define WGL_ALPHA_SHIFT_ARB 0x201C -#define WGL_ALPHA_SHIFT_EXT 0x201C -#define WGL_AUX0_ARB 0x2087 -#define WGL_AUX1_ARB 0x2088 -#define WGL_AUX2_ARB 0x2089 -#define WGL_AUX3_ARB 0x208A -#define WGL_AUX4_ARB 0x208B -#define WGL_AUX5_ARB 0x208C -#define WGL_AUX6_ARB 0x208D -#define WGL_AUX7_ARB 0x208E -#define WGL_AUX8_ARB 0x208F -#define WGL_AUX9_ARB 0x2090 -#define WGL_AUX_BUFFERS_ARB 0x2024 -#define WGL_AUX_BUFFERS_EXT 0x2024 -#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 -#define WGL_BACK_LEFT_ARB 0x2085 -#define WGL_BACK_RIGHT_ARB 0x2086 -#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 -#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 -#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 -#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 -#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 -#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 -#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 -#define WGL_BLUE_BITS_ARB 0x2019 -#define WGL_BLUE_BITS_EXT 0x2019 -#define WGL_BLUE_SHIFT_ARB 0x201A -#define WGL_BLUE_SHIFT_EXT 0x201A -#define WGL_COLORSPACE_EXT 0x309D -#define WGL_COLORSPACE_LINEAR_EXT 0x308A -#define WGL_COLORSPACE_SRGB_EXT 0x3089 -#define WGL_COLOR_BITS_ARB 0x2014 -#define WGL_COLOR_BITS_EXT 0x2014 -#define WGL_COLOR_SAMPLES_NV 0x20B9 -#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 -#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 -#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001 -#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 -#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 -#define WGL_CONTEXT_FLAGS_ARB 0x2094 -#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 -#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 -#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 -#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 -#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC -#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD -#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE -#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA -#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB -#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3 -#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 -#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 -#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 -#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 -#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 -#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 -#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define WGL_COVERAGE_SAMPLES_NV 0x2042 -#define WGL_CUBE_MAP_FACE_ARB 0x207C -#define WGL_DEPTH_BITS_ARB 0x2022 -#define WGL_DEPTH_BITS_EXT 0x2022 -#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 -#define WGL_DEPTH_COMPONENT_NV 0x20A7 -#define WGL_DEPTH_FLOAT_EXT 0x2040 -#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 -#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 -#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 -#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 -#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 -#define WGL_DOUBLE_BUFFER_ARB 0x2011 -#define WGL_DOUBLE_BUFFER_EXT 0x2011 -#define WGL_DRAW_TO_BITMAP_ARB 0x2002 -#define WGL_DRAW_TO_BITMAP_EXT 0x2002 -#define WGL_DRAW_TO_PBUFFER_ARB 0x202D -#define WGL_DRAW_TO_PBUFFER_EXT 0x202D -#define WGL_DRAW_TO_WINDOW_ARB 0x2001 -#define WGL_DRAW_TO_WINDOW_EXT 0x2001 -#define WGL_FLOAT_COMPONENTS_NV 0x20B0 -#define WGL_FONT_LINES 0 -#define WGL_FONT_POLYGONS 1 -#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 -#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 -#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 -#define WGL_FRONT_LEFT_ARB 0x2083 -#define WGL_FRONT_RIGHT_ARB 0x2084 -#define WGL_FULL_ACCELERATION_ARB 0x2027 -#define WGL_FULL_ACCELERATION_EXT 0x2027 -#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F -#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E -#define WGL_GENERIC_ACCELERATION_ARB 0x2026 -#define WGL_GENERIC_ACCELERATION_EXT 0x2026 -#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 -#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 -#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C -#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A -#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B -#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 -#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 -#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 -#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 -#define WGL_GPU_CLOCK_AMD 0x21A4 -#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 -#define WGL_GPU_NUM_PIPES_AMD 0x21A5 -#define WGL_GPU_NUM_RB_AMD 0x21A7 -#define WGL_GPU_NUM_SIMD_AMD 0x21A6 -#define WGL_GPU_NUM_SPI_AMD 0x21A8 -#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 -#define WGL_GPU_RAM_AMD 0x21A3 -#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 -#define WGL_GPU_VENDOR_AMD 0x1F00 -#define WGL_GREEN_BITS_ARB 0x2017 -#define WGL_GREEN_BITS_EXT 0x2017 -#define WGL_GREEN_SHIFT_ARB 0x2018 -#define WGL_GREEN_SHIFT_EXT 0x2018 -#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 -#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 -#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 -#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 -#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 -#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E -#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E -#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F -#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F -#define WGL_MIPMAP_LEVEL_ARB 0x207B -#define WGL_MIPMAP_TEXTURE_ARB 0x2074 -#define WGL_NEED_PALETTE_ARB 0x2004 -#define WGL_NEED_PALETTE_EXT 0x2004 -#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 -#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 -#define WGL_NO_ACCELERATION_ARB 0x2025 -#define WGL_NO_ACCELERATION_EXT 0x2025 -#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 -#define WGL_NO_TEXTURE_ARB 0x2077 -#define WGL_NUMBER_OVERLAYS_ARB 0x2008 -#define WGL_NUMBER_OVERLAYS_EXT 0x2008 -#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 -#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 -#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 -#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 -#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF -#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 -#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 -#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 -#define WGL_PBUFFER_HEIGHT_ARB 0x2035 -#define WGL_PBUFFER_HEIGHT_EXT 0x2035 -#define WGL_PBUFFER_LARGEST_ARB 0x2033 -#define WGL_PBUFFER_LARGEST_EXT 0x2033 -#define WGL_PBUFFER_LOST_ARB 0x2036 -#define WGL_PBUFFER_WIDTH_ARB 0x2034 -#define WGL_PBUFFER_WIDTH_EXT 0x2034 -#define WGL_PIXEL_TYPE_ARB 0x2013 -#define WGL_PIXEL_TYPE_EXT 0x2013 -#define WGL_RED_BITS_ARB 0x2015 -#define WGL_RED_BITS_EXT 0x2015 -#define WGL_RED_SHIFT_ARB 0x2016 -#define WGL_RED_SHIFT_EXT 0x2016 -#define WGL_SAMPLES_3DFX 0x2061 -#define WGL_SAMPLES_ARB 0x2042 -#define WGL_SAMPLES_EXT 0x2042 -#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 -#define WGL_SAMPLE_BUFFERS_ARB 0x2041 -#define WGL_SAMPLE_BUFFERS_EXT 0x2041 -#define WGL_SHARE_ACCUM_ARB 0x200E -#define WGL_SHARE_ACCUM_EXT 0x200E -#define WGL_SHARE_DEPTH_ARB 0x200C -#define WGL_SHARE_DEPTH_EXT 0x200C -#define WGL_SHARE_STENCIL_ARB 0x200D -#define WGL_SHARE_STENCIL_EXT 0x200D -#define WGL_STENCIL_BITS_ARB 0x2023 -#define WGL_STENCIL_BITS_EXT 0x2023 -#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 -#define WGL_STEREO_ARB 0x2012 -#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 -#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 -#define WGL_STEREO_EXT 0x2012 -#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 -#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 -#define WGL_SUPPORT_GDI_ARB 0x200F -#define WGL_SUPPORT_GDI_EXT 0x200F -#define WGL_SUPPORT_OPENGL_ARB 0x2010 -#define WGL_SUPPORT_OPENGL_EXT 0x2010 -#define WGL_SWAP_COPY_ARB 0x2029 -#define WGL_SWAP_COPY_EXT 0x2029 -#define WGL_SWAP_EXCHANGE_ARB 0x2028 -#define WGL_SWAP_EXCHANGE_EXT 0x2028 -#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 -#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 -#define WGL_SWAP_MAIN_PLANE 0x00000001 -#define WGL_SWAP_METHOD_ARB 0x2007 -#define WGL_SWAP_METHOD_EXT 0x2007 -#define WGL_SWAP_OVERLAY1 0x00000002 -#define WGL_SWAP_OVERLAY10 0x00000400 -#define WGL_SWAP_OVERLAY11 0x00000800 -#define WGL_SWAP_OVERLAY12 0x00001000 -#define WGL_SWAP_OVERLAY13 0x00002000 -#define WGL_SWAP_OVERLAY14 0x00004000 -#define WGL_SWAP_OVERLAY15 0x00008000 -#define WGL_SWAP_OVERLAY2 0x00000004 -#define WGL_SWAP_OVERLAY3 0x00000008 -#define WGL_SWAP_OVERLAY4 0x00000010 -#define WGL_SWAP_OVERLAY5 0x00000020 -#define WGL_SWAP_OVERLAY6 0x00000040 -#define WGL_SWAP_OVERLAY7 0x00000080 -#define WGL_SWAP_OVERLAY8 0x00000100 -#define WGL_SWAP_OVERLAY9 0x00000200 -#define WGL_SWAP_UNDEFINED_ARB 0x202A -#define WGL_SWAP_UNDEFINED_EXT 0x202A -#define WGL_SWAP_UNDERLAY1 0x00010000 -#define WGL_SWAP_UNDERLAY10 0x02000000 -#define WGL_SWAP_UNDERLAY11 0x04000000 -#define WGL_SWAP_UNDERLAY12 0x08000000 -#define WGL_SWAP_UNDERLAY13 0x10000000 -#define WGL_SWAP_UNDERLAY14 0x20000000 -#define WGL_SWAP_UNDERLAY15 0x40000000 -#define WGL_SWAP_UNDERLAY2 0x00020000 -#define WGL_SWAP_UNDERLAY3 0x00040000 -#define WGL_SWAP_UNDERLAY4 0x00080000 -#define WGL_SWAP_UNDERLAY5 0x00100000 -#define WGL_SWAP_UNDERLAY6 0x00200000 -#define WGL_SWAP_UNDERLAY7 0x00400000 -#define WGL_SWAP_UNDERLAY8 0x00800000 -#define WGL_SWAP_UNDERLAY9 0x01000000 -#define WGL_TEXTURE_1D_ARB 0x2079 -#define WGL_TEXTURE_2D_ARB 0x207A -#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 -#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E -#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 -#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 -#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D -#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F -#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 -#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 -#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 -#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 -#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 -#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 -#define WGL_TEXTURE_FORMAT_ARB 0x2072 -#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 -#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 -#define WGL_TEXTURE_RGBA_ARB 0x2076 -#define WGL_TEXTURE_RGB_ARB 0x2075 -#define WGL_TEXTURE_TARGET_ARB 0x2073 -#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A -#define WGL_TRANSPARENT_ARB 0x200A -#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 -#define WGL_TRANSPARENT_EXT 0x200A -#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 -#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B -#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 -#define WGL_TRANSPARENT_VALUE_EXT 0x200B -#define WGL_TYPE_COLORINDEX_ARB 0x202C -#define WGL_TYPE_COLORINDEX_EXT 0x202C -#define WGL_TYPE_RGBA_ARB 0x202B -#define WGL_TYPE_RGBA_EXT 0x202B -#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 -#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 -#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 -#define WGL_UNIQUE_ID_NV 0x20CE -#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 -#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 -#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 -#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 -#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 -#define WGL_VIDEO_OUT_FIELD_1 0x20C9 -#define WGL_VIDEO_OUT_FIELD_2 0x20CA -#define WGL_VIDEO_OUT_FRAME 0x20C8 -#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB -#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC - -struct _GPU_DEVICE { - DWORD cb; - CHAR DeviceName[32]; - CHAR DeviceString[128]; - DWORD Flags; - RECT rcVirtualScreen; -}; -DECLARE_HANDLE(HPBUFFERARB); -DECLARE_HANDLE(HPBUFFEREXT); -DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); -DECLARE_HANDLE(HPVIDEODEV); -DECLARE_HANDLE(HPGPUNV); -DECLARE_HANDLE(HGPUNV); -DECLARE_HANDLE(HVIDEOINPUTDEVICENV); -typedef struct _GPU_DEVICE GPU_DEVICE; -typedef struct _GPU_DEVICE *PGPU_DEVICE; - -#define WGL_VERSION_1_0 1 -GLAD_API_CALL int GLAD_WGL_VERSION_1_0; -#define WGL_3DFX_multisample 1 -GLAD_API_CALL int GLAD_WGL_3DFX_multisample; -#define WGL_3DL_stereo_control 1 -GLAD_API_CALL int GLAD_WGL_3DL_stereo_control; -#define WGL_AMD_gpu_association 1 -GLAD_API_CALL int GLAD_WGL_AMD_gpu_association; -#define WGL_ARB_buffer_region 1 -GLAD_API_CALL int GLAD_WGL_ARB_buffer_region; -#define WGL_ARB_context_flush_control 1 -GLAD_API_CALL int GLAD_WGL_ARB_context_flush_control; -#define WGL_ARB_create_context 1 -GLAD_API_CALL int GLAD_WGL_ARB_create_context; -#define WGL_ARB_create_context_no_error 1 -GLAD_API_CALL int GLAD_WGL_ARB_create_context_no_error; -#define WGL_ARB_create_context_profile 1 -GLAD_API_CALL int GLAD_WGL_ARB_create_context_profile; -#define WGL_ARB_create_context_robustness 1 -GLAD_API_CALL int GLAD_WGL_ARB_create_context_robustness; -#define WGL_ARB_extensions_string 1 -GLAD_API_CALL int GLAD_WGL_ARB_extensions_string; -#define WGL_ARB_framebuffer_sRGB 1 -GLAD_API_CALL int GLAD_WGL_ARB_framebuffer_sRGB; -#define WGL_ARB_make_current_read 1 -GLAD_API_CALL int GLAD_WGL_ARB_make_current_read; -#define WGL_ARB_multisample 1 -GLAD_API_CALL int GLAD_WGL_ARB_multisample; -#define WGL_ARB_pbuffer 1 -GLAD_API_CALL int GLAD_WGL_ARB_pbuffer; -#define WGL_ARB_pixel_format 1 -GLAD_API_CALL int GLAD_WGL_ARB_pixel_format; -#define WGL_ARB_pixel_format_float 1 -GLAD_API_CALL int GLAD_WGL_ARB_pixel_format_float; -#define WGL_ARB_render_texture 1 -GLAD_API_CALL int GLAD_WGL_ARB_render_texture; -#define WGL_ARB_robustness_application_isolation 1 -GLAD_API_CALL int GLAD_WGL_ARB_robustness_application_isolation; -#define WGL_ARB_robustness_share_group_isolation 1 -GLAD_API_CALL int GLAD_WGL_ARB_robustness_share_group_isolation; -#define WGL_ATI_pixel_format_float 1 -GLAD_API_CALL int GLAD_WGL_ATI_pixel_format_float; -#define WGL_ATI_render_texture_rectangle 1 -GLAD_API_CALL int GLAD_WGL_ATI_render_texture_rectangle; -#define WGL_EXT_colorspace 1 -GLAD_API_CALL int GLAD_WGL_EXT_colorspace; -#define WGL_EXT_create_context_es2_profile 1 -GLAD_API_CALL int GLAD_WGL_EXT_create_context_es2_profile; -#define WGL_EXT_create_context_es_profile 1 -GLAD_API_CALL int GLAD_WGL_EXT_create_context_es_profile; -#define WGL_EXT_depth_float 1 -GLAD_API_CALL int GLAD_WGL_EXT_depth_float; -#define WGL_EXT_display_color_table 1 -GLAD_API_CALL int GLAD_WGL_EXT_display_color_table; -#define WGL_EXT_extensions_string 1 -GLAD_API_CALL int GLAD_WGL_EXT_extensions_string; -#define WGL_EXT_framebuffer_sRGB 1 -GLAD_API_CALL int GLAD_WGL_EXT_framebuffer_sRGB; -#define WGL_EXT_make_current_read 1 -GLAD_API_CALL int GLAD_WGL_EXT_make_current_read; -#define WGL_EXT_multisample 1 -GLAD_API_CALL int GLAD_WGL_EXT_multisample; -#define WGL_EXT_pbuffer 1 -GLAD_API_CALL int GLAD_WGL_EXT_pbuffer; -#define WGL_EXT_pixel_format 1 -GLAD_API_CALL int GLAD_WGL_EXT_pixel_format; -#define WGL_EXT_pixel_format_packed_float 1 -GLAD_API_CALL int GLAD_WGL_EXT_pixel_format_packed_float; -#define WGL_EXT_swap_control 1 -GLAD_API_CALL int GLAD_WGL_EXT_swap_control; -#define WGL_EXT_swap_control_tear 1 -GLAD_API_CALL int GLAD_WGL_EXT_swap_control_tear; -#define WGL_I3D_digital_video_control 1 -GLAD_API_CALL int GLAD_WGL_I3D_digital_video_control; -#define WGL_I3D_gamma 1 -GLAD_API_CALL int GLAD_WGL_I3D_gamma; -#define WGL_I3D_genlock 1 -GLAD_API_CALL int GLAD_WGL_I3D_genlock; -#define WGL_I3D_image_buffer 1 -GLAD_API_CALL int GLAD_WGL_I3D_image_buffer; -#define WGL_I3D_swap_frame_lock 1 -GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_lock; -#define WGL_I3D_swap_frame_usage 1 -GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_usage; -#define WGL_NV_DX_interop 1 -GLAD_API_CALL int GLAD_WGL_NV_DX_interop; -#define WGL_NV_DX_interop2 1 -GLAD_API_CALL int GLAD_WGL_NV_DX_interop2; -#define WGL_NV_copy_image 1 -GLAD_API_CALL int GLAD_WGL_NV_copy_image; -#define WGL_NV_delay_before_swap 1 -GLAD_API_CALL int GLAD_WGL_NV_delay_before_swap; -#define WGL_NV_float_buffer 1 -GLAD_API_CALL int GLAD_WGL_NV_float_buffer; -#define WGL_NV_gpu_affinity 1 -GLAD_API_CALL int GLAD_WGL_NV_gpu_affinity; -#define WGL_NV_multigpu_context 1 -GLAD_API_CALL int GLAD_WGL_NV_multigpu_context; -#define WGL_NV_multisample_coverage 1 -GLAD_API_CALL int GLAD_WGL_NV_multisample_coverage; -#define WGL_NV_present_video 1 -GLAD_API_CALL int GLAD_WGL_NV_present_video; -#define WGL_NV_render_depth_texture 1 -GLAD_API_CALL int GLAD_WGL_NV_render_depth_texture; -#define WGL_NV_render_texture_rectangle 1 -GLAD_API_CALL int GLAD_WGL_NV_render_texture_rectangle; -#define WGL_NV_swap_group 1 -GLAD_API_CALL int GLAD_WGL_NV_swap_group; -#define WGL_NV_vertex_array_range 1 -GLAD_API_CALL int GLAD_WGL_NV_vertex_array_range; -#define WGL_NV_video_capture 1 -GLAD_API_CALL int GLAD_WGL_NV_video_capture; -#define WGL_NV_video_output 1 -GLAD_API_CALL int GLAD_WGL_NV_video_output; -#define WGL_OML_sync_control 1 -GLAD_API_CALL int GLAD_WGL_OML_sync_control; - -typedef int(GLAD_API_PTR *PFNCHOOSEPIXELFORMATPROC)(HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd); -typedef int(GLAD_API_PTR *PFNDESCRIBEPIXELFORMATPROC)(HDC hdc, int ipfd, UINT cjpfd, - PIXELFORMATDESCRIPTOR *ppfd); -typedef UINT(GLAD_API_PTR *PFNGETENHMETAFILEPIXELFORMATPROC)(HENHMETAFILE hemf, UINT cbBuffer, - PIXELFORMATDESCRIPTOR *ppfd); -typedef int(GLAD_API_PTR *PFNGETPIXELFORMATPROC)(HDC hdc); -typedef BOOL(GLAD_API_PTR *PFNSETPIXELFORMATPROC)(HDC hdc, int ipfd, - const PIXELFORMATDESCRIPTOR *ppfd); -typedef BOOL(GLAD_API_PTR *PFNSWAPBUFFERSPROC)(HDC hdc); -typedef void *(GLAD_API_PTR *PFNWGLALLOCATEMEMORYNVPROC)(GLsizei size, GLfloat readfreq, - GLfloat writefreq, GLfloat priority); -typedef BOOL(GLAD_API_PTR *PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const HANDLE *pEvent, - const LPVOID *pAddress, - const DWORD *pSize, UINT count); -typedef BOOL(GLAD_API_PTR *PFNWGLBEGINFRAMETRACKINGI3DPROC)(void); -typedef GLboolean(GLAD_API_PTR *PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)(GLushort id); -typedef BOOL(GLAD_API_PTR *PFNWGLBINDSWAPBARRIERNVPROC)(GLuint group, GLuint barrier); -typedef BOOL(GLAD_API_PTR *PFNWGLBINDTEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)(UINT uVideoSlot, - HVIDEOINPUTDEVICENV hDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEODEVICENVPROC)(HDC hDc, unsigned int uVideoSlot, - HVIDEOOUTPUTDEVICENV hVideoDevice, - const int *piAttribList); -typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOIMAGENVPROC)(HPVIDEODEV hVideoDevice, - HPBUFFERARB hPbuffer, int iVideoBuffer); -typedef VOID(GLAD_API_PTR *PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)( - HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, - GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATARBPROC)(HDC hdc, const int *piAttribIList, - const FLOAT *pfAttribFList, - UINT nMaxFormats, int *piFormats, - UINT *nNumFormats); -typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATEXTPROC)(HDC hdc, const int *piAttribIList, - const FLOAT *pfAttribFList, - UINT nMaxFormats, int *piFormats, - UINT *nNumFormats); -typedef BOOL(GLAD_API_PTR *PFNWGLCOPYCONTEXTPROC)(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask); -typedef BOOL(GLAD_API_PTR *PFNWGLCOPYIMAGESUBDATANVPROC)( - HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, - GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, - GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); -typedef HDC(GLAD_API_PTR *PFNWGLCREATEAFFINITYDCNVPROC)(const HGPUNV *phGpuList); -typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)(UINT id); -typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(UINT id, - HGLRC hShareContext, - const int *attribList); -typedef HANDLE(GLAD_API_PTR *PFNWGLCREATEBUFFERREGIONARBPROC)(HDC hDC, int iLayerPlane, UINT uType); -typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTPROC)(HDC hDc); -typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC hDC, HGLRC hShareContext, - const int *attribList); -typedef GLboolean(GLAD_API_PTR *PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)(GLushort id); -typedef LPVOID(GLAD_API_PTR *PFNWGLCREATEIMAGEBUFFERI3DPROC)(HDC hDC, DWORD dwSize, UINT uFlags); -typedef HGLRC(GLAD_API_PTR *PFNWGLCREATELAYERCONTEXTPROC)(HDC hDc, int level); -typedef HPBUFFERARB(GLAD_API_PTR *PFNWGLCREATEPBUFFERARBPROC)(HDC hDC, int iPixelFormat, int iWidth, - int iHeight, const int *piAttribList); -typedef HPBUFFEREXT(GLAD_API_PTR *PFNWGLCREATEPBUFFEREXTPROC)(HDC hDC, int iPixelFormat, int iWidth, - int iHeight, const int *piAttribList); -typedef BOOL(GLAD_API_PTR *PFNWGLDXCLOSEDEVICENVPROC)(HANDLE hDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLDXLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, - HANDLE *hObjects); -typedef BOOL(GLAD_API_PTR *PFNWGLDXOBJECTACCESSNVPROC)(HANDLE hObject, GLenum access); -typedef HANDLE(GLAD_API_PTR *PFNWGLDXOPENDEVICENVPROC)(void *dxDevice); -typedef HANDLE(GLAD_API_PTR *PFNWGLDXREGISTEROBJECTNVPROC)(HANDLE hDevice, void *dxObject, - GLuint name, GLenum type, GLenum access); -typedef BOOL(GLAD_API_PTR *PFNWGLDXSETRESOURCESHAREHANDLENVPROC)(void *dxObject, - HANDLE shareHandle); -typedef BOOL(GLAD_API_PTR *PFNWGLDXUNLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, - HANDLE *hObjects); -typedef BOOL(GLAD_API_PTR *PFNWGLDXUNREGISTEROBJECTNVPROC)(HANDLE hDevice, HANDLE hObject); -typedef BOOL(GLAD_API_PTR *PFNWGLDELAYBEFORESWAPNVPROC)(HDC hDC, GLfloat seconds); -typedef BOOL(GLAD_API_PTR *PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)(HGLRC hglrc); -typedef VOID(GLAD_API_PTR *PFNWGLDELETEBUFFERREGIONARBPROC)(HANDLE hRegion); -typedef BOOL(GLAD_API_PTR *PFNWGLDELETECONTEXTPROC)(HGLRC oldContext); -typedef BOOL(GLAD_API_PTR *PFNWGLDELETEDCNVPROC)(HDC hdc); -typedef BOOL(GLAD_API_PTR *PFNWGLDESCRIBELAYERPLANEPROC)(HDC hDc, int pixelFormat, int layerPlane, - UINT nBytes, LAYERPLANEDESCRIPTOR *plpd); -typedef VOID(GLAD_API_PTR *PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)(GLushort id); -typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYIMAGEBUFFERI3DPROC)(HDC hDC, LPVOID pAddress); -typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFERARBPROC)(HPBUFFERARB hPbuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEFRAMELOCKI3DPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEGENLOCKI3DPROC)(HDC hDC); -typedef BOOL(GLAD_API_PTR *PFNWGLENABLEFRAMELOCKI3DPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLENABLEGENLOCKI3DPROC)(HDC hDC); -typedef BOOL(GLAD_API_PTR *PFNWGLENDFRAMETRACKINGI3DPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUDEVICESNVPROC)(HGPUNV hGpu, UINT iDeviceIndex, - PGPU_DEVICE lpGpuDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)(HDC hAffinityDC, UINT iGpuIndex, - HGPUNV *hGpu); -typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSNVPROC)(UINT iGpuIndex, HGPUNV *phGpu); -typedef UINT(GLAD_API_PTR *PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)( - HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList); -typedef int(GLAD_API_PTR *PFNWGLENUMERATEVIDEODEVICESNVPROC)(HDC hDc, - HVIDEOOUTPUTDEVICENV *phDeviceList); -typedef void(GLAD_API_PTR *PFNWGLFREEMEMORYNVPROC)(void *pointer); -typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT uRate); -typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT uDelay); -typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT uEdge); -typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEI3DPROC)(HDC hDC, UINT uSource); -typedef UINT(GLAD_API_PTR *PFNWGLGETCONTEXTGPUIDAMDPROC)(HGLRC hglrc); -typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)(void); -typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTCONTEXTPROC)(void); -typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTDCPROC)(void); -typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCARBPROC)(void); -typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCEXTPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, - int *piValue); -typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); -typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLGETFRAMEUSAGEI3DPROC)(float *pUsage); -typedef UINT(GLAD_API_PTR *PFNWGLGETGPUIDSAMDPROC)(UINT maxCount, UINT *ids); -typedef INT(GLAD_API_PTR *PFNWGLGETGPUINFOAMDPROC)(UINT id, INT property, GLenum dataType, - UINT size, void *data); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, USHORT *puRed, - USHORT *puGreen, USHORT *puBlue); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, - int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT *uRate); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT *uDelay); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT *uEdge); -typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEI3DPROC)(HDC hDC, UINT *uSource); -typedef int(GLAD_API_PTR *PFNWGLGETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, - int cEntries, COLORREF *pcr); -typedef BOOL(GLAD_API_PTR *PFNWGLGETMSCRATEOMLPROC)(HDC hdc, INT32 *numerator, INT32 *denominator); -typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer); -typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVARBPROC)(HDC hdc, int iPixelFormat, - int iLayerPlane, UINT nAttributes, - const int *piAttributes, - FLOAT *pfValues); -typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)(HDC hdc, int iPixelFormat, - int iLayerPlane, UINT nAttributes, - int *piAttributes, FLOAT *pfValues); -typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC hdc, int iPixelFormat, - int iLayerPlane, UINT nAttributes, - const int *piAttributes, - int *piValues); -typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)(HDC hdc, int iPixelFormat, - int iLayerPlane, UINT nAttributes, - int *piAttributes, int *piValues); -typedef PROC(GLAD_API_PTR *PFNWGLGETPROCADDRESSPROC)(LPCSTR lpszProc); -typedef int(GLAD_API_PTR *PFNWGLGETSWAPINTERVALEXTPROC)(void); -typedef BOOL(GLAD_API_PTR *PFNWGLGETSYNCVALUESOMLPROC)(HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc); -typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEODEVICENVPROC)(HDC hDC, int numDevices, - HPVIDEODEV *hVideoDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEOINFONVPROC)(HPVIDEODEV hpVideoDevice, - unsigned long *pulCounterOutputPbuffer, - unsigned long *pulCounterOutputVideo); -typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDFRAMELOCKI3DPROC)(BOOL *pFlag); -typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDGENLOCKI3DPROC)(HDC hDC, BOOL *pFlag); -typedef BOOL(GLAD_API_PTR *PFNWGLJOINSWAPGROUPNVPROC)(HDC hDC, GLuint group); -typedef GLboolean(GLAD_API_PTR *PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)(const GLushort *table, - GLuint length); -typedef BOOL(GLAD_API_PTR *PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)(HDC hDc, - HVIDEOINPUTDEVICENV hDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)(HGLRC hglrc); -typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTARBPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); -typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTEXTPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); -typedef BOOL(GLAD_API_PTR *PFNWGLMAKECURRENTPROC)(HDC hDc, HGLRC newContext); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYCURRENTCONTEXTNVPROC)(int iAttribute, int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMECOUNTNVPROC)(HDC hDC, GLuint *count); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMELOCKMASTERI3DPROC)(BOOL *pFlag); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMETRACKINGI3DPROC)(DWORD *pFrameCount, - DWORD *pMissedFrames, - float *pLastMissedUsage); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)(HDC hDC, UINT *uMaxLineDelay, - UINT *uMaxPixelDelay); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYMAXSWAPGROUPSNVPROC)(HDC hDC, GLuint *maxGroups, - GLuint *maxBarriers); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFERARBPROC)(HPBUFFERARB hPbuffer, int iAttribute, - int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer, int iAttribute, - int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYSWAPGROUPNVPROC)(HDC hDC, GLuint *group, GLuint *barrier); -typedef BOOL(GLAD_API_PTR *PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)(HDC hDc, - HVIDEOINPUTDEVICENV hDevice, - int iAttribute, int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLREALIZELAYERPALETTEPROC)(HDC hdc, int iLayerPlane, BOOL bRealize); -typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const LPVOID *pAddress, - UINT count); -typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer, HDC hDC); -typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer, HDC hDC); -typedef BOOL(GLAD_API_PTR *PFNWGLRELEASETEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)(HDC hDc, - HVIDEOINPUTDEVICENV hDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEODEVICENVPROC)(HPVIDEODEV hVideoDevice); -typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOIMAGENVPROC)(HPBUFFERARB hPbuffer, int iVideoBuffer); -typedef BOOL(GLAD_API_PTR *PFNWGLRESETFRAMECOUNTNVPROC)(HDC hDC); -typedef BOOL(GLAD_API_PTR *PFNWGLRESTOREBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, - int width, int height, int xSrc, - int ySrc); -typedef BOOL(GLAD_API_PTR *PFNWGLSAVEBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, int width, - int height); -typedef BOOL(GLAD_API_PTR *PFNWGLSENDPBUFFERTOVIDEONVPROC)(HPBUFFERARB hPbuffer, int iBufferType, - unsigned long *pulCounterPbuffer, - BOOL bBlock); -typedef BOOL(GLAD_API_PTR *PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, - const int *piValue); -typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, const USHORT *puRed, - const USHORT *puGreen, const USHORT *puBlue); -typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, - const int *piValue); -typedef int(GLAD_API_PTR *PFNWGLSETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, - int cEntries, const COLORREF *pcr); -typedef BOOL(GLAD_API_PTR *PFNWGLSETPBUFFERATTRIBARBPROC)(HPBUFFERARB hPbuffer, - const int *piAttribList); -typedef BOOL(GLAD_API_PTR *PFNWGLSETSTEREOEMITTERSTATE3DLPROC)(HDC hDC, UINT uState); -typedef BOOL(GLAD_API_PTR *PFNWGLSHARELISTSPROC)(HGLRC hrcSrvShare, HGLRC hrcSrvSource); -typedef INT64(GLAD_API_PTR *PFNWGLSWAPBUFFERSMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, - INT64 remainder); -typedef BOOL(GLAD_API_PTR *PFNWGLSWAPINTERVALEXTPROC)(int interval); -typedef BOOL(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSPROC)(HDC hdc, UINT fuFlags); -typedef INT64(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)(HDC hdc, INT fuPlanes, - INT64 target_msc, INT64 divisor, - INT64 remainder); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSAPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSWPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase, FLOAT deviation, - FLOAT extrusion, int format, - LPGLYPHMETRICSFLOAT lpgmf); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESAPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase, FLOAT deviation, - FLOAT extrusion, int format, - LPGLYPHMETRICSFLOAT lpgmf); -typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESWPROC)(HDC hDC, DWORD first, DWORD count, - DWORD listBase, FLOAT deviation, - FLOAT extrusion, int format, - LPGLYPHMETRICSFLOAT lpgmf); -typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, - INT64 remainder, INT64 *ust, INT64 *msc, - INT64 *sbc); -typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORSBCOMLPROC)(HDC hdc, INT64 target_sbc, INT64 *ust, - INT64 *msc, INT64 *sbc); - -GLAD_API_CALL PFNWGLALLOCATEMEMORYNVPROC glad_wglAllocateMemoryNV; -#define wglAllocateMemoryNV glad_wglAllocateMemoryNV -GLAD_API_CALL PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC glad_wglAssociateImageBufferEventsI3D; -#define wglAssociateImageBufferEventsI3D glad_wglAssociateImageBufferEventsI3D -GLAD_API_CALL PFNWGLBEGINFRAMETRACKINGI3DPROC glad_wglBeginFrameTrackingI3D; -#define wglBeginFrameTrackingI3D glad_wglBeginFrameTrackingI3D -GLAD_API_CALL PFNWGLBINDDISPLAYCOLORTABLEEXTPROC glad_wglBindDisplayColorTableEXT; -#define wglBindDisplayColorTableEXT glad_wglBindDisplayColorTableEXT -GLAD_API_CALL PFNWGLBINDSWAPBARRIERNVPROC glad_wglBindSwapBarrierNV; -#define wglBindSwapBarrierNV glad_wglBindSwapBarrierNV -GLAD_API_CALL PFNWGLBINDTEXIMAGEARBPROC glad_wglBindTexImageARB; -#define wglBindTexImageARB glad_wglBindTexImageARB -GLAD_API_CALL PFNWGLBINDVIDEOCAPTUREDEVICENVPROC glad_wglBindVideoCaptureDeviceNV; -#define wglBindVideoCaptureDeviceNV glad_wglBindVideoCaptureDeviceNV -GLAD_API_CALL PFNWGLBINDVIDEODEVICENVPROC glad_wglBindVideoDeviceNV; -#define wglBindVideoDeviceNV glad_wglBindVideoDeviceNV -GLAD_API_CALL PFNWGLBINDVIDEOIMAGENVPROC glad_wglBindVideoImageNV; -#define wglBindVideoImageNV glad_wglBindVideoImageNV -GLAD_API_CALL PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC glad_wglBlitContextFramebufferAMD; -#define wglBlitContextFramebufferAMD glad_wglBlitContextFramebufferAMD -GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATARBPROC glad_wglChoosePixelFormatARB; -#define wglChoosePixelFormatARB glad_wglChoosePixelFormatARB -GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATEXTPROC glad_wglChoosePixelFormatEXT; -#define wglChoosePixelFormatEXT glad_wglChoosePixelFormatEXT -GLAD_API_CALL PFNWGLCOPYIMAGESUBDATANVPROC glad_wglCopyImageSubDataNV; -#define wglCopyImageSubDataNV glad_wglCopyImageSubDataNV -GLAD_API_CALL PFNWGLCREATEAFFINITYDCNVPROC glad_wglCreateAffinityDCNV; -#define wglCreateAffinityDCNV glad_wglCreateAffinityDCNV -GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC glad_wglCreateAssociatedContextAMD; -#define wglCreateAssociatedContextAMD glad_wglCreateAssociatedContextAMD -GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC glad_wglCreateAssociatedContextAttribsAMD; -#define wglCreateAssociatedContextAttribsAMD glad_wglCreateAssociatedContextAttribsAMD -GLAD_API_CALL PFNWGLCREATEBUFFERREGIONARBPROC glad_wglCreateBufferRegionARB; -#define wglCreateBufferRegionARB glad_wglCreateBufferRegionARB -GLAD_API_CALL PFNWGLCREATECONTEXTATTRIBSARBPROC glad_wglCreateContextAttribsARB; -#define wglCreateContextAttribsARB glad_wglCreateContextAttribsARB -GLAD_API_CALL PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC glad_wglCreateDisplayColorTableEXT; -#define wglCreateDisplayColorTableEXT glad_wglCreateDisplayColorTableEXT -GLAD_API_CALL PFNWGLCREATEIMAGEBUFFERI3DPROC glad_wglCreateImageBufferI3D; -#define wglCreateImageBufferI3D glad_wglCreateImageBufferI3D -GLAD_API_CALL PFNWGLCREATEPBUFFERARBPROC glad_wglCreatePbufferARB; -#define wglCreatePbufferARB glad_wglCreatePbufferARB -GLAD_API_CALL PFNWGLCREATEPBUFFEREXTPROC glad_wglCreatePbufferEXT; -#define wglCreatePbufferEXT glad_wglCreatePbufferEXT -GLAD_API_CALL PFNWGLDXCLOSEDEVICENVPROC glad_wglDXCloseDeviceNV; -#define wglDXCloseDeviceNV glad_wglDXCloseDeviceNV -GLAD_API_CALL PFNWGLDXLOCKOBJECTSNVPROC glad_wglDXLockObjectsNV; -#define wglDXLockObjectsNV glad_wglDXLockObjectsNV -GLAD_API_CALL PFNWGLDXOBJECTACCESSNVPROC glad_wglDXObjectAccessNV; -#define wglDXObjectAccessNV glad_wglDXObjectAccessNV -GLAD_API_CALL PFNWGLDXOPENDEVICENVPROC glad_wglDXOpenDeviceNV; -#define wglDXOpenDeviceNV glad_wglDXOpenDeviceNV -GLAD_API_CALL PFNWGLDXREGISTEROBJECTNVPROC glad_wglDXRegisterObjectNV; -#define wglDXRegisterObjectNV glad_wglDXRegisterObjectNV -GLAD_API_CALL PFNWGLDXSETRESOURCESHAREHANDLENVPROC glad_wglDXSetResourceShareHandleNV; -#define wglDXSetResourceShareHandleNV glad_wglDXSetResourceShareHandleNV -GLAD_API_CALL PFNWGLDXUNLOCKOBJECTSNVPROC glad_wglDXUnlockObjectsNV; -#define wglDXUnlockObjectsNV glad_wglDXUnlockObjectsNV -GLAD_API_CALL PFNWGLDXUNREGISTEROBJECTNVPROC glad_wglDXUnregisterObjectNV; -#define wglDXUnregisterObjectNV glad_wglDXUnregisterObjectNV -GLAD_API_CALL PFNWGLDELAYBEFORESWAPNVPROC glad_wglDelayBeforeSwapNV; -#define wglDelayBeforeSwapNV glad_wglDelayBeforeSwapNV -GLAD_API_CALL PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC glad_wglDeleteAssociatedContextAMD; -#define wglDeleteAssociatedContextAMD glad_wglDeleteAssociatedContextAMD -GLAD_API_CALL PFNWGLDELETEBUFFERREGIONARBPROC glad_wglDeleteBufferRegionARB; -#define wglDeleteBufferRegionARB glad_wglDeleteBufferRegionARB -GLAD_API_CALL PFNWGLDELETEDCNVPROC glad_wglDeleteDCNV; -#define wglDeleteDCNV glad_wglDeleteDCNV -GLAD_API_CALL PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC glad_wglDestroyDisplayColorTableEXT; -#define wglDestroyDisplayColorTableEXT glad_wglDestroyDisplayColorTableEXT -GLAD_API_CALL PFNWGLDESTROYIMAGEBUFFERI3DPROC glad_wglDestroyImageBufferI3D; -#define wglDestroyImageBufferI3D glad_wglDestroyImageBufferI3D -GLAD_API_CALL PFNWGLDESTROYPBUFFERARBPROC glad_wglDestroyPbufferARB; -#define wglDestroyPbufferARB glad_wglDestroyPbufferARB -GLAD_API_CALL PFNWGLDESTROYPBUFFEREXTPROC glad_wglDestroyPbufferEXT; -#define wglDestroyPbufferEXT glad_wglDestroyPbufferEXT -GLAD_API_CALL PFNWGLDISABLEFRAMELOCKI3DPROC glad_wglDisableFrameLockI3D; -#define wglDisableFrameLockI3D glad_wglDisableFrameLockI3D -GLAD_API_CALL PFNWGLDISABLEGENLOCKI3DPROC glad_wglDisableGenlockI3D; -#define wglDisableGenlockI3D glad_wglDisableGenlockI3D -GLAD_API_CALL PFNWGLENABLEFRAMELOCKI3DPROC glad_wglEnableFrameLockI3D; -#define wglEnableFrameLockI3D glad_wglEnableFrameLockI3D -GLAD_API_CALL PFNWGLENABLEGENLOCKI3DPROC glad_wglEnableGenlockI3D; -#define wglEnableGenlockI3D glad_wglEnableGenlockI3D -GLAD_API_CALL PFNWGLENDFRAMETRACKINGI3DPROC glad_wglEndFrameTrackingI3D; -#define wglEndFrameTrackingI3D glad_wglEndFrameTrackingI3D -GLAD_API_CALL PFNWGLENUMGPUDEVICESNVPROC glad_wglEnumGpuDevicesNV; -#define wglEnumGpuDevicesNV glad_wglEnumGpuDevicesNV -GLAD_API_CALL PFNWGLENUMGPUSFROMAFFINITYDCNVPROC glad_wglEnumGpusFromAffinityDCNV; -#define wglEnumGpusFromAffinityDCNV glad_wglEnumGpusFromAffinityDCNV -GLAD_API_CALL PFNWGLENUMGPUSNVPROC glad_wglEnumGpusNV; -#define wglEnumGpusNV glad_wglEnumGpusNV -GLAD_API_CALL PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC glad_wglEnumerateVideoCaptureDevicesNV; -#define wglEnumerateVideoCaptureDevicesNV glad_wglEnumerateVideoCaptureDevicesNV -GLAD_API_CALL PFNWGLENUMERATEVIDEODEVICESNVPROC glad_wglEnumerateVideoDevicesNV; -#define wglEnumerateVideoDevicesNV glad_wglEnumerateVideoDevicesNV -GLAD_API_CALL PFNWGLFREEMEMORYNVPROC glad_wglFreeMemoryNV; -#define wglFreeMemoryNV glad_wglFreeMemoryNV -GLAD_API_CALL PFNWGLGENLOCKSAMPLERATEI3DPROC glad_wglGenlockSampleRateI3D; -#define wglGenlockSampleRateI3D glad_wglGenlockSampleRateI3D -GLAD_API_CALL PFNWGLGENLOCKSOURCEDELAYI3DPROC glad_wglGenlockSourceDelayI3D; -#define wglGenlockSourceDelayI3D glad_wglGenlockSourceDelayI3D -GLAD_API_CALL PFNWGLGENLOCKSOURCEEDGEI3DPROC glad_wglGenlockSourceEdgeI3D; -#define wglGenlockSourceEdgeI3D glad_wglGenlockSourceEdgeI3D -GLAD_API_CALL PFNWGLGENLOCKSOURCEI3DPROC glad_wglGenlockSourceI3D; -#define wglGenlockSourceI3D glad_wglGenlockSourceI3D -GLAD_API_CALL PFNWGLGETCONTEXTGPUIDAMDPROC glad_wglGetContextGPUIDAMD; -#define wglGetContextGPUIDAMD glad_wglGetContextGPUIDAMD -GLAD_API_CALL PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC glad_wglGetCurrentAssociatedContextAMD; -#define wglGetCurrentAssociatedContextAMD glad_wglGetCurrentAssociatedContextAMD -GLAD_API_CALL PFNWGLGETCURRENTREADDCARBPROC glad_wglGetCurrentReadDCARB; -#define wglGetCurrentReadDCARB glad_wglGetCurrentReadDCARB -GLAD_API_CALL PFNWGLGETCURRENTREADDCEXTPROC glad_wglGetCurrentReadDCEXT; -#define wglGetCurrentReadDCEXT glad_wglGetCurrentReadDCEXT -GLAD_API_CALL PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC glad_wglGetDigitalVideoParametersI3D; -#define wglGetDigitalVideoParametersI3D glad_wglGetDigitalVideoParametersI3D -GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGARBPROC glad_wglGetExtensionsStringARB; -#define wglGetExtensionsStringARB glad_wglGetExtensionsStringARB -GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGEXTPROC glad_wglGetExtensionsStringEXT; -#define wglGetExtensionsStringEXT glad_wglGetExtensionsStringEXT -GLAD_API_CALL PFNWGLGETFRAMEUSAGEI3DPROC glad_wglGetFrameUsageI3D; -#define wglGetFrameUsageI3D glad_wglGetFrameUsageI3D -GLAD_API_CALL PFNWGLGETGPUIDSAMDPROC glad_wglGetGPUIDsAMD; -#define wglGetGPUIDsAMD glad_wglGetGPUIDsAMD -GLAD_API_CALL PFNWGLGETGPUINFOAMDPROC glad_wglGetGPUInfoAMD; -#define wglGetGPUInfoAMD glad_wglGetGPUInfoAMD -GLAD_API_CALL PFNWGLGETGAMMATABLEI3DPROC glad_wglGetGammaTableI3D; -#define wglGetGammaTableI3D glad_wglGetGammaTableI3D -GLAD_API_CALL PFNWGLGETGAMMATABLEPARAMETERSI3DPROC glad_wglGetGammaTableParametersI3D; -#define wglGetGammaTableParametersI3D glad_wglGetGammaTableParametersI3D -GLAD_API_CALL PFNWGLGETGENLOCKSAMPLERATEI3DPROC glad_wglGetGenlockSampleRateI3D; -#define wglGetGenlockSampleRateI3D glad_wglGetGenlockSampleRateI3D -GLAD_API_CALL PFNWGLGETGENLOCKSOURCEDELAYI3DPROC glad_wglGetGenlockSourceDelayI3D; -#define wglGetGenlockSourceDelayI3D glad_wglGetGenlockSourceDelayI3D -GLAD_API_CALL PFNWGLGETGENLOCKSOURCEEDGEI3DPROC glad_wglGetGenlockSourceEdgeI3D; -#define wglGetGenlockSourceEdgeI3D glad_wglGetGenlockSourceEdgeI3D -GLAD_API_CALL PFNWGLGETGENLOCKSOURCEI3DPROC glad_wglGetGenlockSourceI3D; -#define wglGetGenlockSourceI3D glad_wglGetGenlockSourceI3D -GLAD_API_CALL PFNWGLGETMSCRATEOMLPROC glad_wglGetMscRateOML; -#define wglGetMscRateOML glad_wglGetMscRateOML -GLAD_API_CALL PFNWGLGETPBUFFERDCARBPROC glad_wglGetPbufferDCARB; -#define wglGetPbufferDCARB glad_wglGetPbufferDCARB -GLAD_API_CALL PFNWGLGETPBUFFERDCEXTPROC glad_wglGetPbufferDCEXT; -#define wglGetPbufferDCEXT glad_wglGetPbufferDCEXT -GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVARBPROC glad_wglGetPixelFormatAttribfvARB; -#define wglGetPixelFormatAttribfvARB glad_wglGetPixelFormatAttribfvARB -GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVEXTPROC glad_wglGetPixelFormatAttribfvEXT; -#define wglGetPixelFormatAttribfvEXT glad_wglGetPixelFormatAttribfvEXT -GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVARBPROC glad_wglGetPixelFormatAttribivARB; -#define wglGetPixelFormatAttribivARB glad_wglGetPixelFormatAttribivARB -GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVEXTPROC glad_wglGetPixelFormatAttribivEXT; -#define wglGetPixelFormatAttribivEXT glad_wglGetPixelFormatAttribivEXT -GLAD_API_CALL PFNWGLGETSWAPINTERVALEXTPROC glad_wglGetSwapIntervalEXT; -#define wglGetSwapIntervalEXT glad_wglGetSwapIntervalEXT -GLAD_API_CALL PFNWGLGETSYNCVALUESOMLPROC glad_wglGetSyncValuesOML; -#define wglGetSyncValuesOML glad_wglGetSyncValuesOML -GLAD_API_CALL PFNWGLGETVIDEODEVICENVPROC glad_wglGetVideoDeviceNV; -#define wglGetVideoDeviceNV glad_wglGetVideoDeviceNV -GLAD_API_CALL PFNWGLGETVIDEOINFONVPROC glad_wglGetVideoInfoNV; -#define wglGetVideoInfoNV glad_wglGetVideoInfoNV -GLAD_API_CALL PFNWGLISENABLEDFRAMELOCKI3DPROC glad_wglIsEnabledFrameLockI3D; -#define wglIsEnabledFrameLockI3D glad_wglIsEnabledFrameLockI3D -GLAD_API_CALL PFNWGLISENABLEDGENLOCKI3DPROC glad_wglIsEnabledGenlockI3D; -#define wglIsEnabledGenlockI3D glad_wglIsEnabledGenlockI3D -GLAD_API_CALL PFNWGLJOINSWAPGROUPNVPROC glad_wglJoinSwapGroupNV; -#define wglJoinSwapGroupNV glad_wglJoinSwapGroupNV -GLAD_API_CALL PFNWGLLOADDISPLAYCOLORTABLEEXTPROC glad_wglLoadDisplayColorTableEXT; -#define wglLoadDisplayColorTableEXT glad_wglLoadDisplayColorTableEXT -GLAD_API_CALL PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC glad_wglLockVideoCaptureDeviceNV; -#define wglLockVideoCaptureDeviceNV glad_wglLockVideoCaptureDeviceNV -GLAD_API_CALL PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC glad_wglMakeAssociatedContextCurrentAMD; -#define wglMakeAssociatedContextCurrentAMD glad_wglMakeAssociatedContextCurrentAMD -GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTARBPROC glad_wglMakeContextCurrentARB; -#define wglMakeContextCurrentARB glad_wglMakeContextCurrentARB -GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTEXTPROC glad_wglMakeContextCurrentEXT; -#define wglMakeContextCurrentEXT glad_wglMakeContextCurrentEXT -GLAD_API_CALL PFNWGLQUERYCURRENTCONTEXTNVPROC glad_wglQueryCurrentContextNV; -#define wglQueryCurrentContextNV glad_wglQueryCurrentContextNV -GLAD_API_CALL PFNWGLQUERYFRAMECOUNTNVPROC glad_wglQueryFrameCountNV; -#define wglQueryFrameCountNV glad_wglQueryFrameCountNV -GLAD_API_CALL PFNWGLQUERYFRAMELOCKMASTERI3DPROC glad_wglQueryFrameLockMasterI3D; -#define wglQueryFrameLockMasterI3D glad_wglQueryFrameLockMasterI3D -GLAD_API_CALL PFNWGLQUERYFRAMETRACKINGI3DPROC glad_wglQueryFrameTrackingI3D; -#define wglQueryFrameTrackingI3D glad_wglQueryFrameTrackingI3D -GLAD_API_CALL PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC glad_wglQueryGenlockMaxSourceDelayI3D; -#define wglQueryGenlockMaxSourceDelayI3D glad_wglQueryGenlockMaxSourceDelayI3D -GLAD_API_CALL PFNWGLQUERYMAXSWAPGROUPSNVPROC glad_wglQueryMaxSwapGroupsNV; -#define wglQueryMaxSwapGroupsNV glad_wglQueryMaxSwapGroupsNV -GLAD_API_CALL PFNWGLQUERYPBUFFERARBPROC glad_wglQueryPbufferARB; -#define wglQueryPbufferARB glad_wglQueryPbufferARB -GLAD_API_CALL PFNWGLQUERYPBUFFEREXTPROC glad_wglQueryPbufferEXT; -#define wglQueryPbufferEXT glad_wglQueryPbufferEXT -GLAD_API_CALL PFNWGLQUERYSWAPGROUPNVPROC glad_wglQuerySwapGroupNV; -#define wglQuerySwapGroupNV glad_wglQuerySwapGroupNV -GLAD_API_CALL PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC glad_wglQueryVideoCaptureDeviceNV; -#define wglQueryVideoCaptureDeviceNV glad_wglQueryVideoCaptureDeviceNV -GLAD_API_CALL PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC glad_wglReleaseImageBufferEventsI3D; -#define wglReleaseImageBufferEventsI3D glad_wglReleaseImageBufferEventsI3D -GLAD_API_CALL PFNWGLRELEASEPBUFFERDCARBPROC glad_wglReleasePbufferDCARB; -#define wglReleasePbufferDCARB glad_wglReleasePbufferDCARB -GLAD_API_CALL PFNWGLRELEASEPBUFFERDCEXTPROC glad_wglReleasePbufferDCEXT; -#define wglReleasePbufferDCEXT glad_wglReleasePbufferDCEXT -GLAD_API_CALL PFNWGLRELEASETEXIMAGEARBPROC glad_wglReleaseTexImageARB; -#define wglReleaseTexImageARB glad_wglReleaseTexImageARB -GLAD_API_CALL PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC glad_wglReleaseVideoCaptureDeviceNV; -#define wglReleaseVideoCaptureDeviceNV glad_wglReleaseVideoCaptureDeviceNV -GLAD_API_CALL PFNWGLRELEASEVIDEODEVICENVPROC glad_wglReleaseVideoDeviceNV; -#define wglReleaseVideoDeviceNV glad_wglReleaseVideoDeviceNV -GLAD_API_CALL PFNWGLRELEASEVIDEOIMAGENVPROC glad_wglReleaseVideoImageNV; -#define wglReleaseVideoImageNV glad_wglReleaseVideoImageNV -GLAD_API_CALL PFNWGLRESETFRAMECOUNTNVPROC glad_wglResetFrameCountNV; -#define wglResetFrameCountNV glad_wglResetFrameCountNV -GLAD_API_CALL PFNWGLRESTOREBUFFERREGIONARBPROC glad_wglRestoreBufferRegionARB; -#define wglRestoreBufferRegionARB glad_wglRestoreBufferRegionARB -GLAD_API_CALL PFNWGLSAVEBUFFERREGIONARBPROC glad_wglSaveBufferRegionARB; -#define wglSaveBufferRegionARB glad_wglSaveBufferRegionARB -GLAD_API_CALL PFNWGLSENDPBUFFERTOVIDEONVPROC glad_wglSendPbufferToVideoNV; -#define wglSendPbufferToVideoNV glad_wglSendPbufferToVideoNV -GLAD_API_CALL PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC glad_wglSetDigitalVideoParametersI3D; -#define wglSetDigitalVideoParametersI3D glad_wglSetDigitalVideoParametersI3D -GLAD_API_CALL PFNWGLSETGAMMATABLEI3DPROC glad_wglSetGammaTableI3D; -#define wglSetGammaTableI3D glad_wglSetGammaTableI3D -GLAD_API_CALL PFNWGLSETGAMMATABLEPARAMETERSI3DPROC glad_wglSetGammaTableParametersI3D; -#define wglSetGammaTableParametersI3D glad_wglSetGammaTableParametersI3D -GLAD_API_CALL PFNWGLSETPBUFFERATTRIBARBPROC glad_wglSetPbufferAttribARB; -#define wglSetPbufferAttribARB glad_wglSetPbufferAttribARB -GLAD_API_CALL PFNWGLSETSTEREOEMITTERSTATE3DLPROC glad_wglSetStereoEmitterState3DL; -#define wglSetStereoEmitterState3DL glad_wglSetStereoEmitterState3DL -GLAD_API_CALL PFNWGLSWAPBUFFERSMSCOMLPROC glad_wglSwapBuffersMscOML; -#define wglSwapBuffersMscOML glad_wglSwapBuffersMscOML -GLAD_API_CALL PFNWGLSWAPINTERVALEXTPROC glad_wglSwapIntervalEXT; -#define wglSwapIntervalEXT glad_wglSwapIntervalEXT -GLAD_API_CALL PFNWGLSWAPLAYERBUFFERSMSCOMLPROC glad_wglSwapLayerBuffersMscOML; -#define wglSwapLayerBuffersMscOML glad_wglSwapLayerBuffersMscOML -GLAD_API_CALL PFNWGLWAITFORMSCOMLPROC glad_wglWaitForMscOML; -#define wglWaitForMscOML glad_wglWaitForMscOML -GLAD_API_CALL PFNWGLWAITFORSBCOMLPROC glad_wglWaitForSbcOML; -#define wglWaitForSbcOML glad_wglWaitForSbcOML - -GLAD_API_CALL int gladLoadWGLUserPtr(HDC hdc, GLADuserptrloadfunc load, void *userptr); -GLAD_API_CALL int gladLoadWGL(HDC hdc, GLADloadfunc load); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/StgSharp.Native/sn-src/load_glfw.c b/src/StgSharp.Native/sn-src/load_glfw.c index e4f63f3f..3be4fab7 100644 --- a/src/StgSharp.Native/sn-src/load_glfw.c +++ b/src/StgSharp.Native/sn-src/load_glfw.c @@ -1,5 +1,4 @@ #include "StgSharpNative.h" -#include "glfw_function.h" SN_API void SN_DECL load_glfw_functions(GLFWFunctionTable *table) { diff --git a/src/StgSharp.Native/sn-src/sn_native.c b/src/StgSharp.Native/sn-src/sn_native.c deleted file mode 100644 index b1d0374b..00000000 --- a/src/StgSharp.Native/sn-src/sn_native.c +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef STB_IMAGE_IMPLEMENTATION -#define STB_IMAGE_IMPLEMENTATION -#endif -#include "StgSharpNative.h" -#include "gl.h" -#include "../lib/glfw/glfw3.h" -#include -#include - -extern GladGLContext *currentContext; -char infolog[512]; - -SN_API int SN_DECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, - char **logRef) -{ - int stat = 0; - context->GetShaderiv(shaderHandle, key, &stat); - if (!stat) { - context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog); - } - *logRef = infolog; - return stat; -} - -SN_API void SN_DECL initGL(int majorVersion, int minorVersion) -{ - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); -} - -SN_API GLFWglproc SN_DECL loadGlfuncDefault(char *procName) -{ - void *ret = glfwGetProcAddress(procName); - // printf("%llu\n", (uint64_t)ret); - if (ret == NULL) { - strcpy_s(infolog, 30, "Failed to load OpenGL api:"); - for (size_t i = 0; i < sizeof(procName); i++) { - infolog[30 + i] = procName[i]; - } - //printf("%s\n", infolog); - } - return (GLFWglproc)ret; -} - - -SN_API void SN_DECL loadImageData(char *location, Image *out, imageLoader loader) -{ - if (loader == NULL) { - loader = (imageLoader)stbi_load; - } - out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0); -} -SN_API void SN_DECL unloadImageData(Image *out) -{ - free(out->pixelPtr); -} - -SN_API char *SN_DECL readLog() -{ - infolog[511] = '\0'; - return infolog; -} diff --git a/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs b/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs deleted file mode 100644 index 40ece299..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs +++ /dev/null @@ -1,192 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="CsTypeMapper" -// Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using System; - -namespace GenerateGL.CodeGen -{ - internal static class CsTypeMapper - { - - public static string MapDelegateParameter( - GlParam param - ) - { - int pointerLevel = param.PointerLevel; - if (param.CType.Equals("GLchar", StringComparison.Ordinal) && pointerLevel > 0) { - return $"byte{new string('*', pointerLevel)}"; - } - - string mapped = MapType(param.CType); - if (pointerLevel > 0) - { - if (mapped == "void") { - return $"void{new string('*', pointerLevel)}"; - } - return $"{mapped}{new string('*', pointerLevel)}"; - } - return mapped; - } - - public static string MapDelegateReturn( - string cType, - int pointerLevel - ) - { - string mapped = MapType(cType); - if (pointerLevel > 0) { - return $"{mapped}{new string('*', pointerLevel)}"; - } - return mapped; - } - - public static string MapParameter( - GlParam param - ) - { - if (param.PointerLevel == 0) - { - if (param.CType.Equals("GLuint", StringComparison.Ordinal) && - LooksLikeHandle(param.Name) && - !param.IsPointer) { - return "GlHandle"; - } - } - - int pointerLevel = param.PointerLevel; - if (param.CType.Equals("GLchar", StringComparison.Ordinal) && pointerLevel > 0) { - return $"byte{new string('*', pointerLevel)}"; - } - - string mapped = MapType(param.CType); - if (pointerLevel > 0) - { - if (mapped == "void") { - return $"void{new string('*', pointerLevel)}"; - } - return $"{mapped}{new string('*', pointerLevel)}"; - } - return mapped; - } - - public static string MapReturn( - string cType, - int pointerLevel - ) - { - string mapped = MapType(cType); - if (pointerLevel > 0) { - return $"{mapped}{new string('*', pointerLevel)}"; - } - return mapped; - } - - public static bool IsHandleReturn( - GlCommand command - ) - { - if (command.ReturnPointerLevel != 0 || - !command.ReturnType.Equals("GLuint", StringComparison.Ordinal)) { - return false; - } - - return command.Name is "glCreateProgram" or "glCreateShader" or - "glCreateShaderProgramv"; - } - - public static bool TryMapPointerElement( - GlParam param, - out string elementType - ) - { - elementType = string.Empty; - if (param.PointerLevel != 1) { - return false; - } - - string mapped = MapType(param.CType); - if (mapped is "void") { - return false; - } - - elementType = mapped; - return true; - } - - private static bool LooksLikeHandle( - string name - ) - { - if (string.IsNullOrWhiteSpace(name)) { - return false; - } - - return name.Contains("program", StringComparison.OrdinalIgnoreCase) || - name.Contains("shader", StringComparison.OrdinalIgnoreCase) || - name.Contains("buffer", StringComparison.OrdinalIgnoreCase) || - name.Contains("texture", StringComparison.OrdinalIgnoreCase) || - name.Contains("framebuffer", StringComparison.OrdinalIgnoreCase) || - name.Contains("renderbuffer", StringComparison.OrdinalIgnoreCase) || - name.Contains("vertexarray", StringComparison.OrdinalIgnoreCase) || - name.Contains("query", StringComparison.OrdinalIgnoreCase) || - name.Contains("sampler", StringComparison.OrdinalIgnoreCase) || - name.Contains("transformfeedback", StringComparison.OrdinalIgnoreCase); - } - - private static string MapType( - string cType - ) - { - return cType switch - { - "GLenum" or "GLbitfield" => "uint", - "GLboolean" => "byte", - "GLuint" or "GLhandleARB" => "uint", - "GLint" or "GLsizei" or "GLfixed" => "int", - "GLint64" => "long", - "GLuint64" => "ulong", - "GLshort" => "short", - "GLbyte" => "sbyte", - "GLubyte" => "byte", - "GLushort" => "ushort", - "GLfloat" => "float", - "GLdouble" => "double", - "GLhalf" => "ushort", - "GLclampf" => "float", - "GLclampd" => "double", - "GLintptr" => "nint", - "GLsizeiptr" => "nint", - "GLchar" => "byte", - "GLsync" => "glSync", - "GLDEBUGPROC" => "IntPtr", - "void" => "void", - _ => throw new NotSupportedException($"Unsupported OpenGL C type: {cType}") - }; - } - - } -} diff --git a/test/StgSharp.GenerateGL/CodeGen/Generator.cs b/test/StgSharp.GenerateGL/CodeGen/Generator.cs deleted file mode 100644 index 66744ba7..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/Generator.cs +++ /dev/null @@ -1,532 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="Generator" -// Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using System; -using System.Collections.Frozen; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; - -namespace GenerateGL.CodeGen -{ - internal sealed class Generator - { - - private static readonly string[] TargetVersions = { - "3.3", "4.0", "4.1", "4.2", "4.3", "4.4", "4.5", "4.6" - }; - - private static readonly FrozenDictionary ReservedNames = - new Dictionary(StringComparer.Ordinal) { - { "string", "@string" }, { "class", "@class" }, { "namespace", "@namespace" }, { "checked", "@checked" }, { "unchecked", "@unchecked" }, { "ref", "@ref" }, { "out", "@out" }, { "in", "@in" }, { "object", "@object" }, { "event", "@event" }, { "params", "@params" }, { "base", "@base" }, { "this", "@this" }, { "void", "@void" }, { "int", "@int" }, { "uint", "@uint" }, { "long", "@long" }, { "ulong", "@ulong" }, { "short", "@short" }, { "ushort", "@ushort" }, { "float", "@float" }, { "double", "@double" }, { "decimal", "@decimal" }, { "bool", "@bool" }, { "byte", "@byte" }, { "sbyte", "@sbyte" }, { "char", "@char" }, { "struct", "@struct" }, { "public", "@public" }, { "private", "@private" }, { "protected", "@protected" }, { "internal", "@internal" }, { "fixed", "@fixed" } - }.ToFrozenDictionary(StringComparer.Ordinal); - - private readonly IReadOnlyDictionary _commands; - private readonly IReadOnlyList _features; - private readonly string _outputRoot; - - public Generator( - IReadOnlyDictionary commands, - IReadOnlyList features, - string outputRoot - ) - { - _commands = commands; - _features = features; - _outputRoot = outputRoot; - } - - public void Run() - { - if (Directory.Exists(_outputRoot)) { - Directory.Delete(_outputRoot, recursive:true); - } - Directory.CreateDirectory(_outputRoot); - List all = new List(); - List<(string Version, List Commands)> commandsByVersion = new(); - HashSet previous = new HashSet(StringComparer.Ordinal); - foreach (string v in TargetVersions) - { - IReadOnlyList cmdsUpTo = CollectCommandsUpToVersion(v); - List versionCmds = cmdsUpTo.Where(c => !previous.Contains(c.Name)) - .ToList(); - foreach (GlCommand cmd in versionCmds) { - previous.Add(cmd.Name); - } - all.AddRange(versionCmds); - commandsByVersion.Add((v, versionCmds)); - } - - IReadOnlyDictionary managedNames = ManagedNameResolver.Resolve( - all.Where(ShouldGenerateWrapper)); - foreach ((string version, List commands) in commandsByVersion) - { - WriteOpenGLFunctionFile(version, commands, managedNames); - UniformOverloadEmitter.Write(_outputRoot, version, commands); - } - WriteMergedGlContextFile(all); - WriteCommandHistoryFile(BuildCommandHistory()); - } - - private IReadOnlyDictionary> BuildCommandHistory() - { - Dictionary> history = new(StringComparer.Ordinal); - - IEnumerable ordered = _features.Where(f => Version.TryParse(f.Version, out _)) - .OrderBy(f => Version.Parse(f.Version)); - - foreach (GlFeature feature in ordered) - { - string version = feature.Version; - - foreach (string name in feature.RequiresCommands.Distinct(StringComparer.Ordinal)) - { - if (!_commands.ContainsKey(name) || ShouldSkip(name)) - { - continue; - } - - if (!history.TryGetValue(name, out List? list)) - { - list = new List(); - history[name] = list; - } - - if (list.Count == 0 || - list[^1].Action != CommandHistoryAction.Added || - list[^1].Version != version) { - list.Add(new CommandHistoryEntry(version, CommandHistoryAction.Added)); - } - } - - foreach (string name in feature.RemovedCommands.Distinct(StringComparer.Ordinal)) - { - if (!_commands.ContainsKey(name) || ShouldSkip(name)) - { - continue; - } - - if (!history.TryGetValue(name, out List? list)) - { - list = new List(); - history[name] = list; - } - - if (list.Count == 0 || - list[^1].Action != CommandHistoryAction.Removed || - list[^1].Version != version) { - list.Add(new CommandHistoryEntry(version, CommandHistoryAction.Removed)); - } - } - } - - return history; - } - - private IReadOnlyList CollectCommandsUpToVersion( - string version - ) - { - Version target = Version.Parse(version); - IEnumerable ordered = _features.Where(f => Version.TryParse(f.Version, out Version? fv) && - fv <= target) - .OrderBy(f => Version.Parse(f.Version)); - - HashSet active = new HashSet(StringComparer.Ordinal); - - foreach (GlFeature feature in ordered) - { - foreach (string name in feature.RequiresCommands.Distinct(StringComparer.Ordinal)) - { - if (_commands.ContainsKey(name)) { - active.Add(name); - } - } - - foreach (string name in feature.RemovedCommands.Distinct(StringComparer.Ordinal)) { - active.Remove(name); - } - } - - return active.Select(name => _commands.TryGetValue(name, out GlCommand? c) ? c : null) - .Where(c => c != null)! - .Cast() - .ToList(); - } - - private static string DelegateSignature( - string ret, - IReadOnlyList paramTypes - ) - { - if (paramTypes.Count == 0) { - return $"delegate*<{ret}>"; - } - return $"delegate*<{string.Join(", ", paramTypes)}, {ret}>"; - } - - private static string SafeName( - string name - ) - { - if (string.IsNullOrWhiteSpace(name)) { - return "arg"; - } - - if (ReservedNames.TryGetValue(name, out string? mapped)) { - return mapped; - } - - return name; - } - - private static bool ShouldSkip( - string name - ) - { - // No skipping; include legacy/fixed-function APIs as well. - return false; - } - - private static string TrimGlPrefix( - string name - ) - { - if (name.StartsWith("gl", StringComparison.Ordinal) && name.Length > 2) { - return name.Substring(2); - } - return name; - } - - private void WriteCommandHistoryFile( - IReadOnlyDictionary> history - ) - { - StringBuilder sb = new StringBuilder(); - sb.AppendLine("// "); - sb.AppendLine($"// Generated by StgSharp.GenerateGL on {DateTime.UtcNow.ToString("u", CultureInfo.InvariantCulture)}"); - sb.AppendLine("// Command availability history"); - sb.AppendLine("// "); - sb.AppendLine("using System;\nusing System.Collections.Frozen;\nusing System.Collections.Generic;\n"); - sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); - sb.AppendLine("{"); - sb.AppendLine(" internal enum CommandHistoryAction { Added, Removed }"); - sb.AppendLine(); - sb.AppendLine(" internal readonly record struct CommandHistoryEntry(string Version, CommandHistoryAction Action);"); - sb.AppendLine(); - sb.AppendLine(" internal static class GlCommandHistory"); - sb.AppendLine(" {"); - sb.AppendLine(" internal static readonly FrozenDictionary History = new Dictionary(StringComparer.Ordinal)"); - sb.AppendLine(" {"); - - foreach (KeyValuePair> kvp in history.OrderBy(k => k.Key, StringComparer.Ordinal)) - { - string events = string.Join(", ", kvp.Value - .OrderBy(v => Version.Parse(v.Version)) - .Select(v => $"new CommandHistoryEntry(\"{v.Version}\", CommandHistoryAction.{v.Action})")); - sb.AppendLine($" {{ \"{kvp.Key}\", new CommandHistoryEntry[] {{ {events} }} }},"); - } - - sb.AppendLine(" }.ToFrozenDictionary(StringComparer.Ordinal);"); - sb.AppendLine(" }"); - sb.AppendLine("}"); - - string fileName = Path.Combine(_outputRoot, "GlCommandHistory.g.cs"); - File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); - } - - private void WriteMergedGlContextFile( - IReadOnlyList commands - ) - { - List distinct = commands.Where(c => !ShouldSkip(c.Name)) - .GroupBy(c => c.Name, StringComparer.Ordinal) - .Select(g => g.First()) - .OrderBy(c => c.Name, StringComparer.Ordinal) - .ToList(); - - StringBuilder sb = new StringBuilder(); - sb.AppendLine("// "); - sb.AppendLine($"// Generated by StgSharp.GenerateGL on {DateTime.UtcNow.ToString("u", CultureInfo.InvariantCulture)}"); - sb.AppendLine("// Aggregated GL3+ commands"); - sb.AppendLine("// "); - sb.AppendLine("using System;\nusing System.Runtime.CompilerServices;\n"); - sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); - sb.AppendLine("{"); - sb.AppendLine(" public unsafe partial struct OpenglContext"); - sb.AppendLine(" {"); - foreach (GlCommand cmd in distinct) - { - string ret = CsTypeMapper.MapDelegateReturn(cmd.ReturnType, cmd.ReturnPointerLevel); - List paramTypes = new List(); - foreach (GlParam p in cmd.Parameters) - { - string mapped = CsTypeMapper.MapDelegateParameter(p); - paramTypes.Add(mapped); - } - string decl = DelegateSignature(ret, paramTypes); - sb.AppendLine($" internal unsafe {decl} {cmd.Name};"); - } - sb.AppendLine(" }"); - sb.AppendLine("}"); - - string fileName = Path.Combine(_outputRoot, "OpenglContext.g.cs"); - File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); - } - - private void WriteOpenGLFunctionFile( - string version, - IReadOnlyList commands, - IReadOnlyDictionary managedNames - ) - { - StringBuilder sb = new StringBuilder(); - sb.AppendLine("// "); - sb.AppendLine($"// Generated by StgSharp.GenerateGL on {DateTime.UtcNow.ToString("u", CultureInfo.InvariantCulture)}"); - sb.AppendLine($"// Version: {version}"); - sb.AppendLine("// "); - sb.AppendLine("using System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing StgSharp.Graphics.OpenGL;\n"); - sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); - sb.AppendLine("{"); - sb.AppendLine(" public unsafe partial class OpenGLFunction"); - sb.AppendLine(" {"); - foreach (GlCommand cmd in commands.Where(ShouldGenerateWrapper) - .OrderBy(c => c!.Name, StringComparer.Ordinal)) - { - bool returnsHandle = CsTypeMapper.IsHandleReturn(cmd); - string ret = returnsHandle - ? "GlHandle" - : CsTypeMapper.MapReturn(cmd.ReturnType, cmd.ReturnPointerLevel); - string rawName = cmd.Name; // original glXxx - string methodName = managedNames[rawName]; - ManagedCommandPlan commandPlan = ManagedCommandPlan.Create(cmd); - List paramList = new List(); - List callArgs = new List(); - List<(string Type,string Name,bool IsOut)> pinned = new(); - foreach (ManagedParameterPlan parameterPlan in commandPlan.PublicParameters) - { - GlParam p = parameterPlan.Source; - string pname = SafeName(p.Name); - paramList.Add($"{parameterPlan.PublicType} {pname}"); - if (parameterPlan.IsSpan) - { - pinned.Add((parameterPlan.ElementType!, pname, false)); - } else if (parameterPlan.Kind == ManagedParameterKind.Out) { - pinned.Add((parameterPlan.ElementType!, pname, true)); - } - } - foreach (GlParam p in cmd.Parameters) - { - string pname = SafeName(p.Name); - if (commandPlan.DerivedLengthSources.TryGetValue( - p.Name, out string? sourceSpanName)) - { - string nativeType = CsTypeMapper.MapParameter(p); - callArgs.Add($"checked(({nativeType}){SafeName(sourceSpanName)}.Length)"); - continue; - } - - ManagedParameterPlan parameterPlan = commandPlan.GetParameter(p.Name); - if (parameterPlan.IsSpan || parameterPlan.Kind == ManagedParameterKind.Out) - { - callArgs.Add($"{pname}Ptr"); - } else if (parameterPlan.PublicType == "GlHandle") - { - callArgs.Add($"{pname}.Value"); - } else - { - callArgs.Add(pname); - } - } - string signature = string.Join(", ", paramList); - string call = string.Join(", ", callArgs); - sb.AppendLine($" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); - sb.AppendLine($" public {ret} {methodName}({signature})"); - sb.AppendLine(" {"); - foreach ((string _, string name, bool isOut) in pinned.Where(p => p.IsOut)) { - sb.AppendLine($" {name} = default;"); - } - AppendSpanLengthGuards(sb, cmd, commandPlan); - string prefix = ret == "void" ? string.Empty : "return "; - string callExpression = $"Context.{rawName}({call})"; - if (returnsHandle) { - callExpression = $"GlHandle.Create({callExpression})"; - } - if (pinned.Count == 0) - { - sb.AppendLine($" {prefix}{callExpression};"); - } else - { - string indent = " "; - foreach ((string Type, string Name, bool IsOut) pin in pinned) - { - string pinSource = pin.IsOut ? $"&{pin.Name}" : pin.Name; - sb.AppendLine($"{indent}fixed ({pin.Type}* {pin.Name}Ptr = {pinSource})"); - sb.AppendLine($"{indent}{{"); - indent += " "; - } - sb.AppendLine($"{indent}{prefix}{callExpression};"); - for (int i = 0; i < pinned.Count; i++) - { - indent = indent.Substring(0, indent.Length - 4); - sb.AppendLine($"{indent}}}"); - } - } - sb.AppendLine(" }"); - sb.AppendLine(); - } - sb.AppendLine(" }"); - sb.AppendLine("}"); - - string fileName = Path.Combine( - _outputRoot, - $"OpenGLFunction.Raw.v{version.Replace('.', '_')}.g.cs"); - File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); - } - - private static void AppendSpanLengthGuards( - StringBuilder sb, - GlCommand command, - ManagedCommandPlan plan - ) - { - foreach ((string lengthName, string sourceName) in plan.DerivedLengthSources) - { - foreach (ManagedParameterPlan related in command.Parameters - .Select(p => plan.GetParameter(p.Name)) - .Where(p => p.IsSpan && p.Source.Length == lengthName && - p.Source.Name != sourceName)) - { - string relatedName = SafeName(related.Source.Name); - string safeSourceName = SafeName(sourceName); - sb.AppendLine($" if ({relatedName}.Length != {safeSourceName}.Length) {{"); - sb.AppendLine($" throw new ArgumentException(\"Span lengths controlled by {lengthName} must match.\", nameof({relatedName}));"); - sb.AppendLine(" }"); - } - } - - foreach (ManagedParameterPlan parameter in command.Parameters - .Select(p => plan.GetParameter(p.Name)).Where(p => p.IsSpan)) - { - string? expectedLength = BuildExpectedLengthExpression(parameter.Source, plan); - if (expectedLength is null) { - continue; - } - - string parameterName = SafeName(parameter.Source.Name); - sb.AppendLine($" if ({parameterName}.Length < {expectedLength}) {{"); - sb.AppendLine($" throw new ArgumentException(\"Span is shorter than the OpenGL length expression '{parameter.Source.Length}'.\", nameof({parameterName}));"); - sb.AppendLine(" }"); - } - } - - private static string? BuildExpectedLengthExpression( - GlParam parameter, - ManagedCommandPlan plan - ) - { - string length = parameter.Length?.Replace(" ", string.Empty, - StringComparison.Ordinal) ?? string.Empty; - if (length.Length == 0 || length.StartsWith("COMPSIZE(", StringComparison.Ordinal) || - plan.DerivedLengthSources.ContainsKey(length)) { - return null; - } - - if (int.TryParse(length, NumberStyles.None, CultureInfo.InvariantCulture, - out int constantLength)) { - return constantLength.ToString(CultureInfo.InvariantCulture); - } - - ManagedParameterPlan? scalar = plan.PublicParameters.FirstOrDefault(p => - p.Source.PointerLevel == 0 && p.Source.Name == length); - if (scalar is not null) { - return $"checked((int){SafeName(length)})"; - } - - Match multiply = Regex.Match( - length, "^(?[A-Za-z_][A-Za-z0-9_]*)\\*(?[0-9]+)$", - RegexOptions.CultureInvariant); - if (!multiply.Success) { - multiply = Regex.Match( - length, "^(?[0-9]+)\\*(?[A-Za-z_][A-Za-z0-9_]*)$", - RegexOptions.CultureInvariant); - } - if (multiply.Success) { - return $"checked((int){SafeName(multiply.Groups["name"].Value)} * {multiply.Groups["factor"].Value})"; - } - - Match divide = Regex.Match( - length, "^(?[A-Za-z_][A-Za-z0-9_]*)/(?[0-9]+)$", - RegexOptions.CultureInvariant); - return divide.Success - ? $"checked((int){SafeName(divide.Groups["name"].Value)} / {divide.Groups["divisor"].Value})" - : null; - } - - private bool ShouldGenerateWrapper( - GlCommand command - ) - { - if (UniformOverloadEmitter.IsSetterCommand(command)) { - return false; - } - - return !IsRedundantVertexAttribVectorCommand(command); - } - - private bool IsRedundantVertexAttribVectorCommand( - GlCommand command - ) - { - string name = command.Name; - if (!name.StartsWith("glVertexAttrib", StringComparison.Ordinal) || - !name.EndsWith('v')) { - return false; - } - - string scalarCommandName = name.Substring(0, name.Length - 1); - return _commands.ContainsKey(scalarCommandName); - } - - private enum CommandHistoryAction - { - - Added, - Removed - - } - - private readonly record struct CommandHistoryEntry( - string Version, - CommandHistoryAction Action - ); - - } -} diff --git a/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs b/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs deleted file mode 100644 index 050fafd0..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs +++ /dev/null @@ -1,185 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="GlXmlParser" -// Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Linq; -using System.Xml.Linq; - -namespace GenerateGL.CodeGen -{ - internal static class GlXmlParser - { - - public static (IReadOnlyDictionary Commands, IReadOnlyList Features) Parse( - string xmlPath - ) - { - XDocument doc = XDocument.Load(xmlPath, LoadOptions.PreserveWhitespace); - Dictionary commands = ParseCommands(doc); - List features = ParseFeatures(doc); - return (commands, features); - } - - private static string BuildCType( - XElement element - ) - { - return BuildCType(element, out _, out _, out _); - } - - private static string BuildCType( - XElement element, - out int pointerLevel, - out bool isPointer, - out bool isConst - ) - { - // CType is usually text parts + - IEnumerable parts = element.Nodes() - .Select(n => n switch - { - XText t => t.Value, - XElement el when el.Name == "ptype" => el.Value, - _ => string.Empty - }); - string raw = string.Concat(parts).Trim(); - pointerLevel = raw.Count(ch => ch == '*'); - isPointer = pointerLevel > 0; - isConst = raw.Contains("const", StringComparison.OrdinalIgnoreCase); - string cleaned = raw.Replace("const", string.Empty, StringComparison.OrdinalIgnoreCase) - .Replace("*", string.Empty) - .Trim(); - return cleaned; - } - - private static Dictionary ParseCommands( - XDocument doc - ) - { - Dictionary dict = new Dictionary(StringComparer.Ordinal); - IEnumerable commandElements = doc.Root?.Element("commands")?.Elements("command") ?? - Enumerable.Empty(); - foreach (XElement cmd in commandElements) - { - XElement? proto = cmd.Element("proto"); - if (proto is null) - { - continue; - } - - string name = proto.Element("name")?.Value ?? string.Empty; - string returnType = BuildCType(proto, out int retPtrLevel, out _, - out bool retIsConst); - - List parameters = new List(); - foreach (XElement p in cmd.Elements("param")) - { - string pName = p.Element("name")?.Value ?? string.Empty; - string cType = BuildCType(p, out int pointerLevel, out _, out bool isConst); - string? length = p.Attribute("len")?.Value; - parameters.Add(new GlParam(pName, cType, pointerLevel, isConst, length)); - } - - if (!string.IsNullOrEmpty(name)) { - dict[name] = new GlCommand(name, returnType, retPtrLevel, retIsConst, - parameters); - } - } - return dict; - } - - private static List ParseFeatures( - XDocument doc - ) - { - List list = new List(); - IEnumerable featureElements = doc.Root?.Elements("feature") ?? - Enumerable.Empty(); - foreach (XElement feature in featureElements) - { - string? api = feature.Attribute("api")?.Value; - if (!string.Equals(api, "gl", StringComparison.Ordinal)) - { - continue; - } - - string? profile = feature.Attribute("profile")?.Value; - - // Only core (or no profile for legacy) to stay aligned with core profile - if (!string.IsNullOrEmpty(profile) && - !string.Equals(profile, "core", StringComparison.Ordinal)) - { - continue; - } - - string version = feature.Attribute("number")?.Value ?? string.Empty; - List requires = new List(); - foreach (XElement req in feature.Elements("require")) - { - string? reqProfile = req.Attribute("profile")?.Value; - if (!string.IsNullOrEmpty(reqProfile) && - !string.Equals(reqProfile, "core", StringComparison.Ordinal)) - { - continue; - } - - foreach (XElement cmd in req.Elements("command")) - { - string? name = cmd.Attribute("name")?.Value; - if (!string.IsNullOrEmpty(name)) { - requires.Add(name); - } - } - } - - List removes = new List(); - foreach (XElement rem in feature.Elements("remove")) - { - string? remProfile = rem.Attribute("profile")?.Value; - if (!string.IsNullOrEmpty(remProfile) && - !string.Equals(remProfile, "core", StringComparison.Ordinal)) - { - continue; - } - - foreach (XElement cmd in rem.Elements("command")) - { - string? name = cmd.Attribute("name")?.Value; - if (!string.IsNullOrEmpty(name)) { - removes.Add(name); - } - } - } - - list.Add(new GlFeature(version, requires, removes)); - } - return list; - } - - } -} diff --git a/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs b/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs deleted file mode 100644 index 62c26d19..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs +++ /dev/null @@ -1,140 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="ManagedNameResolver" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; - -namespace GenerateGL.CodeGen -{ - internal static partial class ManagedNameResolver - { - - private static readonly HashSet TypedSuffixFamilies = new( - StringComparer.Ordinal) { - "ClearBuffer", "ClearNamedFramebuffer", "GetBufferParameter", - "GetNamedBufferParameter", "GetQueryBufferObject", "GetQueryObject", - "GetSamplerParameter", "GetTexLevelParameter", "GetTexParameter", - "GetTextureLevelParameter", "GetTextureParameter", "GetUniform", "GetnUniform", - "GetVertexAttrib", "PatchParameter", "PixelStore", "PointParameter", - "SamplerParameter", "TexParameter", "TextureParameter" - }; - - private static readonly Dictionary ExactCandidates = - new Dictionary(StringComparer.Ordinal) { - { "BlendEquationi", [ "BlendEquation" ] }, - { "BlendEquationSeparatei", [ "BlendEquationSeparate" ] }, - { "BlendFunci", [ "BlendFunc" ] }, - { "BlendFuncSeparatei", [ "BlendFuncSeparate" ] }, - { "ClearDepthf", [ "ClearDepth" ] }, - { "ColorMaski", [ "ColorMask" ] }, - { "DepthRangef", [ "DepthRange" ] }, - { "Disablei", [ "Disable" ] }, - { "Enablei", [ "Enable" ] }, - { "FramebufferParameteri", [ "FramebufferParameter" ] }, - { "GetStringi", [ "GetString" ] }, - { "IsEnabledi", [ "IsEnabled" ] }, - { "NamedFramebufferParameteri", [ "NamedFramebufferParameter" ] }, - { "ProgramParameteri", [ "ProgramParameter" ] }, - { "ScissorIndexedv", [ "ScissorIndexed" ] }, - { "ViewportIndexedf", [ "ViewportIndexed" ] }, - { "ViewportIndexedfv", [ "ViewportIndexed" ] } - }; - - public static IReadOnlyDictionary Resolve( - IEnumerable commands - ) - { - Dictionary result = new(StringComparer.Ordinal); - HashSet usedSignatures = new(StringComparer.Ordinal); - - foreach (GlCommand command in commands.OrderBy(c => c.Name, StringComparer.Ordinal)) - { - string signature = BuildParameterSignature(command); - foreach (string candidate in GetCandidates(command.Name)) - { - if (usedSignatures.Add($"{candidate}({signature})")) - { - result.Add(command.Name, candidate); - break; - } - } - } - - return result; - } - - private static string BuildParameterSignature( - GlCommand command - ) - { - ManagedCommandPlan plan = ManagedCommandPlan.Create(command); - return string.Join(",", plan.PublicParameters.Select(p => p.PublicType)); - } - - private static IEnumerable GetCandidates( - string glName - ) - { - string name = TrimGlPrefix(glName); - - Match vertexAttrib = VertexAttribRegex().Match(name); - if (vertexAttrib.Success) - { - string stem = vertexAttrib.Groups[1].Value; - string dimension = vertexAttrib.Groups[2].Value; - bool normalized = vertexAttrib.Groups[3].Success; - yield return normalized ? $"{stem}Normalized" : stem; - yield return normalized ? $"{stem}{dimension}Normalized" : $"{stem}{dimension}"; - yield return name; - yield break; - } - - Match typed = TypedSuffixRegex().Match(name); - if (typed.Success && TypedSuffixFamilies.Contains(typed.Groups[1].Value)) - { - string stem = typed.Groups[1].Value; - string suffix = typed.Groups[2].Value; - if (suffix.StartsWith('I')) { - yield return $"{stem}I"; - } - yield return stem; - yield return name; - yield break; - } - - if (ExactCandidates.TryGetValue(name, out string[]? candidates)) - { - foreach (string candidate in candidates) { - yield return candidate; - } - } - - yield return name; - } - - private static string TrimGlPrefix( - string name - ) - { - return name.StartsWith("gl", StringComparison.Ordinal) && name.Length > 2 - ? name.Substring(2) - : name; - } - - [GeneratedRegex("^(VertexAttrib(?:I|L|P)?)([1-4])(N)?(?:ui|ub|us|i|b|s|f|d)(v)?$", - RegexOptions.CultureInvariant)] - private static partial Regex VertexAttribRegex(); - - [GeneratedRegex("^(.+?)(Iuiv|Iiv|ui64v|i64v|uiv|ui|iv|fi|i|fv|f|dv|d)$", - RegexOptions.CultureInvariant)] - private static partial Regex TypedSuffixRegex(); - - } -} diff --git a/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs b/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs deleted file mode 100644 index c79caafb..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs +++ /dev/null @@ -1,138 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="ManagedParameterPlanner" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Linq; - -namespace GenerateGL.CodeGen -{ - internal enum ManagedParameterKind - { - - Value, - RawPointer, - ReadOnlySpan, - Span, - Out - - } - - internal sealed record ManagedParameterPlan( - GlParam Source, - string PublicType, - ManagedParameterKind Kind, - string? ElementType - ) - { - - public bool IsSpan => Kind is ManagedParameterKind.ReadOnlySpan or - ManagedParameterKind.Span; - - } - - internal sealed class ManagedCommandPlan - { - - private readonly Dictionary _allParameters; - private readonly Dictionary _derivedLengthSources; - - private ManagedCommandPlan( - IReadOnlyList publicParameters, - Dictionary allParameters, - Dictionary derivedLengthSources - ) - { - PublicParameters = publicParameters; - _allParameters = allParameters; - _derivedLengthSources = derivedLengthSources; - } - - public IReadOnlyList PublicParameters { get; } - - public IReadOnlyDictionary DerivedLengthSources => - _derivedLengthSources; - - public static ManagedCommandPlan Create( - GlCommand command - ) - { - Dictionary all = new(StringComparer.Ordinal); - foreach (GlParam parameter in command.Parameters) - { - ManagedParameterPlan plan; - if (CsTypeMapper.TryMapPointerElement(parameter, out string elementType) && - (parameter.IsConst || !string.IsNullOrWhiteSpace(parameter.Length) || - command.Name.StartsWith("glGet", StringComparison.Ordinal))) - { - if (!parameter.IsConst && parameter.Length == "1") - { - plan = new ManagedParameterPlan( - parameter, $"out {elementType}", ManagedParameterKind.Out, - elementType); - } else - { - ManagedParameterKind kind = parameter.IsConst - ? ManagedParameterKind.ReadOnlySpan - : ManagedParameterKind.Span; - string container = parameter.IsConst ? "ReadOnlySpan" : "Span"; - plan = new ManagedParameterPlan( - parameter, $"{container}<{elementType}>", kind, elementType); - } - } else - { - string mapped = CsTypeMapper.MapParameter(parameter); - ManagedParameterKind kind = parameter.PointerLevel == 0 - ? ManagedParameterKind.Value - : ManagedParameterKind.RawPointer; - plan = new ManagedParameterPlan(parameter, mapped, kind, null); - } - all.Add(parameter.Name, plan); - } - - Dictionary derivedLengths = new(StringComparer.Ordinal); - foreach (GlParam scalar in command.Parameters.Where(p => p.PointerLevel == 0)) - { - List spans = command.Parameters - .Select(p => all[p.Name]) - .Where(p => p.IsSpan && - string.Equals(p.Source.Length, scalar.Name, - StringComparison.Ordinal)) - .ToList(); - if (spans.Count == 0) { - continue; - } - - bool lengthAlsoControlsRawPointer = command.Parameters - .Select(p => all[p.Name]).Any(p => - p.Kind == ManagedParameterKind.RawPointer && - string.Equals(p.Source.Length, scalar.Name, StringComparison.Ordinal)); - if (lengthAlsoControlsRawPointer) { - continue; - } - - string scalarType = all[scalar.Name].PublicType; - if (scalarType is not ("int" or "uint" or "nint" or "nuint")) { - continue; - } - - derivedLengths.Add(scalar.Name, spans[0].Source.Name); - } - - IReadOnlyList publicParameters = command.Parameters - .Where(p => !derivedLengths.ContainsKey(p.Name)) - .Select(p => all[p.Name]) - .ToArray(); - return new ManagedCommandPlan(publicParameters, all, derivedLengths); - } - - public ManagedParameterPlan GetParameter( - string name - ) => _allParameters[name]; - - } -} diff --git a/test/StgSharp.GenerateGL/CodeGen/Models.cs b/test/StgSharp.GenerateGL/CodeGen/Models.cs deleted file mode 100644 index 5b0b067e..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/Models.cs +++ /dev/null @@ -1,58 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="Models" -// Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using System.Collections.Generic; - -namespace GenerateGL.CodeGen -{ - internal sealed record GlCommand( - string Name, - string ReturnType, - int ReturnPointerLevel, - bool ReturnIsConst, - IReadOnlyList Parameters - ); - - internal sealed record GlParam( - string Name, - string CType, - int PointerLevel, - bool IsConst, - string? Length - ) - { - - public bool IsPointer => PointerLevel > 0; - - } - - internal sealed record GlFeature( - string Version, - IReadOnlyList RequiresCommands, - IReadOnlyList RemovedCommands - ); -} diff --git a/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs b/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs deleted file mode 100644 index 40408ad6..00000000 --- a/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs +++ /dev/null @@ -1,219 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="UniformOverloadEmitter" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; - -#pragma warning disable CA1305 - -namespace GenerateGL.CodeGen -{ - internal static partial class UniformOverloadEmitter - { - - public static bool IsValueCommand( - GlCommand command - ) - { - return ValueCommandRegex().IsMatch(command.Name); - } - - public static bool IsSetterCommand( - GlCommand command - ) - { - return IsValueCommand(command) || MatrixCommandRegex().IsMatch(command.Name); - } - - public static void Write( - string outputRoot, - string version, - IReadOnlyList commands - ) - { - List valueCommands = commands.Where(IsValueCommand) - .OrderBy(c => c.Name, StringComparer.Ordinal) - .ToList(); - List matrixConvenienceCommands = commands - .Where(c => Matrix4FloatCommandRegex().IsMatch(c.Name)) - .OrderBy(c => c.Name, StringComparer.Ordinal) - .ToList(); - - if (valueCommands.Count == 0 && matrixConvenienceCommands.Count == 0) { - return; - } - - StringBuilder sb = new(); - sb.AppendLine("// "); - sb.AppendLine($"// Generated by StgSharp.GenerateGL on {DateTime.UtcNow.ToString("u", CultureInfo.InvariantCulture)}"); - sb.AppendLine($"// Uniform overloads introduced in OpenGL {version}"); - sb.AppendLine("// "); - sb.AppendLine("using System;"); - sb.AppendLine("using System.Runtime.CompilerServices;"); - sb.AppendLine("using StgSharp.Mathematics.Graphics;"); - sb.AppendLine(); - sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); - sb.AppendLine("{"); - sb.AppendLine(" public unsafe partial class OpenGLFunction"); - sb.AppendLine(" {"); - - foreach (GlCommand command in valueCommands) { - EmitValueOverload(sb, command); - } - foreach (GlCommand command in valueCommands.Where(IsFloatVectorCommand)) { - EmitVectorConvenienceOverload(sb, command); - } - foreach (GlCommand command in matrixConvenienceCommands) { - EmitMatrixConvenienceOverload(sb, command); - } - - sb.AppendLine(" }"); - sb.AppendLine("}"); - - string fileName = Path.Combine( - outputRoot, - $"OpenGLFunction.Uniform.v{version.Replace('.', '_')}.g.cs"); - File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); - } - - private static void EmitValueOverload( - StringBuilder sb, - GlCommand command - ) - { - Match match = ValueCommandRegex().Match(command.Name); - bool hasProgram = match.Groups[1].Success; - int dimension = int.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture); - string scalarType = MapScalarType(match.Groups[3].Value); - bool isVector = match.Groups[4].Success; - string uniformType = $"Uniform<{string.Join(", ", Enumerable.Repeat(scalarType, dimension))}>"; - - sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); - if (isVector) - { - string programParameter = hasProgram ? "GlHandle program, " : string.Empty; - sb.AppendLine($" public void SetUniformValue({programParameter}{uniformType} uniform, ReadOnlySpan<{scalarType}> values)"); - sb.AppendLine(" {"); - sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); - if (dimension > 1) - { - sb.AppendLine($" if ((values.Length % {dimension}) != 0) {{"); - sb.AppendLine($" throw new ArgumentException(\"Uniform data length must be divisible by {dimension}.\", nameof(values));"); - sb.AppendLine(" }"); - } - sb.AppendLine($" fixed ({scalarType}* valuesPtr = values) {{"); - string count = dimension == 1 ? "values.Length" : $"values.Length / {dimension}"; - sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}{count}, valuesPtr);"); - sb.AppendLine(" }"); - sb.AppendLine(" }"); - } else - { - string programParameter = hasProgram ? "GlHandle program, " : string.Empty; - string values = string.Join(", ", Enumerable.Range(0, dimension) - .Select(i => $"{scalarType} v{i}")); - string valueArguments = string.Join(", ", Enumerable.Range(0, dimension) - .Select(i => $"v{i}")); - sb.AppendLine($" public void SetUniformValue({programParameter}{uniformType} uniform, {values})"); - sb.AppendLine(" {"); - sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); - sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}{valueArguments});"); - sb.AppendLine(" }"); - } - sb.AppendLine(); - } - - private static void EmitVectorConvenienceOverload( - StringBuilder sb, - GlCommand command - ) - { - Match match = ValueCommandRegex().Match(command.Name); - bool hasProgram = match.Groups[1].Success; - int dimension = int.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture); - if (dimension < 2) { - return; - } - - string vectorType = $"Vec{dimension}"; - string programParameter = hasProgram ? "GlHandle program, " : string.Empty; - sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); - sb.AppendLine($" public void SetUniformValue({programParameter}Uniform<{vectorType}> uniform, {vectorType} value)"); - sb.AppendLine(" {"); - sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); - sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}1, (float*)&value);"); - sb.AppendLine(" }"); - sb.AppendLine(); - } - - private static void EmitMatrixConvenienceOverload( - StringBuilder sb, - GlCommand command - ) - { - bool hasProgram = command.Name.StartsWith("glProgram", StringComparison.Ordinal); - string programParameter = hasProgram ? "GlHandle program, " : string.Empty; - sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); - sb.AppendLine($" public void SetUniformValue({programParameter}Uniform uniform, GraphicsMatrix value, bool transpose = false)"); - sb.AppendLine(" {"); - sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); - sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}1, transpose ? (byte)1 : (byte)0, (float*)&value);"); - sb.AppendLine(" }"); - sb.AppendLine(); - } - - private static string BuildPrefixArguments( - bool hasProgram - ) - { - return hasProgram - ? "program.Value, uniform.id.SignedValue, " - : "uniform.id.SignedValue, "; - } - - private static bool IsFloatVectorCommand( - GlCommand command - ) - { - Match match = ValueCommandRegex().Match(command.Name); - return match.Success && match.Groups[3].Value == "f" && match.Groups[4].Success; - } - - private static string MapScalarType( - string suffix - ) - { - return suffix switch - { - "f" => "float", - "d" => "double", - "i" => "int", - "ui" => "uint", - _ => throw new InvalidOperationException($"Unsupported uniform suffix: {suffix}") - }; - } - - [GeneratedRegex("^gl(Program)?Uniform([1-4])(ui|[fdi])(v)?$", - RegexOptions.CultureInvariant)] - private static partial Regex ValueCommandRegex(); - - [GeneratedRegex("^gl(?:Program)?UniformMatrix4fv$", RegexOptions.CultureInvariant)] - private static partial Regex Matrix4FloatCommandRegex(); - - [GeneratedRegex("^gl(?:Program)?UniformMatrix[234](?:x[234])?[fd]v$", - RegexOptions.CultureInvariant)] - private static partial Regex MatrixCommandRegex(); - - } -} - -#pragma warning restore CA1305 diff --git a/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md b/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md deleted file mode 100644 index 6c5fe17c..00000000 --- a/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md +++ /dev/null @@ -1,691 +0,0 @@ -# GenerateGL 与 StgSharp.Graphics OpenGL 绑定架构评估 - -评估日期:2026-08-24 - -## 实施状态(2026-08-25) - -已完成第一轮无公开 API 破坏的文件整理: - -- 手写 `OpenGLFunction` 已拆分到 `src/StgSharp.Graphics/OpenGL/Api`; -- 版本 Raw wrapper 已移动到 `src/StgSharp.Graphics/OpenGL/Generated` 并使用 `.g.cs` 后缀; -- `OpenglContext` 已移动为 `Generated/OpenglContext.g.cs`; -- `SetUniformValue` 已从 Uniform 模型文件移动到 `Api/OpenGLFunction.Uniform.cs`; -- Texture Unit 状态已移动到 `Api/OpenGLFunction.TextureUnits.cs`; -- 已修复两个 `Vec4` overload 对 `glUniform1fv` 的错误调用,现调用 `glUniform4fv(location, 1, ...)`; -- GenerateGL 已改为只生成一个合并 Context,Raw wrapper 继续按版本输出; -- GenerateGL 输出文件名已与新的 `Generated` 目录约定对齐。 - -第二轮生成器实验已经完成并输出到 `test/StgSharp.GenerateGL/Generated`: - -- `glUniform1/2/3/4[f|i|ui|d][v]` 与 `glProgramUniform*` 已生成为 `SetUniformValue(...)` 重载; -- 已生成 scalar、`ReadOnlySpan`、`Vec2/3/4` 和 `GraphicsMatrix` 入口; -- 所有 uniform setter 已从 Raw wrapper 排除;没有对应托管矩阵类型的形状暂时只存在于 `OpenglContext`; -- TexParameter、SamplerParameter、VertexAttrib、ClearBuffer 及 indexed API 等可由 C# 参数签名区分的函数已归并重载; -- 归并发生签名冲突时,生成器会保留必要的维度或语义尾缀; -- `OpenglContext` 仍保持纯 ABI 函数指针表,`GlHandle` 暂不拆分; -- 已移除“参数名为 type 就映射为 ShaderType”的不安全启发式规则。 - -Loader/ContextShadow 合并、BufferObject 专项生成和生成快照测试尚未实施。 - -## 1. 评估目的 - -本文评估 `StgSharp.GenerateGL` 与 `src/StgSharp.Graphics` 当前 OpenGL 绑定代码之间的关系,重点回答以下问题: - -- GenerateGL 为什么会生成大量保留 C 命名风格的方法; -- Uniform 系列应如何生成符合 C# 使用习惯的方法重载; -- 现有手写封装散落在哪些文件中; -- 修改生成器时还需要同步调整哪些类型、加载器和调用方; -- 如何在保留现有功能的前提下逐步完成迁移。 - -本次评估基于静态代码检查,不包含代码重构或 API 变更。 - -## 2. 总体结论 - -当前 GenerateGL 完成的是“将 Khronos OpenGL C API 转换为可调用的 C# 代码”,尚未建立从 C API 函数族到惯用 C# API 的语义映射。 - -`glUniform1f`、`glUniform2f`、`glUniform4fv` 等名称中的数字和后缀分别编码了分量数、元素类型和指针形式。当前生成器只删除 `gl` 前缀,因此得到的仍然是 C 风格方法,而不是 C# 重载。 - -解决该问题不能只修改方法命名。当前 OpenGL 代码同时存在以下结构性问题: - -1. 原始函数指针、自动生成的薄封装和手写高级封装没有清晰分层; -2. `Uniform.cs` 同时定义 Uniform 类型和 `partial OpenGLFunction` 方法; -3. `ShaderStruct.cs` 绕过 `OpenGLFunction`,直接调用原始函数指针; -4. uniform location 被建模为通用 `GlHandle`,语义不正确; -5. Context、ContextShadow、Loader 和 Wrapper 分别维护,已经出现函数清单漂移; -6. OpenGL 版本能力判断存在错误,可能加载当前上下文不支持的函数; -7. GenerateGL 文档描述的是增量源生成器,但当前实现是独立控制台代码生成程序。 - -建议将架构拆分为四个明确层次: - -1. Registry 模型层:解析 `gl.xml` 并建立函数、版本和类型模型; -2. ABI 层:生成原始函数指针和加载代码; -3. Raw API 层:提供与 OpenGL 一一对应的薄封装; -4. Idiomatic API 层:按函数族生成 C# 重载,并使用 StgSharp 的向量、矩阵和资源类型。 - -## 3. 当前 GenerateGL 行为 - -### 3.1 输入 - -GenerateGL 从 `xml/gl.xml` 读取 Khronos OpenGL Registry。 - -当前解析内容包括: - -- `` 中的函数名、返回值和参数; -- `` 中各 OpenGL 版本新增的命令; -- Core Profile 中删除的命令。 - -当前未完整实现: - -- 枚举和常量生成; -- 扩展 API 生成; -- Roslyn Incremental Generator; -- 自动写入或接入 `StgSharp.Graphics` 项目。 - -### 3.2 输出 - -当前生成器针对 OpenGL 3.3 至 4.6 生成: - -- 分版本 `OpenglContext` 函数指针字段; -- 分版本 `OpenGLFunction` 薄封装方法; -- 合并后的 `glContext.cs`; -- OpenGL 命令新增和删除历史。 - -输出目录为 GenerateGL 可执行文件所在目录下的 `Generated`,而不是 `src/StgSharp.Graphics`。 - -### 3.3 当前生成策略的限制 - -生成器对公开方法的处理主要包括: - -- 删除 `gl` 前缀; -- 将部分 `GLuint` 参数启发式转换为 `GlHandle`; -- 将部分 `const T*` 转换为 `ReadOnlySpan`; -- 对 C# 保留字进行转义。 - -它没有分析 OpenGL 函数族,因此下列函数会被当作互不相关的方法: - -```text -glUniform1f -glUniform2f -glUniform3f -glUniform4f -glUniform1fv -glUniform2fv -glUniform3fv -glUniform4fv -``` - -## 4. StgSharp.Graphics 当前代码分布 - -### 4.1 原始函数指针 - -`src/StgSharp.Graphics/OpenGL/glContext.cs` 定义 `OpenglContext`,当前包含 657 个函数指针字段。 - -这些字段是 OpenGL ABI 的核心,应完全由生成器维护,不应与手写高级 API 混合。 - -### 4.2 ContextShadow - -`src/StgSharp.Graphics/OpenGL/glContextShadow.cs` 使用 657 个 `IntPtr` 字段镜像 `OpenglContext`。 - -加载器将 `OpenglContext*` 强制转换为 `glContextShadow*` 后写入函数地址。因此两个结构体必须始终满足: - -- 字段数量一致; -- 字段顺序一致; -- 每个字段占用相同大小。 - -当前两者字段数量和顺序一致,但这种设计非常脆弱。生成器目前不生成 ContextShadow,任何一侧发生变化都可能破坏内存布局。 - -### 4.3 函数加载器 - -`src/StgSharp.Graphics/OpenGL/glApiManager.Load.cs` 按 OpenGL 版本加载函数。 - -静态检查结果: - -- `OpenglContext` 字段数:657; -- `glContextShadow` 字段数:657; -- 实际 Loader 赋值数:655。 - -当前未被实际加载的字段: - -- `glGetPointerv`; -- `glVertexAttribLFormat`。 - -这说明 Context、Shadow 和 Loader 已经发生漂移。 - -### 4.4 自动生成的公开薄封装 - -以下文件定义 `partial OpenGLFunction`: - -- `glFunction.v3_3.cs`; -- `glFunction.v4_0.cs`; -- `glFunction.v4_1.cs`; -- `glFunction.v4_2.cs`; -- `glFunction.v4_3.cs`; -- `glFunction.v4_4.cs`; -- `glFunction.v4_5.cs`; -- `glFunction.v4_6.cs`。 - -这些文件合计约 656 个公开方法。它们已经进行了一部分 C# 类型转换,但函数名和参数模型仍基本对应 C API。 - -这使它们处于不稳定的中间层: - -- 不再是完全精确的 Raw ABI; -- 又没有形成惯用的 C# API; -- `count` 与 `ReadOnlySpan` 长度可能不一致; -- `byte`、裸 `uint` 和裸指针仍大量暴露; -- 资源句柄识别依赖参数名启发式规则。 - -### 4.5 手写 OpenGLFunction 方法 - -`src/StgSharp.Graphics/OpenGL/glFunction.cs` 约 795 行,包含约 55 个手写公开方法,职责包括: - -- Context 与 `OpenGLFunction` 实例管理; -- Buffer 创建、删除和数据上传; -- Texture 创建和上传; -- Framebuffer 和 Renderbuffer 操作; -- Shader 创建、源码上传和状态检查; -- Draw 调用; -- 错误检查; -- Vertex Attribute 配置。 - -这些方法与版本文件中的公开方法并存。例如同时存在: - -- `ActiveTextureUnit` 与 `ActiveTexture`; -- `BindFrameBuffer` 与 `BindFramebuffer`; -- `FrameBufferTexture2d` 与 `FramebufferTexture2D`; -- `TextureImage2d` 与 `TexImage2D`; -- `SetBufferData` 与 `BufferData`。 - -这种重复不是编译错误,但会让调用者无法判断哪一层是推荐 API,也会妨碍生成器安全地产生新重载。 - -### 4.6 Uniform 类型与方法 - -`src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs` 同时包含: - -- `Uniform` 基类; -- `Uniform`; -- `Uniform`; -- `Uniform`; -- `Uniform`; -- `partial OpenGLFunction` 的 `SetUniformValue` 重载。 - -代码位置本身不影响编译,但该文件跨越了两个职责边界: - -- Uniform 数据模型; -- OpenGL 命令封装。 - -这会导致生成器无法拥有 Uniform 方法的明确输出区域。 - -### 4.7 Shader 相关代码 - -`src/StgSharp.Graphics/OpenGL/ShaderEdit/Shader.cs` 同时定义: - -- `partial glRender` 的 Shader 工厂方法; -- `Shader`; -- `ShaderStatus`; -- `ShaderProgram`; -- `ShaderProgram.GetUniform`。 - -此外还存在 `src/StgSharp.Graphics/ShaderEdit`,其中包含另一套 Shader 抽象。`OpenGL/ShaderEdit/IglConvertable.cs` 的文件路径位于 OpenGL 子目录,但命名空间是 `StgSharp.Graphics.ShaderEdit`。 - -当前文件位置和命名空间没有形成一致边界。 - -### 4.8 绕过公开封装的调用 - -除 Loader 和绑定实现外,发现 `src/StgSharp.Graphics/ShaderEdit/ShaderStruct.cs` 直接获取: - -```csharp -OpenglContext* gl = - (OpenglContext*)OpenGLFunction.CurrentGL.ContextHandle; -``` - -随后直接调用 `glUniform*`。 - -这是高级代码对 ABI 层的越层依赖。新的 Uniform API 建立后,这里应只调用 `OpenGLFunction.SetUniformValue` 或对应的 Uniform 对象方法。 - -## 5. 已确认的正确性问题 - -### 5.1 Vec4 使用了错误的 OpenGL 函数 - -当前 `Uniform.cs` 中,`Vec4` 被传给: - -```csharp -glUniform1fv(location, 4, pointer); -``` - -该调用表示上传 4 个标量 uniform,而不是上传 1 个四分量向量。 - -正确调用应为: - -```csharp -glUniform4fv(location, 1, pointer); -``` - -### 5.2 整数 Uniform 调用了浮点函数 - -`ShaderStruct.SetAllUniforms` 的整数分支调用 `glUniform1f`,应调用 `glUniform1i`。 - -### 5.3 Uniform location 被错误建模为 GlHandle - -OpenGL uniform location 的原始类型是有符号 `GLint`,并允许 `-1` 表示未找到。 - -当前实现使用 `GlHandle` 保存 uniform location。`GlHandle` 同时被用于 Buffer、Texture、Program 和 Shader 等 `GLuint` 对象名称,因此无法表达 uniform location 的不同语义和有效性规则。 - -建议引入: - -```csharp -public readonly record struct UniformLocation(int Value) -{ - public bool IsValid => Value >= 0; -} -``` - -### 5.4 版本判断错误 - -`glManager.CheckCoreVersion` 当前使用类似以下判断: - -```csharp -majorVersion >= 4 || -(majorVersion == 4 && minorVersion == requiredMinor) -``` - -当上下文版本为 OpenGL 4.0 时,`majorVersion >= 4` 对 4.1 至 4.6 的检查也全部为真。 - -正确判断应为: - -```csharp -majorVersion > requiredMajor || -(majorVersion == requiredMajor && minorVersion >= requiredMinor) -``` - -版本和扩展能力还应保存在每个 OpenGL context 中,而不是静态全局字段中。 - -### 5.5 上下文内存没有完整清零 - -`glRender.InitializeContext` 通过 `Marshal.AllocHGlobal` 分配 `OpenglContext`,但只将 `glGetString` 设置为零。 - -如果当前版本不加载某些较新函数,其字段可能保留未初始化值。公开版本方法仍然存在,错误调用时可能跳转到无效地址。 - -上下文分配后应完整清零,并通过 capability 检查限制不受支持的方法调用。 - -### 5.6 函数指针调用约定需要统一审计 - -GLFW 返回的是非托管函数地址。当前 `OpenglContext` 多数使用 `delegate*<...>`,没有显式标记 `unmanaged` 调用约定。 - -生成器应根据目标平台统一生成并验证函数指针调用约定,例如: - -```csharp -delegate* unmanaged<...> -``` - -或在确有需要时生成平台对应的显式调用约定。 - -## 6. Uniform 函数族的推荐建模 - -### 6.1 函数名解析 - -生成器应将以下函数族解析为结构化模型: - -```text -glUniform{1|2|3|4}{f|d|i|ui}{v?} -glProgramUniform{1|2|3|4}{f|d|i|ui}{v?} -glUniformMatrix{2|3|4|2x3|2x4|3x2|3x4|4x2|4x3}{f|d}v -glProgramUniformMatrix{...}{f|d}v -``` - -建议模型至少包含: - -```text -Operation = Uniform | ProgramUniform -Shape = Scalar | Vector | Matrix -Columns = 1..4 -Rows = 1..4 -ElementType = Float | Double | Int | UInt -InputForm = Components | Array -NativeCommand = glUniform4fv 等原始名称 -IntroducedIn = OpenGL 版本 -``` - -不要直接在字符串 emitter 中通过多组 `StartsWith` 和 `EndsWith` 拼接逻辑。应先完成函数族识别,再根据统一模型生成代码。 - -### 6.2 推荐的 Uniform 类型 - -建议保留单泛型参数: - -```csharp -public readonly struct Uniform where T : unmanaged -{ - public UniformLocation Location { get; } -} -``` - -向量和矩阵形状由 `T` 表达: - -```text -Uniform -Uniform -Uniform -Uniform -Uniform -``` - -不建议继续使用 `Uniform` 表达四分量值。 - -要完整支持 `double`、`int` 和 `uint` 向量,数学库还需要提供对应的向量类型,或者 OpenGL 层需要定义布局稳定的专用值类型,例如: - -```text -DVec2 / DVec3 / DVec4 -IVec2 / IVec3 / IVec4 -UVec2 / UVec3 / UVec4 -``` - -### 6.3 推荐重载 - -标量与向量: - -```csharp -void SetUniformValue(Uniform uniform, float value); -void SetUniformValue(Uniform uniform, Vec2 value); -void SetUniformValue(Uniform uniform, Vec3 value); -void SetUniformValue(Uniform uniform, Vec4 value); -``` - -数组: - -```csharp -void SetUniformValue( - Uniform uniform, - ReadOnlySpan values); - -void SetUniformValue( - Uniform uniform, - ReadOnlySpan values); -``` - -矩阵: - -```csharp -void SetUniformValue( - Uniform uniform, - in GraphicsMatrix value, - bool transpose = false); -``` - -调用者不应手工传入 `count`。生成方法应根据 Span 长度和元素形状计算 OpenGL 的 `count` 参数。 - -### 6.4 Raw API 的处理 - -建议保留与 OpenGL 一一对应的 Raw 方法,至少在迁移期内不要立即删除。 - -可选策略: - -1. 将 Raw 方法改为 `internal`; -2. 放入单独的 `OpenGLRaw` 类型; -3. 暂时保持 `public`,但使用 `EditorBrowsable(Never)` 降低 IntelliSense 噪音; -4. 为旧 API 提供一个兼容周期,再逐步弃用。 - -Idiomatic API 不应与 Raw API 写入同一生成文件。 - -## 7. 推荐目录结构 - -```text -src/StgSharp.Graphics/OpenGL/ - Generated/ - OpenglContext.g.cs - OpenglLoader.v33.g.cs - OpenGLFunction.Raw.v33.g.cs - OpenGLFunction.Raw.v40.g.cs - OpenGLFunction.Uniform.g.cs - OpenGLFunction.ProgramUniform.g.cs - - Api/ - OpenGLFunction.Context.cs - OpenGLFunction.Diagnostics.cs - OpenGLFunction.Buffer.cs - OpenGLFunction.Texture.cs - OpenGLFunction.Drawing.cs - OpenGLFunction.Shader.cs - - Objects/ - Uniform.cs - UniformLocation.cs - Shader.cs - ShaderProgram.cs - ShaderStatus.cs - Buffer/ - Texture/ - - Rendering/ - GlRender.cs - GlRender.Resources.cs - GlRender.Threading.cs -``` - -具体目录名称可以调整,但必须保持以下边界: - -- `Generated` 中的文件可以被完整覆盖; -- 手写文件永远不写入 `Generated`; -- Uniform 类型定义和 Uniform 调用方法分离; -- Shader 资源对象不直接访问 `OpenglContext*`; -- Loader 与 Context 来自同一个生成模型。 - -## 8. 建议的文件迁移 - -### 8.1 `Uniform.cs` - -保留: - -- `Uniform`; -- uniform location; -- 与 uniform 数据模型直接相关的成员。 - -移出: - -- 所有 `partial OpenGLFunction` 方法。 - -### 8.2 `Shader.cs` - -拆分为: - -- `Shader.cs`; -- `ShaderProgram.cs`; -- `ShaderStatus.cs`; -- `ShaderProgram.Uniform.cs`; -- `GlRender.ShaderFactory.cs`。 - -### 8.3 `ShaderStruct.cs` - -移除: - -- `ContextHandle` 访问; -- `OpenglContext*` 转换; -- 直接 `glUniform*` 调用。 - -改为通过类型安全的 Uniform API 分发。 - -### 8.4 `glFunction.cs` - -保留 Context 生命周期和实例管理,然后按功能拆分手写便利方法: - -```text -OpenGLFunction.Context.cs -OpenGLFunction.Diagnostics.cs -OpenGLFunction.Buffer.cs -OpenGLFunction.Texture.cs -OpenGLFunction.Framebuffer.cs -OpenGLFunction.Drawing.cs -OpenGLFunction.Shader.cs -``` - -### 8.5 `glFunction.SourceManager.cs` - -该文件实际管理 Texture Unit,而不是 Source。建议重命名为: - -```text -OpenGLFunction.TextureUnits.cs -``` - -进一步可以将 Texture Unit 分配状态移出函数绑定类,放入每个 Render Context 的资源管理对象。 - -### 8.6 `IglConvertable.cs` - -该文件位于 `OpenGL/ShaderEdit`,命名空间却是 `StgSharp.Graphics.ShaderEdit`。应移动到与命名空间一致的 `ShaderEdit` 目录。 - -## 9. GenerateGL 推荐内部结构 - -建议将当前单一 `Generator` 拆分为以下阶段。 - -### 9.1 Registry 解析 - -```text -GlXmlParser - -> RegistryModel -``` - -负责准确保留: - -- C 类型; -- 指针层级; -- const; -- 参数组信息; -- feature/profile/version; -- alias; -- enum group。 - -### 9.2 ABI 类型映射 - -```text -RegistryModel - -> AbiCommandModel -``` - -这里只做精确映射,不做 `GlHandle`、Span 或 ShaderType 等高级推断。 - -### 9.3 函数族分析 - -```text -AbiCommandModel - -> CommandFamilyModel -``` - -由专门规则识别: - -- Uniform; -- ProgramUniform; -- UniformMatrix; -- VertexAttrib; -- TexParameter; -- Get 系列; -- Gen/Delete/Create 系列。 - -无法识别的命令仍可生成 Raw API,但不得用不确定的启发式规则擅自改变资源类型。 - -### 9.4 Emitters - -建议拆分: - -```text -ContextEmitter -LoaderEmitter -RawFunctionEmitter -UniformEmitter -ProgramUniformEmitter -ConstantEmitter -HistoryEmitter -``` - -每个 emitter 只负责一种输出,便于单独进行 golden-file 测试。 - -## 10. 迁移计划 - -### 阶段一:建立安全的生成边界 - -1. 新增 `OpenGL/Generated`; -2. 所有生成文件使用 `.g.cs` 后缀; -3. 生成器直接生成 `OpenglContext` 和 Loader; -4. 移除或自动生成 `glContextShadow`; -5. 增加函数数量、名称和版本一致性测试。 - -此阶段不改变现有公开 API。 - -### 阶段二:修复 Uniform 模型 - -1. 新增 `UniformLocation`; -2. 将 `GetUniformLocation` 返回类型改为 `UniformLocation`; -3. 将 Uniform 简化为 `Uniform`; -4. 修复 Vec4 和整数 uniform 的错误调用; -5. 迁移 Camera、ShaderProgram 和 ShaderStruct。 - -### 阶段三:生成 Uniform 重载 - -1. 实现 Uniform 函数族解析; -2. 生成 scalar/vector/matrix overload; -3. 自动计算 Span 对应的 count; -4. 生成 ProgramUniform 对应重载; -5. 使用 golden-file 测试验证每个原始命令映射到正确 overload。 - -### 阶段四:整理其他手写便利 API - -1. 拆分 `glFunction.cs`; -2. 统一 Buffer、Texture、Framebuffer 方法命名; -3. 明确 Raw API 的可见性和兼容策略; -4. 逐步为 VertexAttrib、TexParameter 等函数族生成重载。 - -### 阶段五:清理旧 API - -1. 标记旧 C 风格 public wrapper 为 obsolete 或隐藏; -2. 提供迁移说明; -3. 在约定的兼容版本后删除旧入口。 - -## 11. 测试与验收标准 - -### 11.1 Registry 一致性 - -- 每个 Context 字段必须有对应 Loader 赋值; -- 每个 Raw wrapper 必须对应一个 Context 字段; -- 不允许 Loader 引用不存在的字段; -- Context、Loader 和 Wrapper 的版本归属必须一致。 - -### 11.2 Uniform golden tests - -至少验证: - -```text -float -> glUniform1f -Vec2 -> glUniform2fv(count = 1) -Vec3 -> glUniform3fv(count = 1) -Vec4 -> glUniform4fv(count = 1) -ReadOnlySpan -> glUniform4fv(count = span.Length) -GraphicsMatrix -> glUniformMatrix4fv(count = 1) -``` - -同时覆盖 `double`、`int`、`uint`、非方阵矩阵和 ProgramUniform。 - -### 11.3 API 约束 - -- 高级代码不得访问 `OpenglContext*`; -- 高级代码不得手工传入可由 Span 推导的 count; -- uniform location 不得使用 `GlHandle`; -- 生成文件不得包含手写区域; -- 手写文件不得依赖生成字段的布局顺序; -- 不支持的 OpenGL 版本方法不得调用未初始化函数指针。 - -### 11.4 构建验证 - -GenerateGL 当前可以成功构建,但存在代码分析警告。 - -本次检查中,单独构建 `StgSharp.Graphics` 时,MSBuild 在项目引用 `StgSharp.Mathematics` 的 `GetTargetFrameworks` 阶段失败,最终显示 0 个 C# 错误和 0 个警告。该失败发生在 C# 编译前,因此本次评估不将其视为 Graphics 源码编译结果。 - -## 12. 推荐的第一批实际改动 - -为了控制改动规模,第一批建议只完成以下内容: - -1. 新增 `UniformLocation`; -2. 将 `Uniform` 收敛到 `Uniform`; -3. 把 `SetUniformValue` 从 `Uniform.cs` 移到独立 partial 文件; -4. 修复 `Vec4` 与整数 uniform 调用; -5. 让 `ShaderStruct` 不再访问 `OpenglContext*`; -6. 给 GenerateGL 增加 `UniformFamilyModel` 和 `UniformEmitter`; -7. 同时生成 Context 与 Loader,并消除 ContextShadow 的手工同步; -8. 增加 Context/Loader/Wrapper 集合一致性测试。 - -完成这一批后,再决定是否立即重构全部 `glFunction.cs`。这样可以先解决 Uniform API 和生成同步问题,同时避免一次性扩大到整个 Graphics 框架。 diff --git a/test/StgSharp.GenerateGL/Docs/SourceGenerator.md b/test/StgSharp.GenerateGL/Docs/SourceGenerator.md deleted file mode 100644 index 8117402e..00000000 --- a/test/StgSharp.GenerateGL/Docs/SourceGenerator.md +++ /dev/null @@ -1,93 +0,0 @@ -# StgSharp.GenerateGL 源生成器技术文档 - -## 目标与范围 -- **输入**:Khronos OpenGL Registry `gl.xml`(Core Profile 为主,版本 3.3→4.6,可选扩展)。 -- **输出**:合并的 partial `OpenglContext`(`delegate*` 字段)、分版本 `OpenGLFunction` 薄包装方法,以及按版本生成的 Uniform 语义重载。生成结果最终对应 `src\StgSharp.Graphics\OpenGL\Generated\`,评审时可以通过命令行参数输出到独立目录。 -- **风格**:保持现有函数指针字段 + 薄封装方法模式;兼容现有命名和类型定义(如 `GlHandle`)。 - ---- - -## 阶段 1:输入解析(XML 读取与过滤) -- 将 `gl.xml` 作为 AdditionalFile 或 EmbeddedResource,使用 `XmlReader` 流式解析。 -- 解析节点: - - ``:函数名、返回类型、参数。 - - ``:常量。 - - ``:按 `version` 收录命令/常量。 - - ``:可选扩展(ARB/KHR/EXT/NV)。 -- 过滤策略:仅 Core Profile 且版本 ≥ 3.3(3.3→4.6 递进);扩展按启用列表追加。 - ---- - -## 阶段 2:类型映射与句柄规则 -- 整数:`GLenum`/`GLbitfield`→`uint`;`GLint`/`GLsizei`/`GLfixed`→`int`;`GLuint`→`uint`;`GLboolean`→`byte`(包装层可 bool→byte)。 -- 浮点:`GLfloat`→`float`;`GLdouble`→`double`。 -- 指针与尺寸:`void*`/`const void*`→`void*`;`GLintptr`、`GLsizeiptr`→`nint`;`GLsync`→现有 `glSync` 包装。`GLint64`/`GLuint64` 分别映射为 `long`/`ulong`。回调类型 `GLDEBUGPROC` 暂以指针大小的 `IntPtr` 表示。 -- 未知 C 类型直接终止生成,不再静默回退为 `IntPtr`。这可以防止 typedef 漏映射后生成 ABI 不兼容的函数指针。 -- 字符串:函数表中的 `GLchar*` 保持 `byte*` ABI;包装层的 const 单指针使用 UTF-8 `ReadOnlySpan`,后续可另行提供 `string` 重载。 -- 参数长度:解析并保留 registry ``。包装层以该表达式判断数组方向、固定长度和关联的 `count`/`bufSize` 参数;底层函数表不使用这些托管规则。 -- 调用约定:OpenGL APIENTRY 通常 stdcall(Windows);保持与现有 `glContext` 字段一致(`delegate* unmanaged[Stdcall]` 或 `unmanaged[Cdecl]`,需与 loader 对齐)。 -- 句柄识别:包含 program/shader/buffer/texture/framebuffer/renderbuffer/vertexarray/query/sampler/transformfeedback 等对象名的 `GLuint` 参数 → 包装层使用 `GlHandle`,内部传 `handle.Value`。`glCreateProgram`、`glCreateShader` 等明确返回 object name 的命令返回 `GlHandle`。 -- `GLenum` 不再仅凭参数名 `type` 推断为 `ShaderType`;低层包装保持 `uint`,避免把像素类型、索引类型等无关参数错误分类。 -- glGet* 输出:保留指针签名,或另行生成 unsafe Span/stackalloc 适配器;核心先生成指针版。 - ---- - -## 阶段 3:版本分组与文件组织 -- 目标目录:`src\StgSharp.Graphics\OpenGL\Generated\` -- Context 生成一个合并文件: - - `OpenglContext.g.cs`:所有目标 Core 版本需要的 `delegate*` 字段。 -- Raw 包装按版本生成独立 partial: - - `OpenGLFunction.Raw.v3_3.g.cs`, …:包装方法 `public void Foo(...) => Context.glFoo(...);` -- Uniform 重载按首次引入版本生成: - - `OpenGLFunction.Uniform.v3_3.g.cs`、`v4_0`、`v4_1`。 -- 不再同时生成分版本 Context 与合并 Context,避免同一字段被 partial struct 重复定义。 -- 常量/枚举:`glConst.generated.cs`(或分版本补丁),避免与现有重复,先查已有定义再生成。 -- 命名空间:`StgSharp.Graphics.OpenGL`;类声明:`partial struct/partial class glContext`(按现有定义),`partial class OpenGLFunction`。 - ---- - -## 阶段 4:生成规则(函数表与包装) -- `OpenglContext` 字段:`internal unsafe delegate* glFoo;` -- `OpenGLFunction` 包装:薄封装直接转发;句柄参数用 `GlHandle`,内部传 `handle.Value`;`bool` 参数按底层 `GLboolean` 需要转换为 `byte/uint`。 -- 指针包装:带长度的 `const T*` 生成 `ReadOnlySpan`,输出 `T*` 生成 `Span`,`len="1"` 的输出生成 `out T`。可由单个 Span 唯一决定的 `count`/`n`/`bufSize` 从 `Span.Length` 推导;共享同一长度的输入 Span 会检查长度一致。简单常量、乘法和除法长度表达式会生成下限检查。 -- registry 中省略 `len` 的零结尾 const 字符指针仍生成 `ReadOnlySpan`;省略 `len` 的 `glGet*` 数值单指针按未知长度输出生成 `Span`。`void*`、二级指针、驱动拥有的返回指针以及表示 Buffer 偏移的指针继续保留原始形式。 -- 可重载的 C 类型尾缀会折叠为同一 C# 方法名,例如 `TexParameterf/i/fv/iv` → `TexParameter(...)`,`BlendEquation/BlendEquationi` → `BlendEquation(...)`。生成器以最终 C# 参数签名检测冲突;无法区分时保留最少的维度或语义尾缀。 -- `glUniform1/2/3/4[f|i|ui|d][v]` 和 `glProgramUniform*` 不再作为一组公开的 C 风格方法生成,而是生成 `SetUniformValue(...)` 重载。location 从 `Uniform.id.SignedValue` 取得;数组版本接受 `ReadOnlySpan` 并自动计算 count。 -- float vector 额外生成 `Vec2`、`Vec3`、`Vec4` 重载,4×4 float matrix 生成 `GraphicsMatrix` 重载。所有 uniform setter(包括 matrix)都不进入 Raw wrapper;项目暂时没有对应托管类型的其他矩阵形状只保留底层 `OpenglContext` 函数指针,待类型齐备后再生成公开重载。 -- `glVertexAttribN*v` 若存在对应的标量命令 `glVertexAttribN*`,不再生成重复的 Span wrapper;公开 API 使用 `VertexAttrib(index, x, y, z, w)` 形式的固定分量重载。只有不存在标量等价命令的特殊整数/归一化形式才暂时保留独立入口。 -- `FramebufferTexture1D/2D/3D` 表示不同 OpenGL API,不参与维度重载归并。 -- 去重:若同名字段/方法已存在,跳过或比对签名避免重复生成。 - ---- - -## 阶段 5:增量源生成器结构 -- 步骤: - 1. 收集 AdditionalFiles(`gl.xml`)。 - 2. 解析→建模(CommandModel, EnumModel, FeatureModel)。 - 3. 按版本/profile 过滤。 - 4. Emit:分文件输出(`SourceProductionContext.AddSource`)。 -- 配置建议:`LangVersion=preview`(支持 `delegate* unmanaged[Stdcall]`);仅引用必要的 XML 解析库。 - ---- - -## 阶段 6:兼容性与发布注意 -- 不改动现有手写文件,仅追加 partial。 -- 常量值需与现有 `glConst` 保持一致,生成前检查重复。 -- 大 `gl.xml` 使用流式解析避免内存压力。 -- Loader(`wglGetProcAddress/glXGetProcAddress/eglGetProcAddress`)不在本轮生成,字段调用约定需与 loader 对齐。 - ---- - -## 下一步实施建议 -1. 将 `gl.xml` 添加为 AdditionalFile。 -2. 搭建增量生成器骨架:Parse → Filter → Emit。 -3. 先生成 3.3 子集验证编译,再扩展到 4.6。 -4. 按需追加扩展(ARB/KHR),保持可配置启用列表。 - -## 本地评审输出 - -可把首个命令行参数作为输出目录: - -```powershell -dotnet run --project test\StgSharp.GenerateGL\GenerateGL.csproj -- test\StgSharp.GenerateGL\Generated -``` diff --git a/test/StgSharp.GenerateGL/GenerateGL.csproj b/test/StgSharp.GenerateGL/GenerateGL.csproj deleted file mode 100644 index cf86d0b4..00000000 --- a/test/StgSharp.GenerateGL/GenerateGL.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - Exe - enable - AnyCPU;x64 - - - - - - - - - diff --git a/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs b/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs deleted file mode 100644 index 40eb31cd..00000000 --- a/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs +++ /dev/null @@ -1,1027 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Command availability history -// -using System; -using System.Collections.Frozen; -using System.Collections.Generic; - -namespace StgSharp.Graphics.OpenGL -{ - internal enum CommandHistoryAction { Added, Removed } - - internal readonly record struct CommandHistoryEntry(string Version, CommandHistoryAction Action); - - internal static class GlCommandHistory - { - internal static readonly FrozenDictionary History = new Dictionary(StringComparer.Ordinal) - { - { "glAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glActiveShaderProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glAlphaFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glAreTexturesResident", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glArrayElement", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glAttachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glBegin", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glBeginConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBeginQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glBeginQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBeginTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBindAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glBindBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glBindBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glBindBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glBindBuffersBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBindBuffersRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBindFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBindFragDataLocationIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glBindFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBindImageTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glBindImageTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBindProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glBindRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBindSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glBindSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBindTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glBindTextureUnit", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glBindTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBindTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBindVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBindVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glBindVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBitmap", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glBlendColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glBlendEquation", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glBlendEquationSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glBlendEquationSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBlendEquationi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBlendFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glBlendFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glBlendFuncSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBlendFunci", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glBlitFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glBlitNamedFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glCallList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glCallLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glCheckFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glCheckNamedFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClampColor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glClear", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glClearAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glClearBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glClearBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glClearBufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glClearBufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glClearBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glClearBufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glClearColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glClearDepth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glClearDepthf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glClearIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glClearNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearNamedFramebufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearNamedFramebufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearNamedFramebufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearNamedFramebufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClearStencil", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glClearTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glClearTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, - { "glClientActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glClientWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glClipControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColor4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColorMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glColorMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glColorMaterial", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glCompileShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glCompressedTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glCompressedTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCompressedTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCompressedTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCopyBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glCopyImageSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glCopyNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCopyPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glCopyTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glCopyTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glCopyTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glCopyTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glCopyTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, - { "glCopyTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCopyTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCopyTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glCreateProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glCreateShaderProgramv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glCreateTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCreateVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glCullFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDebugMessageCallback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glDebugMessageControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glDebugMessageInsert", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glDeleteBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glDeleteFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glDeleteLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glDeleteProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glDeleteProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glDeleteQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glDeleteRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glDeleteSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glDeleteShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glDeleteSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glDeleteTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glDeleteTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glDeleteVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glDepthFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDepthMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDepthRange", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDepthRangeArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glDepthRangeIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glDepthRangef", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glDetachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glDisable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDisableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glDisableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glDisableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glDisablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glDispatchCompute", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glDispatchComputeIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glDrawArraysInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glDrawArraysInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glDrawElementsInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glDrawElementsInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glDrawElementsInstancedBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glDrawElementsInstancedBaseVertexBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glDrawPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glDrawRangeElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, - { "glDrawRangeElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glDrawTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glDrawTransformFeedbackInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glDrawTransformFeedbackStream", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glDrawTransformFeedbackStreamInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glEdgeFlag", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEdgeFlagPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEdgeFlagv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEnable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glEnableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEnableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glEnableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glEnablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glEnd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEndConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glEndList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEndQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glEndQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glEndTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glEvalCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalMesh1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalMesh2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalPoint1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glEvalPoint2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFeedbackBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFenceSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glFinish", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glFlush", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glFlushMappedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFlushMappedNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glFogCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogCoordd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogCoorddv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogCoordf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogCoordfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFogiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glFramebufferTexture1D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFramebufferTexture2D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFramebufferTexture3D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glFrontFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glFrustum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGenBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGenFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGenLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGenProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGenQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGenRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGenSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGenTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glGenTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGenVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGenerateMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGenerateTextureMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetActiveAtomicCounterBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glGetActiveAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetActiveSubroutineName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetActiveSubroutineUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetActiveSubroutineUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetActiveUniform", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetActiveUniformBlockName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetActiveUniformBlockiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetActiveUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetActiveUniformsiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetAttachedShaders", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetBooleani_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetBooleanv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glGetBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glGetCompressedTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetCompressedTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetDebugMessageLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetDoublei_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetDoublev", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetError", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetFloati_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetFloatv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetFragDataIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetGraphicsResetStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetInteger64i_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glGetInteger64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glGetIntegeri_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetIntegerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetInternalformati64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetInternalformativ", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glGetLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMapdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMapiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetMultisamplefv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glGetNamedBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetNamedRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed), new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetProgramInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetProgramInterfaceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramPipelineInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetProgramPipelineiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetProgramResourceIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramResourceLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramResourceLocationIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramResourceName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramResourceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glGetProgramStageiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetProgramiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetQueryBufferObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetQueryBufferObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetQueryBufferObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetQueryBufferObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetQueryIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetQueryObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetQueryObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetQueryObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetQueryObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetQueryiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glGetRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glGetShaderInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetShaderPrecisionFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetShaderiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetString", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetStringi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetSubroutineIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetSubroutineUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetSynciv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glGetTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glGetTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetTexLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetTexLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glGetTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTransformFeedbackVarying", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetTransformFeedbacki64_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTransformFeedbacki_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetTransformFeedbackiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetUniformBlockIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetUniformIndices", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glGetUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetUniformSubroutineuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glGetUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetVertexArrayIndexed64iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetVertexArrayIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetVertexArrayiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetVertexAttribIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetVertexAttribIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glGetVertexAttribLdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glGetVertexAttribPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetVertexAttribdv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetVertexAttribfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetVertexAttribiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glGetnCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetnTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetnUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetnUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetnUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glGetnUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glHint", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glIndexMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexs", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIndexubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glInitNames", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glInterleavedArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glInvalidateBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glInvalidateBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glInvalidateFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glInvalidateNamedFramebufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glInvalidateNamedFramebufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glInvalidateSubFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glInvalidateTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glInvalidateTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glIsBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glIsEnabled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glIsEnabledi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glIsFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glIsList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glIsProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glIsProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glIsQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glIsRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glIsSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glIsShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glIsSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glIsTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glIsTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glIsVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glLightModelf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightModelfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightModeli", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightModeliv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLighti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLineStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLineWidth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glLinkProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glListBase", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadIdentity", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLoadTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glLogicOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glMap1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMap1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMap2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMap2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glMapBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glMapGrid1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMapGrid1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMapGrid2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMapGrid2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glMapNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glMaterialf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMateriali", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMatrixMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMemoryBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glMemoryBarrierByRegion", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glMinSampleShading", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glMultMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glMultiDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glMultiDrawArraysIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, - { "glMultiDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glMultiDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glMultiDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glMultiDrawElementsIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, - { "glMultiTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glMultiTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNamedRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glNewList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormal3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glNormalPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glOrtho", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPassThrough", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPatchParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glPatchParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glPauseTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPixelStoref", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glPixelStorei", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glPixelTransferf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPixelTransferi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPixelZoom", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPointParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glPointParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glPointParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glPointParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, - { "glPointSize", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glPolygonMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glPolygonOffset", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glPolygonOffsetClamp", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, - { "glPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPopAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPopClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPopDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glPopMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPopName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPrimitiveRestartIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glPrioritizeTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProgramUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glProvokingVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glPushAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPushClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPushDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glPushMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glPushName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glQueryCounter", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glRasterPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRasterPos4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glReadPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glReadnPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glRectd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRectdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRectf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRectfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRecti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRects", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRectsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glReleaseShaderCompiler", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glRenderMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glResumeTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glRotated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glRotatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSampleCoverage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, - { "glSampleMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glSamplerParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glSamplerParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glScaled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glScalef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glScissor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glScissorArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glScissorIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glScissorIndexedv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glSecondaryColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSecondaryColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glSelectBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glShadeModel", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glShaderBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glShaderStorageBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glSpecializeShader", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, - { "glStencilFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glStencilFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glStencilMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glStencilMaskSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glStencilOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glStencilOpSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glTexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glTexBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexEnvf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexEnvi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGend", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGenf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGeni", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexImage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, - { "glTexImage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glTexParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glTexStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glTexStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glTexStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glTexStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, - { "glTexStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, - { "glTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, - { "glTextureBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTextureView", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glTransformFeedbackBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTransformFeedbackBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glTransformFeedbackVaryings", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glTranslated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glTranslatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glUniformBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, - { "glUniformSubroutinesuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, - { "glUnmapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, - { "glUnmapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glUseProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glUseProgramStages", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glValidateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glValidateProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertex2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertex4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glVertexArrayAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayElementBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexArrayVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, - { "glVertexAttrib1d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib1s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nbv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Niv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nsv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nub", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4Nusv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttrib4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glVertexAttribDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glVertexAttribI1i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI2i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI3i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribI4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glVertexAttribIPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, - { "glVertexAttribL1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribL4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glVertexAttribLPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glVertexAttribP1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribP4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, - { "glVertexAttribPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, - { "glVertexBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, - { "glVertexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glViewport", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, - { "glViewportArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glViewportIndexedf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glViewportIndexedfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, - { "glWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, - { "glWindowPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - { "glWindowPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, - }.ToFrozenDictionary(StringComparer.Ordinal); - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs deleted file mode 100644 index 0503e0b5..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs +++ /dev/null @@ -1,2187 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 3.3 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ActiveTexture(uint texture) - { - Context.glActiveTexture(texture); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachShader(GlHandle program, GlHandle shader) - { - Context.glAttachShader(program.Value, shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BeginConditionalRender(uint id, uint mode) - { - Context.glBeginConditionalRender(id, mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BeginQuery(uint target, uint id) - { - Context.glBeginQuery(target, id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BeginTransformFeedback(uint primitiveMode) - { - Context.glBeginTransformFeedback(primitiveMode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindAttribLocation(GlHandle program, uint index, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - Context.glBindAttribLocation(program.Value, index, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBuffer(uint target, GlHandle buffer) - { - Context.glBindBuffer(target, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBufferBase(uint target, uint index, GlHandle buffer) - { - Context.glBindBufferBase(target, index, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBufferRange(uint target, uint index, GlHandle buffer, nint offset, nint size) - { - Context.glBindBufferRange(target, index, buffer.Value, offset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFragDataLocation(GlHandle program, uint color, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - Context.glBindFragDataLocation(program.Value, color, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFragDataLocationIndexed(GlHandle program, uint colorNumber, uint index, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - Context.glBindFragDataLocationIndexed(program.Value, colorNumber, index, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFramebuffer(uint target, GlHandle framebuffer) - { - Context.glBindFramebuffer(target, framebuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindRenderbuffer(uint target, GlHandle renderbuffer) - { - Context.glBindRenderbuffer(target, renderbuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindSampler(uint unit, GlHandle sampler) - { - Context.glBindSampler(unit, sampler.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTexture(uint target, GlHandle texture) - { - Context.glBindTexture(target, texture.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexArray(uint array) - { - Context.glBindVertexArray(array); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendColor(float red, float green, float blue, float alpha) - { - Context.glBlendColor(red, green, blue, alpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendEquation(uint mode) - { - Context.glBlendEquation(mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendEquationSeparate(uint modeRGB, uint modeAlpha) - { - Context.glBlendEquationSeparate(modeRGB, modeAlpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendFunc(uint sfactor, uint dfactor) - { - Context.glBlendFunc(sfactor, dfactor); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) - { - Context.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) - { - Context.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BufferData(uint target, nint size, void* data, uint usage) - { - Context.glBufferData(target, size, data, usage); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BufferSubData(uint target, nint offset, nint size, void* data) - { - Context.glBufferSubData(target, offset, size, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint CheckFramebufferStatus(uint target) - { - return Context.glCheckFramebufferStatus(target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClampColor(uint target, uint clamp) - { - Context.glClampColor(target, clamp); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Clear(uint mask) - { - Context.glClear(mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBuffer(uint buffer, int drawbuffer, float depth, int stencil) - { - Context.glClearBufferfi(buffer, drawbuffer, depth, stencil); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (float* valuePtr = value) - { - Context.glClearBufferfv(buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (int* valuePtr = value) - { - Context.glClearBufferiv(buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (uint* valuePtr = value) - { - Context.glClearBufferuiv(buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearColor(float red, float green, float blue, float alpha) - { - Context.glClearColor(red, green, blue, alpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearDepth(double depth) - { - Context.glClearDepth(depth); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearStencil(int s) - { - Context.glClearStencil(s); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint ClientWaitSync(glSync sync, uint flags, ulong timeout) - { - return Context.glClientWaitSync(sync, flags, timeout); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ColorMask(byte red, byte green, byte blue, byte alpha) - { - Context.glColorMask(red, green, blue, alpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ColorMask(uint index, byte r, byte g, byte b, byte a) - { - Context.glColorMaski(index, r, g, b, a); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompileShader(GlHandle shader) - { - Context.glCompileShader(shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, void* data) - { - Context.glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, void* data) - { - Context.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, void* data) - { - Context.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, void* data) - { - Context.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) - { - Context.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) - { - Context.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyBufferSubData(uint readTarget, uint writeTarget, nint readOffset, nint writeOffset, nint size) - { - Context.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border) - { - Context.glCopyTexImage1D(target, level, internalformat, x, y, width, border); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) - { - Context.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) - { - Context.glCopyTexSubImage1D(target, level, xoffset, x, y, width); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) - { - Context.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) - { - Context.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle CreateProgram() - { - return GlHandle.Create(Context.glCreateProgram()); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle CreateShader(uint type) - { - return GlHandle.Create(Context.glCreateShader(type)); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CullFace(uint mode) - { - Context.glCullFace(mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteBuffers(ReadOnlySpan buffers) - { - fixed (uint* buffersPtr = buffers) - { - Context.glDeleteBuffers(checked((int)buffers.Length), buffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteFramebuffers(ReadOnlySpan framebuffers) - { - fixed (uint* framebuffersPtr = framebuffers) - { - Context.glDeleteFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteProgram(GlHandle program) - { - Context.glDeleteProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteQueries(ReadOnlySpan ids) - { - fixed (uint* idsPtr = ids) - { - Context.glDeleteQueries(checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteRenderbuffers(ReadOnlySpan renderbuffers) - { - fixed (uint* renderbuffersPtr = renderbuffers) - { - Context.glDeleteRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteSamplers(ReadOnlySpan samplers) - { - fixed (uint* samplersPtr = samplers) - { - Context.glDeleteSamplers(checked((int)samplers.Length), samplersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteShader(GlHandle shader) - { - Context.glDeleteShader(shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteSync(glSync sync) - { - Context.glDeleteSync(sync); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteTextures(ReadOnlySpan textures) - { - fixed (uint* texturesPtr = textures) - { - Context.glDeleteTextures(checked((int)textures.Length), texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteVertexArrays(ReadOnlySpan arrays) - { - fixed (uint* arraysPtr = arrays) - { - Context.glDeleteVertexArrays(checked((int)arrays.Length), arraysPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthFunc(uint func) - { - Context.glDepthFunc(func); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthMask(byte flag) - { - Context.glDepthMask(flag); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthRange(double n, double f) - { - Context.glDepthRange(n, f); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DetachShader(GlHandle program, GlHandle shader) - { - Context.glDetachShader(program.Value, shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Disable(uint cap) - { - Context.glDisable(cap); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DisableVertexAttribArray(uint index) - { - Context.glDisableVertexAttribArray(index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Disable(uint target, uint index) - { - Context.glDisablei(target, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawArrays(uint mode, int first, int count) - { - Context.glDrawArrays(mode, first, count); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawArraysInstanced(uint mode, int first, int count, int instancecount) - { - Context.glDrawArraysInstanced(mode, first, count, instancecount); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawBuffer(uint buf) - { - Context.glDrawBuffer(buf); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawBuffers(ReadOnlySpan bufs) - { - fixed (uint* bufsPtr = bufs) - { - Context.glDrawBuffers(checked((int)bufs.Length), bufsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElements(uint mode, int count, uint type, void* indices) - { - Context.glDrawElements(mode, count, type, indices); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsBaseVertex(uint mode, int count, uint type, void* indices, int basevertex) - { - Context.glDrawElementsBaseVertex(mode, count, type, indices, basevertex); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstanced(uint mode, int count, uint type, void* indices, int instancecount) - { - Context.glDrawElementsInstanced(mode, count, type, indices, instancecount); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstancedBaseVertex(uint mode, int count, uint type, void* indices, int instancecount, int basevertex) - { - Context.glDrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawRangeElements(uint mode, uint start, uint end, int count, uint type, void* indices) - { - Context.glDrawRangeElements(mode, start, end, count, type, indices); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, void* indices, int basevertex) - { - Context.glDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Enable(uint cap) - { - Context.glEnable(cap); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EnableVertexAttribArray(uint index) - { - Context.glEnableVertexAttribArray(index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Enable(uint target, uint index) - { - Context.glEnablei(target, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EndConditionalRender() - { - Context.glEndConditionalRender(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EndQuery(uint target) - { - Context.glEndQuery(target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EndTransformFeedback() - { - Context.glEndTransformFeedback(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public glSync FenceSync(uint condition, uint flags) - { - return Context.glFenceSync(condition, flags); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Finish() - { - Context.glFinish(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Flush() - { - Context.glFlush(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FlushMappedBufferRange(uint target, nint offset, nint length) - { - Context.glFlushMappedBufferRange(target, offset, length); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) - { - Context.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferTexture(uint target, uint attachment, GlHandle texture, int level) - { - Context.glFramebufferTexture(target, attachment, texture.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferTexture1D(uint target, uint attachment, uint textarget, GlHandle texture, int level) - { - Context.glFramebufferTexture1D(target, attachment, textarget, texture.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferTexture2D(uint target, uint attachment, uint textarget, GlHandle texture, int level) - { - Context.glFramebufferTexture2D(target, attachment, textarget, texture.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferTexture3D(uint target, uint attachment, uint textarget, GlHandle texture, int level, int zoffset) - { - Context.glFramebufferTexture3D(target, attachment, textarget, texture.Value, level, zoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferTextureLayer(uint target, uint attachment, GlHandle texture, int level, int layer) - { - Context.glFramebufferTextureLayer(target, attachment, texture.Value, level, layer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrontFace(uint mode) - { - Context.glFrontFace(mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenBuffers(Span buffers) - { - fixed (uint* buffersPtr = buffers) - { - Context.glGenBuffers(checked((int)buffers.Length), buffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenFramebuffers(Span framebuffers) - { - fixed (uint* framebuffersPtr = framebuffers) - { - Context.glGenFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenQueries(Span ids) - { - fixed (uint* idsPtr = ids) - { - Context.glGenQueries(checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenRenderbuffers(Span renderbuffers) - { - fixed (uint* renderbuffersPtr = renderbuffers) - { - Context.glGenRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenSamplers(Span samplers) - { - fixed (uint* samplersPtr = samplers) - { - Context.glGenSamplers(checked((int)samplers.Length), samplersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenTextures(Span textures) - { - fixed (uint* texturesPtr = textures) - { - Context.glGenTextures(checked((int)textures.Length), texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenVertexArrays(Span arrays) - { - fixed (uint* arraysPtr = arrays) - { - Context.glGenVertexArrays(checked((int)arrays.Length), arraysPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenerateMipmap(uint target) - { - Context.glGenerateMipmap(target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveAttrib(GlHandle program, uint index, out int length, out int size, out uint type, Span name) - { - length = default; - size = default; - type = default; - fixed (int* lengthPtr = &length) - { - fixed (int* sizePtr = &size) - { - fixed (uint* typePtr = &type) - { - fixed (byte* namePtr = name) - { - Context.glGetActiveAttrib(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); - } - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniform(GlHandle program, uint index, out int length, out int size, out uint type, Span name) - { - length = default; - size = default; - type = default; - fixed (int* lengthPtr = &length) - { - fixed (int* sizePtr = &size) - { - fixed (uint* typePtr = &type) - { - fixed (byte* namePtr = name) - { - Context.glGetActiveUniform(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); - } - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformBlockName(GlHandle program, uint uniformBlockIndex, out int length, Span uniformBlockName) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* uniformBlockNamePtr = uniformBlockName) - { - Context.glGetActiveUniformBlockName(program.Value, uniformBlockIndex, checked((int)uniformBlockName.Length), lengthPtr, uniformBlockNamePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformBlockiv(GlHandle program, uint uniformBlockIndex, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformName(GlHandle program, uint uniformIndex, out int length, Span uniformName) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* uniformNamePtr = uniformName) - { - Context.glGetActiveUniformName(program.Value, uniformIndex, checked((int)uniformName.Length), lengthPtr, uniformNamePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformsiv(GlHandle program, ReadOnlySpan uniformIndices, uint pname, Span @params) - { - fixed (uint* uniformIndicesPtr = uniformIndices) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetActiveUniformsiv(program.Value, checked((int)uniformIndices.Length), uniformIndicesPtr, pname, @paramsPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetAttachedShaders(GlHandle program, out int count, Span shaders) - { - count = default; - fixed (int* countPtr = &count) - { - fixed (uint* shadersPtr = shaders) - { - Context.glGetAttachedShaders(program.Value, checked((int)shaders.Length), countPtr, shadersPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetAttribLocation(GlHandle program, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetAttribLocation(program.Value, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBooleani_v(uint target, uint index, Span data) - { - fixed (byte* dataPtr = data) - { - Context.glGetBooleani_v(target, index, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBooleanv(uint pname, Span data) - { - fixed (byte* dataPtr = data) - { - Context.glGetBooleanv(pname, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferParameter(uint target, uint pname, Span @params) - { - fixed (long* @paramsPtr = @params) - { - Context.glGetBufferParameteri64v(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferParameter(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetBufferParameteriv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferPointerv(uint target, uint pname, void** @params) - { - Context.glGetBufferPointerv(target, pname, @params); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferSubData(uint target, nint offset, nint size, void* data) - { - Context.glGetBufferSubData(target, offset, size, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetCompressedTexImage(uint target, int level, void* img) - { - Context.glGetCompressedTexImage(target, level, img); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetDoublev(uint pname, Span data) - { - fixed (double* dataPtr = data) - { - Context.glGetDoublev(pname, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetError() - { - return Context.glGetError(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFloatv(uint pname, Span data) - { - fixed (float* dataPtr = data) - { - Context.glGetFloatv(pname, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetFragDataIndex(GlHandle program, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetFragDataIndex(program.Value, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetFragDataLocation(GlHandle program, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetFragDataLocation(program.Value, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetFramebufferAttachmentParameteriv(target, attachment, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInteger64i_v(uint target, uint index, Span data) - { - fixed (long* dataPtr = data) - { - Context.glGetInteger64i_v(target, index, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInteger64v(uint pname, Span data) - { - fixed (long* dataPtr = data) - { - Context.glGetInteger64v(pname, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetIntegeri_v(uint target, uint index, Span data) - { - fixed (int* dataPtr = data) - { - Context.glGetIntegeri_v(target, index, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetIntegerv(uint pname, Span data) - { - fixed (int* dataPtr = data) - { - Context.glGetIntegerv(pname, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetMultisamplefv(uint pname, uint index, Span val) - { - fixed (float* valPtr = val) - { - Context.glGetMultisamplefv(pname, index, valPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramInfoLog(GlHandle program, out int length, Span infoLog) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* infoLogPtr = infoLog) - { - Context.glGetProgramInfoLog(program.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramiv(GlHandle program, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetProgramiv(program.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(uint id, uint pname, Span @params) - { - fixed (long* @paramsPtr = @params) - { - Context.glGetQueryObjecti64v(id, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(uint id, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetQueryObjectiv(id, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(uint id, uint pname, Span @params) - { - fixed (ulong* @paramsPtr = @params) - { - Context.glGetQueryObjectui64v(id, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(uint id, uint pname, Span @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glGetQueryObjectuiv(id, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryiv(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetQueryiv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetRenderbufferParameteriv(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetRenderbufferParameteriv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetSamplerParameterIiv(sampler.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glGetSamplerParameterIuiv(sampler.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetSamplerParameterfv(sampler.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetSamplerParameteriv(sampler.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetShaderInfoLog(GlHandle shader, out int length, Span infoLog) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* infoLogPtr = infoLog) - { - Context.glGetShaderInfoLog(shader.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetShaderSource(GlHandle shader, out int length, Span source) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* sourcePtr = source) - { - Context.glGetShaderSource(shader.Value, checked((int)source.Length), lengthPtr, sourcePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetShaderiv(GlHandle shader, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetShaderiv(shader.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte* GetString(uint name) - { - return Context.glGetString(name); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte* GetString(uint name, uint index) - { - return Context.glGetStringi(name, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSynciv(glSync sync, uint pname, out int length, Span values) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (int* valuesPtr = values) - { - Context.glGetSynciv(sync, pname, checked((int)values.Length), lengthPtr, valuesPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexImage(uint target, int level, uint format, uint type, void* pixels) - { - Context.glGetTexImage(target, level, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetTexLevelParameterfv(target, level, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTexLevelParameteriv(target, level, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexParameterI(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTexParameterIiv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexParameterI(uint target, uint pname, Span @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glGetTexParameterIuiv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexParameter(uint target, uint pname, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetTexParameterfv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTexParameter(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTexParameteriv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbackVarying(GlHandle program, uint index, out int length, out int size, out uint type, Span name) - { - length = default; - size = default; - type = default; - fixed (int* lengthPtr = &length) - { - fixed (int* sizePtr = &size) - { - fixed (uint* typePtr = &type) - { - fixed (byte* namePtr = name) - { - Context.glGetTransformFeedbackVarying(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); - } - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetUniformBlockIndex(GlHandle program, ReadOnlySpan uniformBlockName) - { - fixed (byte* uniformBlockNamePtr = uniformBlockName) - { - return Context.glGetUniformBlockIndex(program.Value, uniformBlockNamePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniformIndices(GlHandle program, int uniformCount, byte** uniformNames, Span uniformIndices) - { - fixed (uint* uniformIndicesPtr = uniformIndices) - { - Context.glGetUniformIndices(program.Value, uniformCount, uniformNames, uniformIndicesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetUniformLocation(GlHandle program, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetUniformLocation(program.Value, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniform(GlHandle program, int location, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetUniformfv(program.Value, location, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniform(GlHandle program, int location, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetUniformiv(program.Value, location, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniform(GlHandle program, int location, Span @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glGetUniformuiv(program.Value, location, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribI(uint index, uint pname, out int @params) - { - @params = default; - fixed (int* @paramsPtr = &@params) - { - Context.glGetVertexAttribIiv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribI(uint index, uint pname, out uint @params) - { - @params = default; - fixed (uint* @paramsPtr = &@params) - { - Context.glGetVertexAttribIuiv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribPointerv(uint index, uint pname, void** pointer) - { - Context.glGetVertexAttribPointerv(index, pname, pointer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttrib(uint index, uint pname, Span @params) - { - if (@params.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); - } - fixed (double* @paramsPtr = @params) - { - Context.glGetVertexAttribdv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttrib(uint index, uint pname, Span @params) - { - if (@params.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); - } - fixed (float* @paramsPtr = @params) - { - Context.glGetVertexAttribfv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttrib(uint index, uint pname, Span @params) - { - if (@params.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); - } - fixed (int* @paramsPtr = @params) - { - Context.glGetVertexAttribiv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Hint(uint target, uint mode) - { - Context.glHint(target, mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsBuffer(GlHandle buffer) - { - return Context.glIsBuffer(buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsEnabled(uint cap) - { - return Context.glIsEnabled(cap); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsEnabled(uint target, uint index) - { - return Context.glIsEnabledi(target, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsFramebuffer(GlHandle framebuffer) - { - return Context.glIsFramebuffer(framebuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsProgram(GlHandle program) - { - return Context.glIsProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsQuery(uint id) - { - return Context.glIsQuery(id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsRenderbuffer(GlHandle renderbuffer) - { - return Context.glIsRenderbuffer(renderbuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsSampler(GlHandle sampler) - { - return Context.glIsSampler(sampler.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsShader(GlHandle shader) - { - return Context.glIsShader(shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsSync(glSync sync) - { - return Context.glIsSync(sync); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsTexture(GlHandle texture) - { - return Context.glIsTexture(texture.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsVertexArray(uint array) - { - return Context.glIsVertexArray(array); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void LineWidth(float width) - { - Context.glLineWidth(width); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void LinkProgram(GlHandle program) - { - Context.glLinkProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void LogicOp(uint opcode) - { - Context.glLogicOp(opcode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void* MapBuffer(uint target, uint access) - { - return Context.glMapBuffer(target, access); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void* MapBufferRange(uint target, nint offset, nint length, uint access) - { - return Context.glMapBufferRange(target, offset, length, access); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawArrays(uint mode, ReadOnlySpan first, ReadOnlySpan count) - { - if (count.Length != first.Length) { - throw new ArgumentException("Span lengths controlled by drawcount must match.", nameof(count)); - } - fixed (int* firstPtr = first) - { - fixed (int* countPtr = count) - { - Context.glMultiDrawArrays(mode, firstPtr, countPtr, checked((int)first.Length)); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawElements(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount) - { - if (count.Length < checked((int)drawcount)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); - } - fixed (int* countPtr = count) - { - Context.glMultiDrawElements(mode, countPtr, type, indices, drawcount); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawElementsBaseVertex(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount, ReadOnlySpan basevertex) - { - if (count.Length < checked((int)drawcount)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); - } - if (basevertex.Length < checked((int)drawcount)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(basevertex)); - } - fixed (int* countPtr = count) - { - fixed (int* basevertexPtr = basevertex) - { - Context.glMultiDrawElementsBaseVertex(mode, countPtr, type, indices, drawcount, basevertexPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PixelStore(uint pname, float param) - { - Context.glPixelStoref(pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PixelStore(uint pname, int param) - { - Context.glPixelStorei(pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, float param) - { - Context.glPointParameterf(pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, ReadOnlySpan @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glPointParameterfv(pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, int param) - { - Context.glPointParameteri(pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, ReadOnlySpan @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glPointParameteriv(pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointSize(float size) - { - Context.glPointSize(size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonMode(uint face, uint mode) - { - Context.glPolygonMode(face, mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonOffset(float factor, float units) - { - Context.glPolygonOffset(factor, units); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PrimitiveRestartIndex(uint index) - { - Context.glPrimitiveRestartIndex(index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ProvokingVertex(uint mode) - { - Context.glProvokingVertex(mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void QueryCounter(uint id, uint target) - { - Context.glQueryCounter(id, target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReadBuffer(uint src) - { - Context.glReadBuffer(src); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReadPixels(int x, int y, int width, int height, uint format, uint type, void* pixels) - { - Context.glReadPixels(x, y, width, height, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void RenderbufferStorage(uint target, uint internalformat, int width, int height) - { - Context.glRenderbufferStorage(target, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void RenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height) - { - Context.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SampleCoverage(float value, byte invert) - { - Context.glSampleCoverage(value, invert); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SampleMaski(uint maskNumber, uint mask) - { - Context.glSampleMaski(maskNumber, mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) - { - fixed (int* paramPtr = param) - { - Context.glSamplerParameterIiv(sampler.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) - { - fixed (uint* paramPtr = param) - { - Context.glSamplerParameterIuiv(sampler.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, float param) - { - Context.glSamplerParameterf(sampler.Value, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) - { - fixed (float* paramPtr = param) - { - Context.glSamplerParameterfv(sampler.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, int param) - { - Context.glSamplerParameteri(sampler.Value, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) - { - fixed (int* paramPtr = param) - { - Context.glSamplerParameteriv(sampler.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Scissor(int x, int y, int width, int height) - { - Context.glScissor(x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ShaderSource(GlHandle shader, int count, byte** @string, ReadOnlySpan length) - { - if (length.Length < checked((int)count)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'count'.", nameof(length)); - } - fixed (int* lengthPtr = length) - { - Context.glShaderSource(shader.Value, count, @string, lengthPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilFunc(uint func, int @ref, uint mask) - { - Context.glStencilFunc(func, @ref, mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilFuncSeparate(uint face, uint func, int @ref, uint mask) - { - Context.glStencilFuncSeparate(face, func, @ref, mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilMask(uint mask) - { - Context.glStencilMask(mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilMaskSeparate(uint face, uint mask) - { - Context.glStencilMaskSeparate(face, mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilOp(uint fail, uint zfail, uint zpass) - { - Context.glStencilOp(fail, zfail, zpass); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void StencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass) - { - Context.glStencilOpSeparate(face, sfail, dpfail, dppass); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexBuffer(uint target, uint internalformat, GlHandle buffer) - { - Context.glTexBuffer(target, internalformat, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexImage1D(uint target, int level, int internalformat, int width, int border, uint format, uint type, void* pixels) - { - Context.glTexImage1D(target, level, internalformat, width, border, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexImage2D(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, void* pixels) - { - Context.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) - { - Context.glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexImage3D(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, void* pixels) - { - Context.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) - { - Context.glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glTexParameterIiv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glTexParameterIuiv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameter(uint target, uint pname, float param) - { - Context.glTexParameterf(target, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameter(uint target, uint pname, ReadOnlySpan @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glTexParameterfv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameter(uint target, uint pname, int param) - { - Context.glTexParameteri(target, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexParameter(uint target, uint pname, ReadOnlySpan @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glTexParameteriv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, void* pixels) - { - Context.glTexSubImage1D(target, level, xoffset, width, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) - { - Context.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) - { - Context.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TransformFeedbackVaryings(GlHandle program, int count, byte** varyings, uint bufferMode) - { - Context.glTransformFeedbackVaryings(program.Value, count, varyings, bufferMode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UniformBlockBinding(GlHandle program, uint uniformBlockIndex, uint uniformBlockBinding) - { - Context.glUniformBlockBinding(program.Value, uniformBlockIndex, uniformBlockBinding); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte UnmapBuffer(uint target) - { - return Context.glUnmapBuffer(target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UseProgram(GlHandle program) - { - Context.glUseProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ValidateProgram(GlHandle program) - { - Context.glValidateProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, double x) - { - Context.glVertexAttrib1d(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, float x) - { - Context.glVertexAttrib1f(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, short x) - { - Context.glVertexAttrib1s(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, double x, double y) - { - Context.glVertexAttrib2d(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, float x, float y) - { - Context.glVertexAttrib2f(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, short x, short y) - { - Context.glVertexAttrib2s(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, double x, double y, double z) - { - Context.glVertexAttrib3d(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, float x, float y, float z) - { - Context.glVertexAttrib3f(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, short x, short y, short z) - { - Context.glVertexAttrib3s(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (sbyte* vPtr = v) - { - Context.glVertexAttrib4Nbv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (int* vPtr = v) - { - Context.glVertexAttrib4Niv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (short* vPtr = v) - { - Context.glVertexAttrib4Nsv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, byte x, byte y, byte z, byte w) - { - Context.glVertexAttrib4Nub(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (uint* vPtr = v) - { - Context.glVertexAttrib4Nuiv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribNormalized(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (ushort* vPtr = v) - { - Context.glVertexAttrib4Nusv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (sbyte* vPtr = v) - { - Context.glVertexAttrib4bv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, double x, double y, double z, double w) - { - Context.glVertexAttrib4d(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, float x, float y, float z, float w) - { - Context.glVertexAttrib4f(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (int* vPtr = v) - { - Context.glVertexAttrib4iv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, short x, short y, short z, short w) - { - Context.glVertexAttrib4s(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (byte* vPtr = v) - { - Context.glVertexAttrib4ubv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (uint* vPtr = v) - { - Context.glVertexAttrib4uiv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttrib(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (ushort* vPtr = v) - { - Context.glVertexAttrib4usv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribDivisor(uint index, uint divisor) - { - Context.glVertexAttribDivisor(index, divisor); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, int x) - { - Context.glVertexAttribI1i(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, uint x) - { - Context.glVertexAttribI1ui(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, int x, int y) - { - Context.glVertexAttribI2i(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, uint x, uint y) - { - Context.glVertexAttribI2ui(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, int x, int y, int z) - { - Context.glVertexAttribI3i(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, uint x, uint y, uint z) - { - Context.glVertexAttribI3ui(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (sbyte* vPtr = v) - { - Context.glVertexAttribI4bv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, int x, int y, int z, int w) - { - Context.glVertexAttribI4i(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (short* vPtr = v) - { - Context.glVertexAttribI4sv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (byte* vPtr = v) - { - Context.glVertexAttribI4ubv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, uint x, uint y, uint z, uint w) - { - Context.glVertexAttribI4ui(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribI(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (ushort* vPtr = v) - { - Context.glVertexAttribI4usv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribIPointer(uint index, int size, uint type, int stride, void* pointer) - { - Context.glVertexAttribIPointer(index, size, type, stride, pointer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribP(uint index, uint type, byte normalized, uint value) - { - Context.glVertexAttribP1ui(index, type, normalized, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribP2(uint index, uint type, byte normalized, uint value) - { - Context.glVertexAttribP2ui(index, type, normalized, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribP3(uint index, uint type, byte normalized, uint value) - { - Context.glVertexAttribP3ui(index, type, normalized, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribP4(uint index, uint type, byte normalized, uint value) - { - Context.glVertexAttribP4ui(index, type, normalized, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribPointer(uint index, int size, uint type, byte normalized, int stride, void* pointer) - { - Context.glVertexAttribPointer(index, size, type, normalized, stride, pointer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Viewport(int x, int y, int width, int height) - { - Context.glViewport(x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void WaitSync(glSync sync, uint flags, ulong timeout) - { - Context.glWaitSync(sync, flags, timeout); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs deleted file mode 100644 index 484c5f86..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs +++ /dev/null @@ -1,238 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.0 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BeginQueryIndexed(uint target, uint index, uint id) - { - Context.glBeginQueryIndexed(target, index, id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTransformFeedback(uint target, uint id) - { - Context.glBindTransformFeedback(target, id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendEquationSeparate(uint buf, uint modeRGB, uint modeAlpha) - { - Context.glBlendEquationSeparatei(buf, modeRGB, modeAlpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendEquation(uint buf, uint mode) - { - Context.glBlendEquationi(buf, mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendFuncSeparate(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) - { - Context.glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlendFunc(uint buf, uint src, uint dst) - { - Context.glBlendFunci(buf, src, dst); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteTransformFeedbacks(ReadOnlySpan ids) - { - fixed (uint* idsPtr = ids) - { - Context.glDeleteTransformFeedbacks(checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawArraysIndirect(uint mode, void* indirect) - { - Context.glDrawArraysIndirect(mode, indirect); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsIndirect(uint mode, uint type, void* indirect) - { - Context.glDrawElementsIndirect(mode, type, indirect); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawTransformFeedback(uint mode, uint id) - { - Context.glDrawTransformFeedback(mode, id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawTransformFeedbackStream(uint mode, uint id, uint stream) - { - Context.glDrawTransformFeedbackStream(mode, id, stream); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EndQueryIndexed(uint target, uint index) - { - Context.glEndQueryIndexed(target, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenTransformFeedbacks(Span ids) - { - fixed (uint* idsPtr = ids) - { - Context.glGenTransformFeedbacks(checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveSubroutineName(GlHandle program, uint shadertype, uint index, out int length, Span name) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* namePtr = name) - { - Context.glGetActiveSubroutineName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveSubroutineUniformName(GlHandle program, uint shadertype, uint index, out int length, Span name) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* namePtr = name) - { - Context.glGetActiveSubroutineUniformName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pname, Span values) - { - fixed (int* valuesPtr = values) - { - Context.glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pname, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramStageiv(GlHandle program, uint shadertype, uint pname, out int values) - { - values = default; - fixed (int* valuesPtr = &values) - { - Context.glGetProgramStageiv(program.Value, shadertype, pname, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryIndexediv(uint target, uint index, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetQueryIndexediv(target, index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetSubroutineIndex(GlHandle program, uint shadertype, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetSubroutineIndex(program.Value, shadertype, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetSubroutineUniformLocation(GlHandle program, uint shadertype, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetSubroutineUniformLocation(program.Value, shadertype, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniformSubroutineuiv(uint shadertype, int location, out uint @params) - { - @params = default; - fixed (uint* @paramsPtr = &@params) - { - Context.glGetUniformSubroutineuiv(shadertype, location, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetUniform(GlHandle program, int location, Span @params) - { - fixed (double* @paramsPtr = @params) - { - Context.glGetUniformdv(program.Value, location, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsTransformFeedback(uint id) - { - return Context.glIsTransformFeedback(id); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MinSampleShading(float value) - { - Context.glMinSampleShading(value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PatchParameter(uint pname, ReadOnlySpan values) - { - fixed (float* valuesPtr = values) - { - Context.glPatchParameterfv(pname, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PatchParameter(uint pname, int value) - { - Context.glPatchParameteri(pname, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PauseTransformFeedback() - { - Context.glPauseTransformFeedback(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ResumeTransformFeedback() - { - Context.glResumeTransformFeedback(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UniformSubroutinesuiv(uint shadertype, ReadOnlySpan indices) - { - fixed (uint* indicesPtr = indices) - { - Context.glUniformSubroutinesuiv(shadertype, checked((int)indices.Length), indicesPtr); - } - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs deleted file mode 100644 index 795baf52..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs +++ /dev/null @@ -1,286 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.1 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ActiveShaderProgram(uint pipeline, GlHandle program) - { - Context.glActiveShaderProgram(pipeline, program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindProgramPipeline(uint pipeline) - { - Context.glBindProgramPipeline(pipeline); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearDepth(float d) - { - Context.glClearDepthf(d); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle CreateShaderProgramv(uint type, int count, byte** strings) - { - return GlHandle.Create(Context.glCreateShaderProgramv(type, count, strings)); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteProgramPipelines(ReadOnlySpan pipelines) - { - fixed (uint* pipelinesPtr = pipelines) - { - Context.glDeleteProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthRangeArrayv(uint first, int count, ReadOnlySpan v) - { - fixed (double* vPtr = v) - { - Context.glDepthRangeArrayv(first, count, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthRangeIndexed(uint index, double n, double f) - { - Context.glDepthRangeIndexed(index, n, f); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DepthRange(float n, float f) - { - Context.glDepthRangef(n, f); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenProgramPipelines(Span pipelines) - { - fixed (uint* pipelinesPtr = pipelines) - { - Context.glGenProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetDoublei_v(uint target, uint index, Span data) - { - fixed (double* dataPtr = data) - { - Context.glGetDoublei_v(target, index, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFloati_v(uint target, uint index, Span data) - { - fixed (float* dataPtr = data) - { - Context.glGetFloati_v(target, index, dataPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramBinary(GlHandle program, int bufSize, out int length, out uint binaryFormat, void* binary) - { - length = default; - binaryFormat = default; - fixed (int* lengthPtr = &length) - { - fixed (uint* binaryFormatPtr = &binaryFormat) - { - Context.glGetProgramBinary(program.Value, bufSize, lengthPtr, binaryFormatPtr, binary); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramPipelineInfoLog(uint pipeline, out int length, Span infoLog) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* infoLogPtr = infoLog) - { - Context.glGetProgramPipelineInfoLog(pipeline, checked((int)infoLog.Length), lengthPtr, infoLogPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramPipelineiv(uint pipeline, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetProgramPipelineiv(pipeline, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetShaderPrecisionFormat(uint shadertype, uint precisiontype, Span range, out int precision) - { - precision = default; - if (range.Length < 2) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '2'.", nameof(range)); - } - fixed (int* rangePtr = range) - { - fixed (int* precisionPtr = &precision) - { - Context.glGetShaderPrecisionFormat(shadertype, precisiontype, rangePtr, precisionPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribLdv(uint index, uint pname, Span @params) - { - fixed (double* @paramsPtr = @params) - { - Context.glGetVertexAttribLdv(index, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte IsProgramPipeline(uint pipeline) - { - return Context.glIsProgramPipeline(pipeline); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ProgramBinary(GlHandle program, uint binaryFormat, void* binary, int length) - { - Context.glProgramBinary(program.Value, binaryFormat, binary, length); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ProgramParameter(GlHandle program, uint pname, int value) - { - Context.glProgramParameteri(program.Value, pname, value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReleaseShaderCompiler() - { - Context.glReleaseShaderCompiler(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ScissorArrayv(uint first, int count, ReadOnlySpan v) - { - fixed (int* vPtr = v) - { - Context.glScissorArrayv(first, count, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ScissorIndexed(uint index, int left, int bottom, int width, int height) - { - Context.glScissorIndexed(index, left, bottom, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ScissorIndexed(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (int* vPtr = v) - { - Context.glScissorIndexedv(index, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ShaderBinary(ReadOnlySpan shaders, uint binaryFormat, void* binary, int length) - { - fixed (uint* shadersPtr = shaders) - { - Context.glShaderBinary(checked((int)shaders.Length), shadersPtr, binaryFormat, binary, length); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UseProgramStages(uint pipeline, uint stages, GlHandle program) - { - Context.glUseProgramStages(pipeline, stages, program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ValidateProgramPipeline(uint pipeline) - { - Context.glValidateProgramPipeline(pipeline); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribL(uint index, double x) - { - Context.glVertexAttribL1d(index, x); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribL(uint index, double x, double y) - { - Context.glVertexAttribL2d(index, x, y); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribL(uint index, double x, double y, double z) - { - Context.glVertexAttribL3d(index, x, y, z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribL(uint index, double x, double y, double z, double w) - { - Context.glVertexAttribL4d(index, x, y, z, w); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribLPointer(uint index, int size, uint type, int stride, void* pointer) - { - Context.glVertexAttribLPointer(index, size, type, stride, pointer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ViewportArrayv(uint first, int count, ReadOnlySpan v) - { - fixed (float* vPtr = v) - { - Context.glViewportArrayv(first, count, vPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ViewportIndexed(uint index, float x, float y, float w, float h) - { - Context.glViewportIndexedf(index, x, y, w, h); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ViewportIndexed(uint index, ReadOnlySpan v) - { - if (v.Length < 4) { - throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); - } - fixed (float* vPtr = v) - { - Context.glViewportIndexedfv(index, vPtr); - } - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs deleted file mode 100644 index 4d0f9c84..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs +++ /dev/null @@ -1,93 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.2 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindImageTexture(uint unit, GlHandle texture, int level, byte layered, int layer, uint access, uint format) - { - Context.glBindImageTexture(unit, texture.Value, level, layered, layer, access, format); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawArraysInstancedBaseInstance(uint mode, int first, int count, int instancecount, uint baseinstance) - { - Context.glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstancedBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, uint baseinstance) - { - Context.glDrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstancedBaseVertexBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, int basevertex, uint baseinstance) - { - Context.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawTransformFeedbackInstanced(uint mode, uint id, int instancecount) - { - Context.glDrawTransformFeedbackInstanced(mode, id, instancecount); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawTransformFeedbackStreamInstanced(uint mode, uint id, uint stream, int instancecount) - { - Context.glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveAtomicCounterBufferiv(GlHandle program, GlHandle bufferIndex, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInternalformativ(uint target, uint internalformat, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetInternalformativ(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MemoryBarrier(uint barriers) - { - Context.glMemoryBarrier(barriers); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexStorage1D(uint target, int levels, uint internalformat, int width) - { - Context.glTexStorage1D(target, levels, internalformat, width); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexStorage2D(uint target, int levels, uint internalformat, int width, int height) - { - Context.glTexStorage2D(target, levels, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexStorage3D(uint target, int levels, uint internalformat, int width, int height, int depth) - { - Context.glTexStorage3D(target, levels, internalformat, width, height, depth); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs deleted file mode 100644 index 134d7495..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs +++ /dev/null @@ -1,379 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.3 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexBuffer(uint bindingindex, GlHandle buffer, nint offset, int stride) - { - Context.glBindVertexBuffer(bindingindex, buffer.Value, offset, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBufferData(uint target, uint internalformat, uint format, uint type, void* data) - { - Context.glClearBufferData(target, internalformat, format, type, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearBufferSubData(uint target, uint internalformat, nint offset, nint size, uint format, uint type, void* data) - { - Context.glClearBufferSubData(target, internalformat, offset, size, format, type, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth) - { - Context.glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DebugMessageCallback(IntPtr callback, void* userParam) - { - Context.glDebugMessageCallback(callback, userParam); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DebugMessageControl(uint source, uint type, uint severity, ReadOnlySpan ids, byte enabled) - { - fixed (uint* idsPtr = ids) - { - Context.glDebugMessageControl(source, type, severity, checked((int)ids.Length), idsPtr, enabled); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DebugMessageInsert(uint source, uint type, uint id, uint severity, int length, ReadOnlySpan buf) - { - fixed (byte* bufPtr = buf) - { - Context.glDebugMessageInsert(source, type, id, severity, length, bufPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z) - { - Context.glDispatchCompute(num_groups_x, num_groups_y, num_groups_z); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DispatchComputeIndirect(nint indirect) - { - Context.glDispatchComputeIndirect(indirect); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FramebufferParameter(uint target, uint pname, int param) - { - Context.glFramebufferParameteri(target, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetDebugMessageLog(Span sources, Span types, Span ids, Span severities, Span lengths, Span messageLog) - { - if (types.Length != sources.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(types)); - } - if (ids.Length != sources.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(ids)); - } - if (severities.Length != sources.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(severities)); - } - if (lengths.Length != sources.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(lengths)); - } - fixed (uint* sourcesPtr = sources) - { - fixed (uint* typesPtr = types) - { - fixed (uint* idsPtr = ids) - { - fixed (uint* severitiesPtr = severities) - { - fixed (int* lengthsPtr = lengths) - { - fixed (byte* messageLogPtr = messageLog) - { - return Context.glGetDebugMessageLog(checked((uint)sources.Length), checked((int)messageLog.Length), sourcesPtr, typesPtr, idsPtr, severitiesPtr, lengthsPtr, messageLogPtr); - } - } - } - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFramebufferParameteriv(uint target, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetFramebufferParameteriv(target, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInternalformati64v(uint target, uint internalformat, uint pname, Span @params) - { - fixed (long* @paramsPtr = @params) - { - Context.glGetInternalformati64v(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetObjectLabel(uint identifier, uint name, out int length, Span label) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* labelPtr = label) - { - Context.glGetObjectLabel(identifier, name, checked((int)label.Length), lengthPtr, labelPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetObjectPtrLabel(void* ptr, out int length, Span label) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* labelPtr = label) - { - Context.glGetObjectPtrLabel(ptr, checked((int)label.Length), lengthPtr, labelPtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetPointerv(uint pname, void** @params) - { - Context.glGetPointerv(pname, @params); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetProgramInterfaceiv(program.Value, programInterface, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetProgramResourceIndex(GlHandle program, uint programInterface, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetProgramResourceIndex(program.Value, programInterface, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetProgramResourceLocation(GlHandle program, uint programInterface, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetProgramResourceLocation(program.Value, programInterface, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public int GetProgramResourceLocationIndex(GlHandle program, uint programInterface, ReadOnlySpan name) - { - fixed (byte* namePtr = name) - { - return Context.glGetProgramResourceLocationIndex(program.Value, programInterface, namePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramResourceName(GlHandle program, uint programInterface, uint index, out int length, Span name) - { - length = default; - fixed (int* lengthPtr = &length) - { - fixed (byte* namePtr = name) - { - Context.glGetProgramResourceName(program.Value, programInterface, index, checked((int)name.Length), lengthPtr, namePtr); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramResourceiv(GlHandle program, uint programInterface, uint index, ReadOnlySpan props, out int length, Span @params) - { - length = default; - fixed (uint* propsPtr = props) - { - fixed (int* lengthPtr = &length) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetProgramResourceiv(program.Value, programInterface, index, checked((int)props.Length), propsPtr, checked((int)@params.Length), lengthPtr, @paramsPtr); - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateBufferData(GlHandle buffer) - { - Context.glInvalidateBufferData(buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateBufferSubData(GlHandle buffer, nint offset, nint length) - { - Context.glInvalidateBufferSubData(buffer.Value, offset, length); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateFramebuffer(uint target, ReadOnlySpan attachments) - { - fixed (uint* attachmentsPtr = attachments) - { - Context.glInvalidateFramebuffer(target, checked((int)attachments.Length), attachmentsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateSubFramebuffer(uint target, ReadOnlySpan attachments, int x, int y, int width, int height) - { - fixed (uint* attachmentsPtr = attachments) - { - Context.glInvalidateSubFramebuffer(target, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateTexImage(GlHandle texture, int level) - { - Context.glInvalidateTexImage(texture.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth) - { - Context.glInvalidateTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawArraysIndirect(uint mode, void* indirect, int drawcount, int stride) - { - Context.glMultiDrawArraysIndirect(mode, indirect, drawcount, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawElementsIndirect(uint mode, uint type, void* indirect, int drawcount, int stride) - { - Context.glMultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ObjectLabel(uint identifier, uint name, int length, ReadOnlySpan label) - { - fixed (byte* labelPtr = label) - { - Context.glObjectLabel(identifier, name, length, labelPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ObjectPtrLabel(void* ptr, int length, ReadOnlySpan label) - { - fixed (byte* labelPtr = label) - { - Context.glObjectPtrLabel(ptr, length, labelPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PopDebugGroup() - { - Context.glPopDebugGroup(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PushDebugGroup(uint source, uint id, int length, ReadOnlySpan message) - { - fixed (byte* messagePtr = message) - { - Context.glPushDebugGroup(source, id, length, messagePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ShaderStorageBlockBinding(GlHandle program, uint storageBlockIndex, uint storageBlockBinding) - { - Context.glShaderStorageBlockBinding(program.Value, storageBlockIndex, storageBlockBinding); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexBufferRange(uint target, uint internalformat, GlHandle buffer, nint offset, nint size) - { - Context.glTexBufferRange(target, internalformat, buffer.Value, offset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexStorage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) - { - Context.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexStorage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) - { - Context.glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureView(GlHandle texture, uint target, GlHandle origtexture, uint internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers) - { - Context.glTextureView(texture.Value, target, origtexture.Value, internalformat, minlevel, numlevels, minlayer, numlayers); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribBinding(uint attribindex, uint bindingindex) - { - Context.glVertexAttribBinding(attribindex, bindingindex); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribFormat(uint attribindex, int size, uint type, byte normalized, uint relativeoffset) - { - Context.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribIFormat(uint attribindex, int size, uint type, uint relativeoffset) - { - Context.glVertexAttribIFormat(attribindex, size, type, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttribLFormat(uint attribindex, int size, uint type, uint relativeoffset) - { - Context.glVertexAttribLFormat(attribindex, size, type, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexBindingDivisor(uint bindingindex, uint divisor) - { - Context.glVertexBindingDivisor(bindingindex, divisor); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs deleted file mode 100644 index 2d4daadf..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs +++ /dev/null @@ -1,111 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.4 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBuffersBase(uint target, uint first, ReadOnlySpan buffers) - { - fixed (uint* buffersPtr = buffers) - { - Context.glBindBuffersBase(target, first, checked((int)buffers.Length), buffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBuffersRange(uint target, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan sizes) - { - if (offsets.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); - } - if (sizes.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(sizes)); - } - fixed (uint* buffersPtr = buffers) - { - fixed (nint* offsetsPtr = offsets) - { - fixed (nint* sizesPtr = sizes) - { - Context.glBindBuffersRange(target, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, sizesPtr); - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindImageTextures(uint first, ReadOnlySpan textures) - { - fixed (uint* texturesPtr = textures) - { - Context.glBindImageTextures(first, checked((int)textures.Length), texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindSamplers(uint first, ReadOnlySpan samplers) - { - fixed (uint* samplersPtr = samplers) - { - Context.glBindSamplers(first, checked((int)samplers.Length), samplersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTextures(uint first, ReadOnlySpan textures) - { - fixed (uint* texturesPtr = textures) - { - Context.glBindTextures(first, checked((int)textures.Length), texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexBuffers(uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) - { - if (offsets.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); - } - if (strides.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); - } - fixed (uint* buffersPtr = buffers) - { - fixed (nint* offsetsPtr = offsets) - { - fixed (int* stridesPtr = strides) - { - Context.glBindVertexBuffers(first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); - } - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BufferStorage(uint target, nint size, void* data, uint flags) - { - Context.glBufferStorage(target, size, data, flags); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearTexImage(GlHandle texture, int level, uint format, uint type, void* data) - { - Context.glClearTexImage(texture.Value, level, format, type, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* data) - { - Context.glClearTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs deleted file mode 100644 index 6e831635..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs +++ /dev/null @@ -1,822 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.5 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTextureUnit(uint unit, GlHandle texture) - { - Context.glBindTextureUnit(unit, texture.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BlitNamedFramebuffer(GlHandle readFramebuffer, GlHandle drawFramebuffer, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) - { - Context.glBlitNamedFramebuffer(readFramebuffer.Value, drawFramebuffer.Value, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint CheckNamedFramebufferStatus(GlHandle framebuffer, uint target) - { - return Context.glCheckNamedFramebufferStatus(framebuffer.Value, target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedBufferData(GlHandle buffer, uint internalformat, uint format, uint type, void* data) - { - Context.glClearNamedBufferData(buffer.Value, internalformat, format, type, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedBufferSubData(GlHandle buffer, uint internalformat, nint offset, nint size, uint format, uint type, void* data) - { - Context.glClearNamedBufferSubData(buffer.Value, internalformat, offset, size, format, type, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, float depth, int stencil) - { - Context.glClearNamedFramebufferfi(framebuffer.Value, buffer, drawbuffer, depth, stencil); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (float* valuePtr = value) - { - Context.glClearNamedFramebufferfv(framebuffer.Value, buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (int* valuePtr = value) - { - Context.glClearNamedFramebufferiv(framebuffer.Value, buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) - { - fixed (uint* valuePtr = value) - { - Context.glClearNamedFramebufferuiv(framebuffer.Value, buffer, drawbuffer, valuePtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClipControl(uint origin, uint depth) - { - Context.glClipControl(origin, depth); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, int imageSize, void* data) - { - Context.glCompressedTextureSubImage1D(texture.Value, level, xoffset, width, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) - { - Context.glCompressedTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) - { - Context.glCompressedTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyNamedBufferSubData(GlHandle readBuffer, GlHandle writeBuffer, nint readOffset, nint writeOffset, nint size) - { - Context.glCopyNamedBufferSubData(readBuffer.Value, writeBuffer.Value, readOffset, writeOffset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage1D(GlHandle texture, int level, int xoffset, int x, int y, int width) - { - Context.glCopyTextureSubImage1D(texture.Value, level, xoffset, x, y, width); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int x, int y, int width, int height) - { - Context.glCopyTextureSubImage2D(texture.Value, level, xoffset, yoffset, x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) - { - Context.glCopyTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, x, y, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateBuffers(Span buffers) - { - fixed (uint* buffersPtr = buffers) - { - Context.glCreateBuffers(checked((int)buffers.Length), buffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateFramebuffers(Span framebuffers) - { - fixed (uint* framebuffersPtr = framebuffers) - { - Context.glCreateFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateProgramPipelines(Span pipelines) - { - fixed (uint* pipelinesPtr = pipelines) - { - Context.glCreateProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateQueries(uint target, Span ids) - { - fixed (uint* idsPtr = ids) - { - Context.glCreateQueries(target, checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateRenderbuffers(Span renderbuffers) - { - fixed (uint* renderbuffersPtr = renderbuffers) - { - Context.glCreateRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateSamplers(Span samplers) - { - fixed (uint* samplersPtr = samplers) - { - Context.glCreateSamplers(checked((int)samplers.Length), samplersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateTextures(uint target, Span textures) - { - fixed (uint* texturesPtr = textures) - { - Context.glCreateTextures(target, checked((int)textures.Length), texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateTransformFeedbacks(Span ids) - { - fixed (uint* idsPtr = ids) - { - Context.glCreateTransformFeedbacks(checked((int)ids.Length), idsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CreateVertexArrays(Span arrays) - { - fixed (uint* arraysPtr = arrays) - { - Context.glCreateVertexArrays(checked((int)arrays.Length), arraysPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DisableVertexArrayAttrib(uint vaobj, uint index) - { - Context.glDisableVertexArrayAttrib(vaobj, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EnableVertexArrayAttrib(uint vaobj, uint index) - { - Context.glEnableVertexArrayAttrib(vaobj, index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FlushMappedNamedBufferRange(GlHandle buffer, nint offset, nint length) - { - Context.glFlushMappedNamedBufferRange(buffer.Value, offset, length); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenerateTextureMipmap(GlHandle texture) - { - Context.glGenerateTextureMipmap(texture.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetCompressedTextureImage(GlHandle texture, int level, int bufSize, void* pixels) - { - Context.glGetCompressedTextureImage(texture.Value, level, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetCompressedTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int bufSize, void* pixels) - { - Context.glGetCompressedTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetGraphicsResetStatus() - { - return Context.glGetGraphicsResetStatus(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) - { - fixed (long* @paramsPtr = @params) - { - Context.glGetNamedBufferParameteri64v(buffer.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetNamedBufferParameteriv(buffer.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferPointerv(GlHandle buffer, uint pname, void** @params) - { - Context.glGetNamedBufferPointerv(buffer.Value, pname, @params); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) - { - Context.glGetNamedBufferSubData(buffer.Value, offset, size, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedFramebufferAttachmentParameteriv(GlHandle framebuffer, uint attachment, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetNamedFramebufferAttachmentParameteriv(framebuffer.Value, attachment, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedFramebufferParameteriv(GlHandle framebuffer, uint pname, Span param) - { - fixed (int* paramPtr = param) - { - Context.glGetNamedFramebufferParameteriv(framebuffer.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedRenderbufferParameteriv(GlHandle renderbuffer, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetNamedRenderbufferParameteriv(renderbuffer.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObject(uint id, GlHandle buffer, uint pname, nint offset) - { - Context.glGetQueryBufferObjecti64v(id, buffer.Value, pname, offset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectiv(uint id, GlHandle buffer, uint pname, nint offset) - { - Context.glGetQueryBufferObjectiv(id, buffer.Value, pname, offset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectui64v(uint id, GlHandle buffer, uint pname, nint offset) - { - Context.glGetQueryBufferObjectui64v(id, buffer.Value, pname, offset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectuiv(uint id, GlHandle buffer, uint pname, nint offset) - { - Context.glGetQueryBufferObjectuiv(id, buffer.Value, pname, offset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureImage(GlHandle texture, int level, uint format, uint type, int bufSize, void* pixels) - { - Context.glGetTextureImage(texture.Value, level, format, type, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetTextureLevelParameterfv(texture.Value, level, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTextureLevelParameteriv(texture.Value, level, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTextureParameterIiv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glGetTextureParameterIuiv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameter(GlHandle texture, uint pname, Span @params) - { - fixed (float* @paramsPtr = @params) - { - Context.glGetTextureParameterfv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameter(GlHandle texture, uint pname, Span @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glGetTextureParameteriv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, int bufSize, void* pixels) - { - Context.glGetTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbacki64_v(uint xfb, uint pname, uint index, Span param) - { - fixed (long* paramPtr = param) - { - Context.glGetTransformFeedbacki64_v(xfb, pname, index, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbacki_v(uint xfb, uint pname, uint index, Span param) - { - fixed (int* paramPtr = param) - { - Context.glGetTransformFeedbacki_v(xfb, pname, index, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbackiv(uint xfb, uint pname, Span param) - { - fixed (int* paramPtr = param) - { - Context.glGetTransformFeedbackiv(xfb, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayIndexed64iv(uint vaobj, uint index, uint pname, Span param) - { - fixed (long* paramPtr = param) - { - Context.glGetVertexArrayIndexed64iv(vaobj, index, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayIndexediv(uint vaobj, uint index, uint pname, Span param) - { - fixed (int* paramPtr = param) - { - Context.glGetVertexArrayIndexediv(vaobj, index, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayiv(uint vaobj, uint pname, Span param) - { - fixed (int* paramPtr = param) - { - Context.glGetVertexArrayiv(vaobj, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnCompressedTexImage(uint target, int lod, int bufSize, void* pixels) - { - Context.glGetnCompressedTexImage(target, lod, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnTexImage(uint target, int level, uint format, uint type, int bufSize, void* pixels) - { - Context.glGetnTexImage(target, level, format, type, bufSize, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) - { - if (@params.Length < checked((int)bufSize / 8)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 8'.", nameof(@params)); - } - fixed (double* @paramsPtr = @params) - { - Context.glGetnUniformdv(program.Value, location, bufSize, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) - { - if (@params.Length < checked((int)bufSize / 4)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); - } - fixed (float* @paramsPtr = @params) - { - Context.glGetnUniformfv(program.Value, location, bufSize, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) - { - if (@params.Length < checked((int)bufSize / 4)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); - } - fixed (int* @paramsPtr = @params) - { - Context.glGetnUniformiv(program.Value, location, bufSize, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) - { - if (@params.Length < checked((int)bufSize / 4)) { - throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); - } - fixed (uint* @paramsPtr = @params) - { - Context.glGetnUniformuiv(program.Value, location, bufSize, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateNamedFramebufferData(GlHandle framebuffer, ReadOnlySpan attachments) - { - fixed (uint* attachmentsPtr = attachments) - { - Context.glInvalidateNamedFramebufferData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateNamedFramebufferSubData(GlHandle framebuffer, ReadOnlySpan attachments, int x, int y, int width, int height) - { - fixed (uint* attachmentsPtr = attachments) - { - Context.glInvalidateNamedFramebufferSubData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void* MapNamedBuffer(GlHandle buffer, uint access) - { - return Context.glMapNamedBuffer(buffer.Value, access); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void* MapNamedBufferRange(GlHandle buffer, nint offset, nint length, uint access) - { - return Context.glMapNamedBufferRange(buffer.Value, offset, length, access); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MemoryBarrierByRegion(uint barriers) - { - Context.glMemoryBarrierByRegion(barriers); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedBufferData(GlHandle buffer, nint size, void* data, uint usage) - { - Context.glNamedBufferData(buffer.Value, size, data, usage); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedBufferStorage(GlHandle buffer, nint size, void* data, uint flags) - { - Context.glNamedBufferStorage(buffer.Value, size, data, flags); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) - { - Context.glNamedBufferSubData(buffer.Value, offset, size, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferDrawBuffer(GlHandle framebuffer, uint buf) - { - Context.glNamedFramebufferDrawBuffer(framebuffer.Value, buf); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferDrawBuffers(GlHandle framebuffer, ReadOnlySpan bufs) - { - fixed (uint* bufsPtr = bufs) - { - Context.glNamedFramebufferDrawBuffers(framebuffer.Value, checked((int)bufs.Length), bufsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferParameter(GlHandle framebuffer, uint pname, int param) - { - Context.glNamedFramebufferParameteri(framebuffer.Value, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferReadBuffer(GlHandle framebuffer, uint src) - { - Context.glNamedFramebufferReadBuffer(framebuffer.Value, src); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferRenderbuffer(GlHandle framebuffer, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) - { - Context.glNamedFramebufferRenderbuffer(framebuffer.Value, attachment, renderbuffertarget, renderbuffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferTexture(GlHandle framebuffer, uint attachment, GlHandle texture, int level) - { - Context.glNamedFramebufferTexture(framebuffer.Value, attachment, texture.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFramebufferTextureLayer(GlHandle framebuffer, uint attachment, GlHandle texture, int level, int layer) - { - Context.glNamedFramebufferTextureLayer(framebuffer.Value, attachment, texture.Value, level, layer); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedRenderbufferStorage(GlHandle renderbuffer, uint internalformat, int width, int height) - { - Context.glNamedRenderbufferStorage(renderbuffer.Value, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedRenderbufferStorageMultisample(GlHandle renderbuffer, int samples, uint internalformat, int width, int height) - { - Context.glNamedRenderbufferStorageMultisample(renderbuffer.Value, samples, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReadnPixels(int x, int y, int width, int height, uint format, uint type, int bufSize, void* data) - { - Context.glReadnPixels(x, y, width, height, format, type, bufSize, data); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureBarrier() - { - Context.glTextureBarrier(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureBuffer(GlHandle texture, uint internalformat, GlHandle buffer) - { - Context.glTextureBuffer(texture.Value, internalformat, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureBufferRange(GlHandle texture, uint internalformat, GlHandle buffer, nint offset, nint size) - { - Context.glTextureBufferRange(texture.Value, internalformat, buffer.Value, offset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) - { - fixed (int* @paramsPtr = @params) - { - Context.glTextureParameterIiv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) - { - fixed (uint* @paramsPtr = @params) - { - Context.glTextureParameterIuiv(texture.Value, pname, @paramsPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(GlHandle texture, uint pname, float param) - { - Context.glTextureParameterf(texture.Value, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) - { - fixed (float* paramPtr = param) - { - Context.glTextureParameterfv(texture.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(GlHandle texture, uint pname, int param) - { - Context.glTextureParameteri(texture.Value, pname, param); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) - { - fixed (int* paramPtr = param) - { - Context.glTextureParameteriv(texture.Value, pname, paramPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureStorage1D(GlHandle texture, int levels, uint internalformat, int width) - { - Context.glTextureStorage1D(texture.Value, levels, internalformat, width); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureStorage2D(GlHandle texture, int levels, uint internalformat, int width, int height) - { - Context.glTextureStorage2D(texture.Value, levels, internalformat, width, height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureStorage2DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) - { - Context.glTextureStorage2DMultisample(texture.Value, samples, internalformat, width, height, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureStorage3D(GlHandle texture, int levels, uint internalformat, int width, int height, int depth) - { - Context.glTextureStorage3D(texture.Value, levels, internalformat, width, height, depth); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureStorage3DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) - { - Context.glTextureStorage3DMultisample(texture.Value, samples, internalformat, width, height, depth, fixedsamplelocations); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, uint type, void* pixels) - { - Context.glTextureSubImage1D(texture.Value, level, xoffset, width, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) - { - Context.glTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) - { - Context.glTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TransformFeedbackBufferBase(uint xfb, uint index, GlHandle buffer) - { - Context.glTransformFeedbackBufferBase(xfb, index, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TransformFeedbackBufferRange(uint xfb, uint index, GlHandle buffer, nint offset, nint size) - { - Context.glTransformFeedbackBufferRange(xfb, index, buffer.Value, offset, size); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public byte UnmapNamedBuffer(GlHandle buffer) - { - return Context.glUnmapNamedBuffer(buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttribBinding(uint vaobj, uint attribindex, uint bindingindex) - { - Context.glVertexArrayAttribBinding(vaobj, attribindex, bindingindex); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttribFormat(uint vaobj, uint attribindex, int size, uint type, byte normalized, uint relativeoffset) - { - Context.glVertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttribIFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) - { - Context.glVertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttribLFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) - { - Context.glVertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayBindingDivisor(uint vaobj, uint bindingindex, uint divisor) - { - Context.glVertexArrayBindingDivisor(vaobj, bindingindex, divisor); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayElementBuffer(uint vaobj, GlHandle buffer) - { - Context.glVertexArrayElementBuffer(vaobj, buffer.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayVertexBuffer(uint vaobj, uint bindingindex, GlHandle buffer, nint offset, int stride) - { - Context.glVertexArrayVertexBuffer(vaobj, bindingindex, buffer.Value, offset, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayVertexBuffers(uint vaobj, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) - { - if (offsets.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); - } - if (strides.Length != buffers.Length) { - throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); - } - fixed (uint* buffersPtr = buffers) - { - fixed (nint* offsetsPtr = offsets) - { - fixed (int* stridesPtr = strides) - { - Context.glVertexArrayVertexBuffers(vaobj, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); - } - } - } - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs deleted file mode 100644 index 2cfb253d..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs +++ /dev/null @@ -1,51 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Version: 4.6 -// -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using StgSharp.Graphics.OpenGL; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawArraysIndirectCount(uint mode, void* indirect, nint drawcount, int maxdrawcount, int stride) - { - Context.glMultiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void MultiDrawElementsIndirectCount(uint mode, uint type, void* indirect, nint drawcount, int maxdrawcount, int stride) - { - Context.glMultiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonOffsetClamp(float factor, float units, float clamp) - { - Context.glPolygonOffsetClamp(factor, units, clamp); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SpecializeShader(GlHandle shader, ReadOnlySpan pEntryPoint, ReadOnlySpan pConstantIndex, ReadOnlySpan pConstantValue) - { - if (pConstantValue.Length != pConstantIndex.Length) { - throw new ArgumentException("Span lengths controlled by numSpecializationConstants must match.", nameof(pConstantValue)); - } - fixed (byte* pEntryPointPtr = pEntryPoint) - { - fixed (uint* pConstantIndexPtr = pConstantIndex) - { - fixed (uint* pConstantValuePtr = pConstantValue) - { - Context.glSpecializeShader(shader.Value, pEntryPointPtr, checked((uint)pConstantIndex.Length), pConstantIndexPtr, pConstantValuePtr); - } - } - } - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs deleted file mode 100644 index 71e949cf..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs +++ /dev/null @@ -1,261 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Uniform overloads introduced in OpenGL 3.3 -// -using System; -using System.Runtime.CompilerServices; -using StgSharp.Mathematics.Graphics; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform1f(uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (float* valuesPtr = values) { - Context.glUniform1fv(uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, int v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform1i(uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (int* valuesPtr = values) { - Context.glUniform1iv(uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, uint v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform1ui(uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (uint* valuesPtr = values) { - Context.glUniform1uiv(uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform2f(uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glUniform2fv(uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, int v0, int v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform2i(uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glUniform2iv(uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, uint v0, uint v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform2ui(uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glUniform2uiv(uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1, float v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glUniform3fv(uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, int v0, int v1, int v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform3i(uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glUniform3iv(uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform3ui(uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glUniform3uiv(uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1, float v2, float v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glUniform4fv(uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, int v0, int v1, int v2, int v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform4i(uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glUniform4iv(uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2, uint v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform4ui(uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glUniform4uiv(uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, Vec2 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform2fv(uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, Vec3 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform3fv(uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, Vec4 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform4fv(uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, GraphicsMatrix value, bool transpose = false) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs deleted file mode 100644 index 58e8a5a3..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs +++ /dev/null @@ -1,87 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Uniform overloads introduced in OpenGL 4.0 -// -using System; -using System.Runtime.CompilerServices; -using StgSharp.Mathematics.Graphics; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, double v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform1d(uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (double* valuesPtr = values) { - Context.glUniform1dv(uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, double v0, double v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform2d(uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glUniform2dv(uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, double v0, double v1, double v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform3d(uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glUniform3dv(uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, double v0, double v1, double v2, double v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glUniform4d(uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glUniform4dv(uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs deleted file mode 100644 index c9d5c485..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs +++ /dev/null @@ -1,334 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Uniform overloads introduced in OpenGL 4.1 -// -using System; -using System.Runtime.CompilerServices; -using StgSharp.Mathematics.Graphics; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, double v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform1d(program.Value, uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (double* valuesPtr = values) { - Context.glProgramUniform1dv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, float v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform1f(program.Value, uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (float* valuesPtr = values) { - Context.glProgramUniform1fv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, int v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform1i(program.Value, uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (int* valuesPtr = values) { - Context.glProgramUniform1iv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, uint v0) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform1ui(program.Value, uniform.id.SignedValue, v0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - fixed (uint* valuesPtr = values) { - Context.glProgramUniform1uiv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform2d(program.Value, uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glProgramUniform2dv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform2f(program.Value, uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform2i(program.Value, uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glProgramUniform2iv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform2ui(program.Value, uniform.id.SignedValue, v0, v1); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 2) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glProgramUniform2uiv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform3d(program.Value, uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glProgramUniform3dv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform3f(program.Value, uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform3i(program.Value, uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glProgramUniform3iv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform3ui(program.Value, uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 3) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glProgramUniform3uiv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2, double v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform4d(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (double* valuesPtr = values) { - Context.glProgramUniform4dv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2, float v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform4f(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (float* valuesPtr = values) { - Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2, int v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform4i(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (int* valuesPtr = values) { - Context.glProgramUniform4iv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2, uint v3) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform4ui(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) - { - ArgumentNullException.ThrowIfNull(uniform); - if ((values.Length % 4) != 0) { - throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); - } - fixed (uint* valuesPtr = values) { - Context.glProgramUniform4uiv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, Vec2 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, Vec3 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, Vec4 value) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(GlHandle program, Uniform uniform, GraphicsMatrix value, bool transpose = false) - { - ArgumentNullException.ThrowIfNull(uniform); - Context.glProgramUniformMatrix4fv(program.Value, uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); - } - - } -} diff --git a/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs b/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs deleted file mode 100644 index 05e23dba..00000000 --- a/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs +++ /dev/null @@ -1,670 +0,0 @@ -// -// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z -// Aggregated GL3+ commands -// -using System; -using System.Runtime.CompilerServices; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial struct OpenglContext - { - internal unsafe delegate* glActiveShaderProgram; - internal unsafe delegate* glActiveTexture; - internal unsafe delegate* glAttachShader; - internal unsafe delegate* glBeginConditionalRender; - internal unsafe delegate* glBeginQuery; - internal unsafe delegate* glBeginQueryIndexed; - internal unsafe delegate* glBeginTransformFeedback; - internal unsafe delegate* glBindAttribLocation; - internal unsafe delegate* glBindBuffer; - internal unsafe delegate* glBindBufferBase; - internal unsafe delegate* glBindBufferRange; - internal unsafe delegate* glBindBuffersBase; - internal unsafe delegate* glBindBuffersRange; - internal unsafe delegate* glBindFragDataLocation; - internal unsafe delegate* glBindFragDataLocationIndexed; - internal unsafe delegate* glBindFramebuffer; - internal unsafe delegate* glBindImageTexture; - internal unsafe delegate* glBindImageTextures; - internal unsafe delegate* glBindProgramPipeline; - internal unsafe delegate* glBindRenderbuffer; - internal unsafe delegate* glBindSampler; - internal unsafe delegate* glBindSamplers; - internal unsafe delegate* glBindTexture; - internal unsafe delegate* glBindTextureUnit; - internal unsafe delegate* glBindTextures; - internal unsafe delegate* glBindTransformFeedback; - internal unsafe delegate* glBindVertexArray; - internal unsafe delegate* glBindVertexBuffer; - internal unsafe delegate* glBindVertexBuffers; - internal unsafe delegate* glBlendColor; - internal unsafe delegate* glBlendEquation; - internal unsafe delegate* glBlendEquationSeparate; - internal unsafe delegate* glBlendEquationSeparatei; - internal unsafe delegate* glBlendEquationi; - internal unsafe delegate* glBlendFunc; - internal unsafe delegate* glBlendFuncSeparate; - internal unsafe delegate* glBlendFuncSeparatei; - internal unsafe delegate* glBlendFunci; - internal unsafe delegate* glBlitFramebuffer; - internal unsafe delegate* glBlitNamedFramebuffer; - internal unsafe delegate* glBufferData; - internal unsafe delegate* glBufferStorage; - internal unsafe delegate* glBufferSubData; - internal unsafe delegate* glCheckFramebufferStatus; - internal unsafe delegate* glCheckNamedFramebufferStatus; - internal unsafe delegate* glClampColor; - internal unsafe delegate* glClear; - internal unsafe delegate* glClearBufferData; - internal unsafe delegate* glClearBufferSubData; - internal unsafe delegate* glClearBufferfi; - internal unsafe delegate* glClearBufferfv; - internal unsafe delegate* glClearBufferiv; - internal unsafe delegate* glClearBufferuiv; - internal unsafe delegate* glClearColor; - internal unsafe delegate* glClearDepth; - internal unsafe delegate* glClearDepthf; - internal unsafe delegate* glClearNamedBufferData; - internal unsafe delegate* glClearNamedBufferSubData; - internal unsafe delegate* glClearNamedFramebufferfi; - internal unsafe delegate* glClearNamedFramebufferfv; - internal unsafe delegate* glClearNamedFramebufferiv; - internal unsafe delegate* glClearNamedFramebufferuiv; - internal unsafe delegate* glClearStencil; - internal unsafe delegate* glClearTexImage; - internal unsafe delegate* glClearTexSubImage; - internal unsafe delegate* glClientWaitSync; - internal unsafe delegate* glClipControl; - internal unsafe delegate* glColorMask; - internal unsafe delegate* glColorMaski; - internal unsafe delegate* glCompileShader; - internal unsafe delegate* glCompressedTexImage1D; - internal unsafe delegate* glCompressedTexImage2D; - internal unsafe delegate* glCompressedTexImage3D; - internal unsafe delegate* glCompressedTexSubImage1D; - internal unsafe delegate* glCompressedTexSubImage2D; - internal unsafe delegate* glCompressedTexSubImage3D; - internal unsafe delegate* glCompressedTextureSubImage1D; - internal unsafe delegate* glCompressedTextureSubImage2D; - internal unsafe delegate* glCompressedTextureSubImage3D; - internal unsafe delegate* glCopyBufferSubData; - internal unsafe delegate* glCopyImageSubData; - internal unsafe delegate* glCopyNamedBufferSubData; - internal unsafe delegate* glCopyTexImage1D; - internal unsafe delegate* glCopyTexImage2D; - internal unsafe delegate* glCopyTexSubImage1D; - internal unsafe delegate* glCopyTexSubImage2D; - internal unsafe delegate* glCopyTexSubImage3D; - internal unsafe delegate* glCopyTextureSubImage1D; - internal unsafe delegate* glCopyTextureSubImage2D; - internal unsafe delegate* glCopyTextureSubImage3D; - internal unsafe delegate* glCreateBuffers; - internal unsafe delegate* glCreateFramebuffers; - internal unsafe delegate* glCreateProgram; - internal unsafe delegate* glCreateProgramPipelines; - internal unsafe delegate* glCreateQueries; - internal unsafe delegate* glCreateRenderbuffers; - internal unsafe delegate* glCreateSamplers; - internal unsafe delegate* glCreateShader; - internal unsafe delegate* glCreateShaderProgramv; - internal unsafe delegate* glCreateTextures; - internal unsafe delegate* glCreateTransformFeedbacks; - internal unsafe delegate* glCreateVertexArrays; - internal unsafe delegate* glCullFace; - internal unsafe delegate* glDebugMessageCallback; - internal unsafe delegate* glDebugMessageControl; - internal unsafe delegate* glDebugMessageInsert; - internal unsafe delegate* glDeleteBuffers; - internal unsafe delegate* glDeleteFramebuffers; - internal unsafe delegate* glDeleteProgram; - internal unsafe delegate* glDeleteProgramPipelines; - internal unsafe delegate* glDeleteQueries; - internal unsafe delegate* glDeleteRenderbuffers; - internal unsafe delegate* glDeleteSamplers; - internal unsafe delegate* glDeleteShader; - internal unsafe delegate* glDeleteSync; - internal unsafe delegate* glDeleteTextures; - internal unsafe delegate* glDeleteTransformFeedbacks; - internal unsafe delegate* glDeleteVertexArrays; - internal unsafe delegate* glDepthFunc; - internal unsafe delegate* glDepthMask; - internal unsafe delegate* glDepthRange; - internal unsafe delegate* glDepthRangeArrayv; - internal unsafe delegate* glDepthRangeIndexed; - internal unsafe delegate* glDepthRangef; - internal unsafe delegate* glDetachShader; - internal unsafe delegate* glDisable; - internal unsafe delegate* glDisableVertexArrayAttrib; - internal unsafe delegate* glDisableVertexAttribArray; - internal unsafe delegate* glDisablei; - internal unsafe delegate* glDispatchCompute; - internal unsafe delegate* glDispatchComputeIndirect; - internal unsafe delegate* glDrawArrays; - internal unsafe delegate* glDrawArraysIndirect; - internal unsafe delegate* glDrawArraysInstanced; - internal unsafe delegate* glDrawArraysInstancedBaseInstance; - internal unsafe delegate* glDrawBuffer; - internal unsafe delegate* glDrawBuffers; - internal unsafe delegate* glDrawElements; - internal unsafe delegate* glDrawElementsBaseVertex; - internal unsafe delegate* glDrawElementsIndirect; - internal unsafe delegate* glDrawElementsInstanced; - internal unsafe delegate* glDrawElementsInstancedBaseInstance; - internal unsafe delegate* glDrawElementsInstancedBaseVertex; - internal unsafe delegate* glDrawElementsInstancedBaseVertexBaseInstance; - internal unsafe delegate* glDrawRangeElements; - internal unsafe delegate* glDrawRangeElementsBaseVertex; - internal unsafe delegate* glDrawTransformFeedback; - internal unsafe delegate* glDrawTransformFeedbackInstanced; - internal unsafe delegate* glDrawTransformFeedbackStream; - internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; - internal unsafe delegate* glEnable; - internal unsafe delegate* glEnableVertexArrayAttrib; - internal unsafe delegate* glEnableVertexAttribArray; - internal unsafe delegate* glEnablei; - internal unsafe delegate* glEndConditionalRender; - internal unsafe delegate* glEndQuery; - internal unsafe delegate* glEndQueryIndexed; - internal unsafe delegate* glEndTransformFeedback; - internal unsafe delegate* glFenceSync; - internal unsafe delegate* glFinish; - internal unsafe delegate* glFlush; - internal unsafe delegate* glFlushMappedBufferRange; - internal unsafe delegate* glFlushMappedNamedBufferRange; - internal unsafe delegate* glFramebufferParameteri; - internal unsafe delegate* glFramebufferRenderbuffer; - internal unsafe delegate* glFramebufferTexture; - internal unsafe delegate* glFramebufferTexture1D; - internal unsafe delegate* glFramebufferTexture2D; - internal unsafe delegate* glFramebufferTexture3D; - internal unsafe delegate* glFramebufferTextureLayer; - internal unsafe delegate* glFrontFace; - internal unsafe delegate* glGenBuffers; - internal unsafe delegate* glGenFramebuffers; - internal unsafe delegate* glGenProgramPipelines; - internal unsafe delegate* glGenQueries; - internal unsafe delegate* glGenRenderbuffers; - internal unsafe delegate* glGenSamplers; - internal unsafe delegate* glGenTextures; - internal unsafe delegate* glGenTransformFeedbacks; - internal unsafe delegate* glGenVertexArrays; - internal unsafe delegate* glGenerateMipmap; - internal unsafe delegate* glGenerateTextureMipmap; - internal unsafe delegate* glGetActiveAtomicCounterBufferiv; - internal unsafe delegate* glGetActiveAttrib; - internal unsafe delegate* glGetActiveSubroutineName; - internal unsafe delegate* glGetActiveSubroutineUniformName; - internal unsafe delegate* glGetActiveSubroutineUniformiv; - internal unsafe delegate* glGetActiveUniform; - internal unsafe delegate* glGetActiveUniformBlockName; - internal unsafe delegate* glGetActiveUniformBlockiv; - internal unsafe delegate* glGetActiveUniformName; - internal unsafe delegate* glGetActiveUniformsiv; - internal unsafe delegate* glGetAttachedShaders; - internal unsafe delegate* glGetAttribLocation; - internal unsafe delegate* glGetBooleani_v; - internal unsafe delegate* glGetBooleanv; - internal unsafe delegate* glGetBufferParameteri64v; - internal unsafe delegate* glGetBufferParameteriv; - internal unsafe delegate* glGetBufferPointerv; - internal unsafe delegate* glGetBufferSubData; - internal unsafe delegate* glGetCompressedTexImage; - internal unsafe delegate* glGetCompressedTextureImage; - internal unsafe delegate* glGetCompressedTextureSubImage; - internal unsafe delegate* glGetDebugMessageLog; - internal unsafe delegate* glGetDoublei_v; - internal unsafe delegate* glGetDoublev; - internal unsafe delegate* glGetError; - internal unsafe delegate* glGetFloati_v; - internal unsafe delegate* glGetFloatv; - internal unsafe delegate* glGetFragDataIndex; - internal unsafe delegate* glGetFragDataLocation; - internal unsafe delegate* glGetFramebufferAttachmentParameteriv; - internal unsafe delegate* glGetFramebufferParameteriv; - internal unsafe delegate* glGetGraphicsResetStatus; - internal unsafe delegate* glGetInteger64i_v; - internal unsafe delegate* glGetInteger64v; - internal unsafe delegate* glGetIntegeri_v; - internal unsafe delegate* glGetIntegerv; - internal unsafe delegate* glGetInternalformati64v; - internal unsafe delegate* glGetInternalformativ; - internal unsafe delegate* glGetMultisamplefv; - internal unsafe delegate* glGetNamedBufferParameteri64v; - internal unsafe delegate* glGetNamedBufferParameteriv; - internal unsafe delegate* glGetNamedBufferPointerv; - internal unsafe delegate* glGetNamedBufferSubData; - internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; - internal unsafe delegate* glGetNamedFramebufferParameteriv; - internal unsafe delegate* glGetNamedRenderbufferParameteriv; - internal unsafe delegate* glGetObjectLabel; - internal unsafe delegate* glGetObjectPtrLabel; - internal unsafe delegate* glGetPointerv; - internal unsafe delegate* glGetProgramBinary; - internal unsafe delegate* glGetProgramInfoLog; - internal unsafe delegate* glGetProgramInterfaceiv; - internal unsafe delegate* glGetProgramPipelineInfoLog; - internal unsafe delegate* glGetProgramPipelineiv; - internal unsafe delegate* glGetProgramResourceIndex; - internal unsafe delegate* glGetProgramResourceLocation; - internal unsafe delegate* glGetProgramResourceLocationIndex; - internal unsafe delegate* glGetProgramResourceName; - internal unsafe delegate* glGetProgramResourceiv; - internal unsafe delegate* glGetProgramStageiv; - internal unsafe delegate* glGetProgramiv; - internal unsafe delegate* glGetQueryBufferObjecti64v; - internal unsafe delegate* glGetQueryBufferObjectiv; - internal unsafe delegate* glGetQueryBufferObjectui64v; - internal unsafe delegate* glGetQueryBufferObjectuiv; - internal unsafe delegate* glGetQueryIndexediv; - internal unsafe delegate* glGetQueryObjecti64v; - internal unsafe delegate* glGetQueryObjectiv; - internal unsafe delegate* glGetQueryObjectui64v; - internal unsafe delegate* glGetQueryObjectuiv; - internal unsafe delegate* glGetQueryiv; - internal unsafe delegate* glGetRenderbufferParameteriv; - internal unsafe delegate* glGetSamplerParameterIiv; - internal unsafe delegate* glGetSamplerParameterIuiv; - internal unsafe delegate* glGetSamplerParameterfv; - internal unsafe delegate* glGetSamplerParameteriv; - internal unsafe delegate* glGetShaderInfoLog; - internal unsafe delegate* glGetShaderPrecisionFormat; - internal unsafe delegate* glGetShaderSource; - internal unsafe delegate* glGetShaderiv; - internal unsafe delegate* glGetString; - internal unsafe delegate* glGetStringi; - internal unsafe delegate* glGetSubroutineIndex; - internal unsafe delegate* glGetSubroutineUniformLocation; - internal unsafe delegate* glGetSynciv; - internal unsafe delegate* glGetTexImage; - internal unsafe delegate* glGetTexLevelParameterfv; - internal unsafe delegate* glGetTexLevelParameteriv; - internal unsafe delegate* glGetTexParameterIiv; - internal unsafe delegate* glGetTexParameterIuiv; - internal unsafe delegate* glGetTexParameterfv; - internal unsafe delegate* glGetTexParameteriv; - internal unsafe delegate* glGetTextureImage; - internal unsafe delegate* glGetTextureLevelParameterfv; - internal unsafe delegate* glGetTextureLevelParameteriv; - internal unsafe delegate* glGetTextureParameterIiv; - internal unsafe delegate* glGetTextureParameterIuiv; - internal unsafe delegate* glGetTextureParameterfv; - internal unsafe delegate* glGetTextureParameteriv; - internal unsafe delegate* glGetTextureSubImage; - internal unsafe delegate* glGetTransformFeedbackVarying; - internal unsafe delegate* glGetTransformFeedbacki64_v; - internal unsafe delegate* glGetTransformFeedbacki_v; - internal unsafe delegate* glGetTransformFeedbackiv; - internal unsafe delegate* glGetUniformBlockIndex; - internal unsafe delegate* glGetUniformIndices; - internal unsafe delegate* glGetUniformLocation; - internal unsafe delegate* glGetUniformSubroutineuiv; - internal unsafe delegate* glGetUniformdv; - internal unsafe delegate* glGetUniformfv; - internal unsafe delegate* glGetUniformiv; - internal unsafe delegate* glGetUniformuiv; - internal unsafe delegate* glGetVertexArrayIndexed64iv; - internal unsafe delegate* glGetVertexArrayIndexediv; - internal unsafe delegate* glGetVertexArrayiv; - internal unsafe delegate* glGetVertexAttribIiv; - internal unsafe delegate* glGetVertexAttribIuiv; - internal unsafe delegate* glGetVertexAttribLdv; - internal unsafe delegate* glGetVertexAttribPointerv; - internal unsafe delegate* glGetVertexAttribdv; - internal unsafe delegate* glGetVertexAttribfv; - internal unsafe delegate* glGetVertexAttribiv; - internal unsafe delegate* glGetnCompressedTexImage; - internal unsafe delegate* glGetnTexImage; - internal unsafe delegate* glGetnUniformdv; - internal unsafe delegate* glGetnUniformfv; - internal unsafe delegate* glGetnUniformiv; - internal unsafe delegate* glGetnUniformuiv; - internal unsafe delegate* glHint; - internal unsafe delegate* glInvalidateBufferData; - internal unsafe delegate* glInvalidateBufferSubData; - internal unsafe delegate* glInvalidateFramebuffer; - internal unsafe delegate* glInvalidateNamedFramebufferData; - internal unsafe delegate* glInvalidateNamedFramebufferSubData; - internal unsafe delegate* glInvalidateSubFramebuffer; - internal unsafe delegate* glInvalidateTexImage; - internal unsafe delegate* glInvalidateTexSubImage; - internal unsafe delegate* glIsBuffer; - internal unsafe delegate* glIsEnabled; - internal unsafe delegate* glIsEnabledi; - internal unsafe delegate* glIsFramebuffer; - internal unsafe delegate* glIsProgram; - internal unsafe delegate* glIsProgramPipeline; - internal unsafe delegate* glIsQuery; - internal unsafe delegate* glIsRenderbuffer; - internal unsafe delegate* glIsSampler; - internal unsafe delegate* glIsShader; - internal unsafe delegate* glIsSync; - internal unsafe delegate* glIsTexture; - internal unsafe delegate* glIsTransformFeedback; - internal unsafe delegate* glIsVertexArray; - internal unsafe delegate* glLineWidth; - internal unsafe delegate* glLinkProgram; - internal unsafe delegate* glLogicOp; - internal unsafe delegate* glMapBuffer; - internal unsafe delegate* glMapBufferRange; - internal unsafe delegate* glMapNamedBuffer; - internal unsafe delegate* glMapNamedBufferRange; - internal unsafe delegate* glMemoryBarrier; - internal unsafe delegate* glMemoryBarrierByRegion; - internal unsafe delegate* glMinSampleShading; - internal unsafe delegate* glMultiDrawArrays; - internal unsafe delegate* glMultiDrawArraysIndirect; - internal unsafe delegate* glMultiDrawArraysIndirectCount; - internal unsafe delegate* glMultiDrawElements; - internal unsafe delegate* glMultiDrawElementsBaseVertex; - internal unsafe delegate* glMultiDrawElementsIndirect; - internal unsafe delegate* glMultiDrawElementsIndirectCount; - internal unsafe delegate* glNamedBufferData; - internal unsafe delegate* glNamedBufferStorage; - internal unsafe delegate* glNamedBufferSubData; - internal unsafe delegate* glNamedFramebufferDrawBuffer; - internal unsafe delegate* glNamedFramebufferDrawBuffers; - internal unsafe delegate* glNamedFramebufferParameteri; - internal unsafe delegate* glNamedFramebufferReadBuffer; - internal unsafe delegate* glNamedFramebufferRenderbuffer; - internal unsafe delegate* glNamedFramebufferTexture; - internal unsafe delegate* glNamedFramebufferTextureLayer; - internal unsafe delegate* glNamedRenderbufferStorage; - internal unsafe delegate* glNamedRenderbufferStorageMultisample; - internal unsafe delegate* glObjectLabel; - internal unsafe delegate* glObjectPtrLabel; - internal unsafe delegate* glPatchParameterfv; - internal unsafe delegate* glPatchParameteri; - internal unsafe delegate* glPauseTransformFeedback; - internal unsafe delegate* glPixelStoref; - internal unsafe delegate* glPixelStorei; - internal unsafe delegate* glPointParameterf; - internal unsafe delegate* glPointParameterfv; - internal unsafe delegate* glPointParameteri; - internal unsafe delegate* glPointParameteriv; - internal unsafe delegate* glPointSize; - internal unsafe delegate* glPolygonMode; - internal unsafe delegate* glPolygonOffset; - internal unsafe delegate* glPolygonOffsetClamp; - internal unsafe delegate* glPopDebugGroup; - internal unsafe delegate* glPrimitiveRestartIndex; - internal unsafe delegate* glProgramBinary; - internal unsafe delegate* glProgramParameteri; - internal unsafe delegate* glProgramUniform1d; - internal unsafe delegate* glProgramUniform1dv; - internal unsafe delegate* glProgramUniform1f; - internal unsafe delegate* glProgramUniform1fv; - internal unsafe delegate* glProgramUniform1i; - internal unsafe delegate* glProgramUniform1iv; - internal unsafe delegate* glProgramUniform1ui; - internal unsafe delegate* glProgramUniform1uiv; - internal unsafe delegate* glProgramUniform2d; - internal unsafe delegate* glProgramUniform2dv; - internal unsafe delegate* glProgramUniform2f; - internal unsafe delegate* glProgramUniform2fv; - internal unsafe delegate* glProgramUniform2i; - internal unsafe delegate* glProgramUniform2iv; - internal unsafe delegate* glProgramUniform2ui; - internal unsafe delegate* glProgramUniform2uiv; - internal unsafe delegate* glProgramUniform3d; - internal unsafe delegate* glProgramUniform3dv; - internal unsafe delegate* glProgramUniform3f; - internal unsafe delegate* glProgramUniform3fv; - internal unsafe delegate* glProgramUniform3i; - internal unsafe delegate* glProgramUniform3iv; - internal unsafe delegate* glProgramUniform3ui; - internal unsafe delegate* glProgramUniform3uiv; - internal unsafe delegate* glProgramUniform4d; - internal unsafe delegate* glProgramUniform4dv; - internal unsafe delegate* glProgramUniform4f; - internal unsafe delegate* glProgramUniform4fv; - internal unsafe delegate* glProgramUniform4i; - internal unsafe delegate* glProgramUniform4iv; - internal unsafe delegate* glProgramUniform4ui; - internal unsafe delegate* glProgramUniform4uiv; - internal unsafe delegate* glProgramUniformMatrix2dv; - internal unsafe delegate* glProgramUniformMatrix2fv; - internal unsafe delegate* glProgramUniformMatrix2x3dv; - internal unsafe delegate* glProgramUniformMatrix2x3fv; - internal unsafe delegate* glProgramUniformMatrix2x4dv; - internal unsafe delegate* glProgramUniformMatrix2x4fv; - internal unsafe delegate* glProgramUniformMatrix3dv; - internal unsafe delegate* glProgramUniformMatrix3fv; - internal unsafe delegate* glProgramUniformMatrix3x2dv; - internal unsafe delegate* glProgramUniformMatrix3x2fv; - internal unsafe delegate* glProgramUniformMatrix3x4dv; - internal unsafe delegate* glProgramUniformMatrix3x4fv; - internal unsafe delegate* glProgramUniformMatrix4dv; - internal unsafe delegate* glProgramUniformMatrix4fv; - internal unsafe delegate* glProgramUniformMatrix4x2dv; - internal unsafe delegate* glProgramUniformMatrix4x2fv; - internal unsafe delegate* glProgramUniformMatrix4x3dv; - internal unsafe delegate* glProgramUniformMatrix4x3fv; - internal unsafe delegate* glProvokingVertex; - internal unsafe delegate* glPushDebugGroup; - internal unsafe delegate* glQueryCounter; - internal unsafe delegate* glReadBuffer; - internal unsafe delegate* glReadPixels; - internal unsafe delegate* glReadnPixels; - internal unsafe delegate* glReleaseShaderCompiler; - internal unsafe delegate* glRenderbufferStorage; - internal unsafe delegate* glRenderbufferStorageMultisample; - internal unsafe delegate* glResumeTransformFeedback; - internal unsafe delegate* glSampleCoverage; - internal unsafe delegate* glSampleMaski; - internal unsafe delegate* glSamplerParameterIiv; - internal unsafe delegate* glSamplerParameterIuiv; - internal unsafe delegate* glSamplerParameterf; - internal unsafe delegate* glSamplerParameterfv; - internal unsafe delegate* glSamplerParameteri; - internal unsafe delegate* glSamplerParameteriv; - internal unsafe delegate* glScissor; - internal unsafe delegate* glScissorArrayv; - internal unsafe delegate* glScissorIndexed; - internal unsafe delegate* glScissorIndexedv; - internal unsafe delegate* glShaderBinary; - internal unsafe delegate* glShaderSource; - internal unsafe delegate* glShaderStorageBlockBinding; - internal unsafe delegate* glSpecializeShader; - internal unsafe delegate* glStencilFunc; - internal unsafe delegate* glStencilFuncSeparate; - internal unsafe delegate* glStencilMask; - internal unsafe delegate* glStencilMaskSeparate; - internal unsafe delegate* glStencilOp; - internal unsafe delegate* glStencilOpSeparate; - internal unsafe delegate* glTexBuffer; - internal unsafe delegate* glTexBufferRange; - internal unsafe delegate* glTexImage1D; - internal unsafe delegate* glTexImage2D; - internal unsafe delegate* glTexImage2DMultisample; - internal unsafe delegate* glTexImage3D; - internal unsafe delegate* glTexImage3DMultisample; - internal unsafe delegate* glTexParameterIiv; - internal unsafe delegate* glTexParameterIuiv; - internal unsafe delegate* glTexParameterf; - internal unsafe delegate* glTexParameterfv; - internal unsafe delegate* glTexParameteri; - internal unsafe delegate* glTexParameteriv; - internal unsafe delegate* glTexStorage1D; - internal unsafe delegate* glTexStorage2D; - internal unsafe delegate* glTexStorage2DMultisample; - internal unsafe delegate* glTexStorage3D; - internal unsafe delegate* glTexStorage3DMultisample; - internal unsafe delegate* glTexSubImage1D; - internal unsafe delegate* glTexSubImage2D; - internal unsafe delegate* glTexSubImage3D; - internal unsafe delegate* glTextureBarrier; - internal unsafe delegate* glTextureBuffer; - internal unsafe delegate* glTextureBufferRange; - internal unsafe delegate* glTextureParameterIiv; - internal unsafe delegate* glTextureParameterIuiv; - internal unsafe delegate* glTextureParameterf; - internal unsafe delegate* glTextureParameterfv; - internal unsafe delegate* glTextureParameteri; - internal unsafe delegate* glTextureParameteriv; - internal unsafe delegate* glTextureStorage1D; - internal unsafe delegate* glTextureStorage2D; - internal unsafe delegate* glTextureStorage2DMultisample; - internal unsafe delegate* glTextureStorage3D; - internal unsafe delegate* glTextureStorage3DMultisample; - internal unsafe delegate* glTextureSubImage1D; - internal unsafe delegate* glTextureSubImage2D; - internal unsafe delegate* glTextureSubImage3D; - internal unsafe delegate* glTextureView; - internal unsafe delegate* glTransformFeedbackBufferBase; - internal unsafe delegate* glTransformFeedbackBufferRange; - internal unsafe delegate* glTransformFeedbackVaryings; - internal unsafe delegate* glUniform1d; - internal unsafe delegate* glUniform1dv; - internal unsafe delegate* glUniform1f; - internal unsafe delegate* glUniform1fv; - internal unsafe delegate* glUniform1i; - internal unsafe delegate* glUniform1iv; - internal unsafe delegate* glUniform1ui; - internal unsafe delegate* glUniform1uiv; - internal unsafe delegate* glUniform2d; - internal unsafe delegate* glUniform2dv; - internal unsafe delegate* glUniform2f; - internal unsafe delegate* glUniform2fv; - internal unsafe delegate* glUniform2i; - internal unsafe delegate* glUniform2iv; - internal unsafe delegate* glUniform2ui; - internal unsafe delegate* glUniform2uiv; - internal unsafe delegate* glUniform3d; - internal unsafe delegate* glUniform3dv; - internal unsafe delegate* glUniform3f; - internal unsafe delegate* glUniform3fv; - internal unsafe delegate* glUniform3i; - internal unsafe delegate* glUniform3iv; - internal unsafe delegate* glUniform3ui; - internal unsafe delegate* glUniform3uiv; - internal unsafe delegate* glUniform4d; - internal unsafe delegate* glUniform4dv; - internal unsafe delegate* glUniform4f; - internal unsafe delegate* glUniform4fv; - internal unsafe delegate* glUniform4i; - internal unsafe delegate* glUniform4iv; - internal unsafe delegate* glUniform4ui; - internal unsafe delegate* glUniform4uiv; - internal unsafe delegate* glUniformBlockBinding; - internal unsafe delegate* glUniformMatrix2dv; - internal unsafe delegate* glUniformMatrix2fv; - internal unsafe delegate* glUniformMatrix2x3dv; - internal unsafe delegate* glUniformMatrix2x3fv; - internal unsafe delegate* glUniformMatrix2x4dv; - internal unsafe delegate* glUniformMatrix2x4fv; - internal unsafe delegate* glUniformMatrix3dv; - internal unsafe delegate* glUniformMatrix3fv; - internal unsafe delegate* glUniformMatrix3x2dv; - internal unsafe delegate* glUniformMatrix3x2fv; - internal unsafe delegate* glUniformMatrix3x4dv; - internal unsafe delegate* glUniformMatrix3x4fv; - internal unsafe delegate* glUniformMatrix4dv; - internal unsafe delegate* glUniformMatrix4fv; - internal unsafe delegate* glUniformMatrix4x2dv; - internal unsafe delegate* glUniformMatrix4x2fv; - internal unsafe delegate* glUniformMatrix4x3dv; - internal unsafe delegate* glUniformMatrix4x3fv; - internal unsafe delegate* glUniformSubroutinesuiv; - internal unsafe delegate* glUnmapBuffer; - internal unsafe delegate* glUnmapNamedBuffer; - internal unsafe delegate* glUseProgram; - internal unsafe delegate* glUseProgramStages; - internal unsafe delegate* glValidateProgram; - internal unsafe delegate* glValidateProgramPipeline; - internal unsafe delegate* glVertexArrayAttribBinding; - internal unsafe delegate* glVertexArrayAttribFormat; - internal unsafe delegate* glVertexArrayAttribIFormat; - internal unsafe delegate* glVertexArrayAttribLFormat; - internal unsafe delegate* glVertexArrayBindingDivisor; - internal unsafe delegate* glVertexArrayElementBuffer; - internal unsafe delegate* glVertexArrayVertexBuffer; - internal unsafe delegate* glVertexArrayVertexBuffers; - internal unsafe delegate* glVertexAttrib1d; - internal unsafe delegate* glVertexAttrib1dv; - internal unsafe delegate* glVertexAttrib1f; - internal unsafe delegate* glVertexAttrib1fv; - internal unsafe delegate* glVertexAttrib1s; - internal unsafe delegate* glVertexAttrib1sv; - internal unsafe delegate* glVertexAttrib2d; - internal unsafe delegate* glVertexAttrib2dv; - internal unsafe delegate* glVertexAttrib2f; - internal unsafe delegate* glVertexAttrib2fv; - internal unsafe delegate* glVertexAttrib2s; - internal unsafe delegate* glVertexAttrib2sv; - internal unsafe delegate* glVertexAttrib3d; - internal unsafe delegate* glVertexAttrib3dv; - internal unsafe delegate* glVertexAttrib3f; - internal unsafe delegate* glVertexAttrib3fv; - internal unsafe delegate* glVertexAttrib3s; - internal unsafe delegate* glVertexAttrib3sv; - internal unsafe delegate* glVertexAttrib4Nbv; - internal unsafe delegate* glVertexAttrib4Niv; - internal unsafe delegate* glVertexAttrib4Nsv; - internal unsafe delegate* glVertexAttrib4Nub; - internal unsafe delegate* glVertexAttrib4Nubv; - internal unsafe delegate* glVertexAttrib4Nuiv; - internal unsafe delegate* glVertexAttrib4Nusv; - internal unsafe delegate* glVertexAttrib4bv; - internal unsafe delegate* glVertexAttrib4d; - internal unsafe delegate* glVertexAttrib4dv; - internal unsafe delegate* glVertexAttrib4f; - internal unsafe delegate* glVertexAttrib4fv; - internal unsafe delegate* glVertexAttrib4iv; - internal unsafe delegate* glVertexAttrib4s; - internal unsafe delegate* glVertexAttrib4sv; - internal unsafe delegate* glVertexAttrib4ubv; - internal unsafe delegate* glVertexAttrib4uiv; - internal unsafe delegate* glVertexAttrib4usv; - internal unsafe delegate* glVertexAttribBinding; - internal unsafe delegate* glVertexAttribDivisor; - internal unsafe delegate* glVertexAttribFormat; - internal unsafe delegate* glVertexAttribI1i; - internal unsafe delegate* glVertexAttribI1iv; - internal unsafe delegate* glVertexAttribI1ui; - internal unsafe delegate* glVertexAttribI1uiv; - internal unsafe delegate* glVertexAttribI2i; - internal unsafe delegate* glVertexAttribI2iv; - internal unsafe delegate* glVertexAttribI2ui; - internal unsafe delegate* glVertexAttribI2uiv; - internal unsafe delegate* glVertexAttribI3i; - internal unsafe delegate* glVertexAttribI3iv; - internal unsafe delegate* glVertexAttribI3ui; - internal unsafe delegate* glVertexAttribI3uiv; - internal unsafe delegate* glVertexAttribI4bv; - internal unsafe delegate* glVertexAttribI4i; - internal unsafe delegate* glVertexAttribI4iv; - internal unsafe delegate* glVertexAttribI4sv; - internal unsafe delegate* glVertexAttribI4ubv; - internal unsafe delegate* glVertexAttribI4ui; - internal unsafe delegate* glVertexAttribI4uiv; - internal unsafe delegate* glVertexAttribI4usv; - internal unsafe delegate* glVertexAttribIFormat; - internal unsafe delegate* glVertexAttribIPointer; - internal unsafe delegate* glVertexAttribL1d; - internal unsafe delegate* glVertexAttribL1dv; - internal unsafe delegate* glVertexAttribL2d; - internal unsafe delegate* glVertexAttribL2dv; - internal unsafe delegate* glVertexAttribL3d; - internal unsafe delegate* glVertexAttribL3dv; - internal unsafe delegate* glVertexAttribL4d; - internal unsafe delegate* glVertexAttribL4dv; - internal unsafe delegate* glVertexAttribLFormat; - internal unsafe delegate* glVertexAttribLPointer; - internal unsafe delegate* glVertexAttribP1ui; - internal unsafe delegate* glVertexAttribP1uiv; - internal unsafe delegate* glVertexAttribP2ui; - internal unsafe delegate* glVertexAttribP2uiv; - internal unsafe delegate* glVertexAttribP3ui; - internal unsafe delegate* glVertexAttribP3uiv; - internal unsafe delegate* glVertexAttribP4ui; - internal unsafe delegate* glVertexAttribP4uiv; - internal unsafe delegate* glVertexAttribPointer; - internal unsafe delegate* glVertexBindingDivisor; - internal unsafe delegate* glViewport; - internal unsafe delegate* glViewportArrayv; - internal unsafe delegate* glViewportIndexedf; - internal unsafe delegate* glViewportIndexedfv; - internal unsafe delegate* glWaitSync; - } -} diff --git a/test/StgSharp.GenerateGL/Program.cs b/test/StgSharp.GenerateGL/Program.cs deleted file mode 100644 index 9f3a775f..00000000 --- a/test/StgSharp.GenerateGL/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="Program" -// Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using GenerateGL.CodeGen; -using System; -using System.IO; - -namespace GenerateGL -{ - internal class Program - { - - private static void Main( - string[] args - ) - { - string baseDir = AppContext.BaseDirectory; - string xmlPath = Path.GetFullPath(Path.Combine(baseDir, "xml", "gl.xml")); - string outputRoot = args.Length > 0 - ? Path.GetFullPath(args[0]) - : Path.GetFullPath(Path.Combine(baseDir, "Generated")); - - Console.WriteLine($"[GenerateGL] Loading registry: {xmlPath}"); - var (commands, features) = GlXmlParser.Parse(xmlPath); - Console.WriteLine($"[GenerateGL] Commands: {commands.Count}, Features: {features.Count}"); - - Generator generator = new Generator(commands, features, outputRoot); - generator.Run(); - - Console.WriteLine($"[GenerateGL] Generated files under: {outputRoot}"); - } - - } -} diff --git a/test/StgSharpDebug/RenderStream/Partical.cs b/test/StgSharpDebug/RenderStream/Partical.cs index 7774b1d9..ca8a7288 100644 --- a/test/StgSharpDebug/RenderStream/Partical.cs +++ b/test/StgSharpDebug/RenderStream/Partical.cs @@ -14,6 +14,7 @@ using StgSharp.Timing; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,12 +24,10 @@ namespace StgSharp public class ParticleRenderStream : glRender { - private AutoTextureGL autoT; - private ElementBuffer ebo; private ElementBuffer f_ebo; private FrameBuffer fbo; - private Image i; + private Image i; private int temp = 0; private PlainInstancingBuffer buffer; @@ -37,6 +36,7 @@ namespace StgSharp private ShaderProgram s; private TextureGL f_t; private TextureGL t; + private Uniform cameraUniform; private Uniform texUniform; private Uniform time; private VertexArray f_vao; @@ -64,16 +64,21 @@ namespace StgSharp GL.ClearColor(0.4f, TimePassed % 1.0f, 0f, 1.0f); /*GL.Assert(true);/**/ GL.Clear(MaskBufferBit.COLOR /**/ | MaskBufferBit.DEPTH/**/); /*GL.Assert(true);/**/ - f_vao.Bind(0); //GL.Assert(true); + GL.BindVertexArray(f_vao[0]); //GL.Assert(true); foreach (PlainGeometryMesh mesh in items) { - // autoT.SelectTextureAndBind(mesh.TextureImage); - f_t.LoadTexture(0, mesh.TextureImage); + GL.ActiveTextureUnit((uint)TextureUnit.Unit1); + GL.BindTexture(glConst.TEXTURE_2D, f_t[0]); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, glConst.RGBA8, + mesh.TextureImage.Width, mesh.TextureImage.Height, + FrameBufferChannel.RGBA, PixelChannelLayout.UByte, + mesh.TextureImage.ReadOnlyPixels); + GL.GenerateMipmap(glConst.TEXTURE_2D); // GL.Assert(true); - frameMainShader.Use(); //GL.Assert(true); + GL.UseProgram(frameMainShader.Handle); //GL.Assert(true); GL.DrawElements(GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero); } @@ -94,17 +99,17 @@ namespace StgSharp // Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); - fbo.Bind(0); //GL.Assert(true); - vao.Bind(0); //GL.Assert(true); - t.Bind2D(0); //GL.Assert(false); + GL.BindFrameBuffer(FrameBufferTarget.All, fbo[0]); //GL.Assert(true); + GL.BindVertexArray(vao[0]); //GL.Assert(true); + GL.ActiveTextureUnit((uint)TextureUnit.Unit0); + GL.BindTexture(glConst.TEXTURE_2D, t[0]); //GL.Assert(false); GL.Viewport(0, 0, Width, Height); /**/ - GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - Width, Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, glConst.RGBA8, Width, Height, + FrameBufferChannel.RGBA, PixelChannelLayout.UByte); /**/ // GL.Assert(false); @@ -120,12 +125,13 @@ namespace StgSharp // GL.Assert(false); - vbo.Bind(1); - vbo.WriteVectorData(1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw); + GL.BindBuffer(BufferType.ArrayBuffer, vbo[1]); + GL.SetBufferData(BufferType.ArrayBuffer, buffer.CoordAndRotationSpan, + BufferUsage.StreamDraw); - s.Use(); - NativeCamera.SetAllUniforms(); + GL.UseProgram(s.Handle); + GL.SetUniformValue(cameraUniform, NativeCamera.CameraMatrix()); GL.SetUniformValue(time, TimePassed); GL.DrawElementsInstanced(GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, 100); @@ -139,22 +145,26 @@ namespace StgSharp // GL.Assert(true); - ImageHelper.Resize(i, Width, Height, ImageMovement.Discard); + if (i.Size != (Width, Height)) + { + i = new Image(Width, Height); + ButtonTextureProvider.Image = i; + } // GL.ClearError(); // Console.Write($"Size set to {Height},{Width}"); // Console.WriteLine($"Image resized to {i.Height} {i.Width}"); - GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, i.PixelBuffer); + GL.GetTextureImage(Texture2DTarget.Texture2D, 0, FrameBufferChannel.RGBA, + PixelChannelLayout.UByte, i.Bytes); /* - for (int num = 0; num < i.PixelBuffer.Length; num+=10000) + for (int num = 0; num < i.Bytes.Length; num+=10000) { - Console.Write($"{i.PixelBuffer[num]}\t"); + Console.Write($"{i.Bytes[num]}\t"); } /**/ // GL.Assert(true); - // Array.Fill(i.PixelBuffer, 24); + // i.Bytes.Fill(24); GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); @@ -192,7 +202,114 @@ namespace StgSharp 0)) * rotation; } - protected override void CustomizeDeinit() { } + private Shader CreateShaderSet( + ShaderType type, + int count + ) + { + GlHandle[] handles = new GlHandle[count]; + for (int index = 0; index < handles.Length; index++) { + handles[index] = GL.CreateShader((uint)type); + } + return new Shader(handles, type); + } + + private void CompileShaderFromFile( + GlHandle shader, + string path + ) + { + byte[] source = File.ReadAllBytes(path); + if (source.Length == 0) { + throw new InvalidOperationException($"Shader source is empty: {path}"); + } + + GL.ShaderSource(shader, source); + GL.CompileShader(shader); + + Span status = stackalloc int[1]; + GL.GetShaderiv(shader, glConst.COMPILE_STATUS, status); + if (status[0] != 0) { + return; + } + + throw new InvalidOperationException( + $"Failed to compile shader '{path}'.{Environment.NewLine}{GetShaderInfoLog(shader)}"); + } + + private void LinkShaderProgram( + GlHandle program + ) + { + GL.LinkProgram(program); + + Span status = stackalloc int[1]; + GL.GetProgramiv(program, glConst.LINK_STATUS, status); + if (status[0] != 0) { + return; + } + + throw new InvalidOperationException( + $"Failed to link shader program.{Environment.NewLine}{GetProgramInfoLog(program)}"); + } + + private string GetShaderInfoLog( + GlHandle shader + ) + { + Span requiredLength = stackalloc int[1]; + GL.GetShaderiv(shader, glConst.INFO_LOG_LENGTH, requiredLength); + if (requiredLength[0] <= 1) { + return "OpenGL did not provide a shader info log."; + } + + byte[] bytes = new byte[requiredLength[0]]; + GL.GetShaderInfoLog(shader, out int written, bytes); + return Encoding.UTF8.GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) + .TrimEnd('\0'); + } + + private string GetProgramInfoLog( + GlHandle program + ) + { + Span requiredLength = stackalloc int[1]; + GL.GetProgramiv(program, glConst.INFO_LOG_LENGTH, requiredLength); + if (requiredLength[0] <= 1) { + return "OpenGL did not provide a program info log."; + } + + byte[] bytes = new byte[requiredLength[0]]; + GL.GetProgramInfoLog(program, out int written, bytes); + return Encoding.UTF8.GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) + .TrimEnd('\0'); + } + + private void DeleteShaderSet( + Shader shaderSet + ) + { + for (int index = 0; index < shaderSet.Count; index++) { + GL.DeleteShader(shaderSet[index]); + } + } + + protected override void CustomizeDeinit() + { + GL.DeleteProgram(s.Handle); + GL.DeleteProgram(frameMainShader.Handle); + + GL.DeleteBuffers(vbo.Handles); + GL.DeleteBuffers(ebo.Handles); + GL.DeleteBuffers(f_vbo.Handles); + GL.DeleteBuffers(f_ebo.Handles); + GL.DeleteVertexArrays(vao.Handles); + GL.DeleteVertexArrays(f_vao.Handles); + GL.DeleteFramebuffers(fbo.Handles); + GL.DeleteRenderbuffers(rbo.Handles); + GL.DeleteTextures(t.Handles); + GL.DeleteTextures(f_t.Handles); + } protected override void CustomizeInit() { @@ -221,59 +338,69 @@ namespace StgSharp // SetSizeLimit(800, 800, 800, 800); - s = CreateShaderProgram(); - frameMainShader = CreateShaderProgram(); - Shader pvs = CreateShaderSegment(ShaderType.Vertex, 2); - Shader pfs = CreateShaderSegment(ShaderType.Fragment, 2); + s = new ShaderProgram(GL.CreateProgram()); + frameMainShader = new ShaderProgram(GL.CreateProgram()); + Shader pvs = CreateShaderSet(ShaderType.Vertex, 2); + Shader pfs = CreateShaderSet(ShaderType.Fragment, 2); // GL.Assert(true); - pvs.Compile(0, Shader.FromCodeFile("Shader\\particle.vert")); + CompileShaderFromFile(pvs[0], Path.Combine("Shader", "particle.vert")); // GL.Assert(true); - pvs.AttachTo(0, s); + GL.AttachShader(s.Handle, pvs[0]); // GL.Assert(true); - pfs.Compile(0, Shader.FromCodeFile("Shader\\particle.frag")); - pfs.AttachTo(0, s); - s.Link(); + CompileShaderFromFile(pfs[0], Path.Combine("Shader", "particle.frag")); + GL.AttachShader(s.Handle, pfs[0]); + LinkShaderProgram(s.Handle); // GL.Assert(true); - pvs.Compile(1, Shader.FromCodeFile("Shader\\fbo.vert")); - pvs.AttachTo(1, frameMainShader); - pfs.Compile(1, Shader.FromCodeFile("Shader\\fbo.frag")); - pfs.AttachTo(1, frameMainShader); - frameMainShader.Link(); + CompileShaderFromFile(pvs[1], Path.Combine("Shader", "fbo.vert")); + GL.AttachShader(frameMainShader.Handle, pvs[1]); + CompileShaderFromFile(pfs[1], Path.Combine("Shader", "fbo.frag")); + GL.AttachShader(frameMainShader.Handle, pfs[1]); + LinkShaderProgram(frameMainShader.Handle); + + DeleteShaderSet(pvs); + DeleteShaderSet(pfs); // GL.Assert(true); - vbo = CreateVertexBuffer(3); - vao = CreateVertexArray(1); - ebo = CreateElementBuffer(1); - vbo.Bind(0); + vbo = new VertexBuffer(GL.GenBuffers(3)); + vao = new VertexArray(GL.GenVertexArrays(1)); + ebo = new ElementBuffer(GL.GenBuffers(1)); + GL.BindBuffer(BufferType.ArrayBuffer, vbo[0]); Rectangle rec = new Rectangle(0.05f, 0.05f, 0.05f, -0.05f, -0.05f, -0.05f, -0.05f, 0.05f); // GL.Assert(true); - vao.Bind(0); - vbo.WriteVectorData(0, rec.VertexStream, BufferUsage.StaticDraw); - ebo.SetValue(0, rec.VertexIndices, BufferUsage.StaticDraw); - vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + GL.BindVertexArray(vao[0]); + GL.BindBuffer(BufferType.ArrayBuffer, vbo[0]); + GL.SetBufferData(BufferType.ArrayBuffer, rec.VertexStream, BufferUsage.StaticDraw); + GL.BindBuffer(BufferType.ElementArrayBuffer, ebo[0]); + GL.SetBufferData(BufferType.ElementArrayBuffer, rec.VertexIndices, + BufferUsage.StaticDraw); + GL.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); - vbo.WriteVectorData(1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw); - vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); - vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), - 3 * sizeof(float)); + GL.BindBuffer(BufferType.ArrayBuffer, vbo[1]); + GL.SetBufferData(BufferType.ArrayBuffer, buffer.CoordAndRotationSpan, + BufferUsage.StreamDraw); + GL.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + GL.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), + 3 * sizeof(float)); GL.VertexAttributeDivisor(1, 1); GL.VertexAttributeDivisor(2, 1); - vbo.WriteScalerData(2, buffer.ScalingSpan, BufferUsage.StaticDraw); - vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); + GL.BindBuffer(BufferType.ArrayBuffer, vbo[2]); + GL.SetBufferData(BufferType.ArrayBuffer, buffer.ScalingSpan, + BufferUsage.StaticDraw); + GL.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); GL.VertexAttributeDivisor(3, 1); - vbo.Unbind(); + GL.BindBuffer(BufferType.ArrayBuffer, GlHandle.Zero); GL.BindVertexArray(GlHandle.Zero); NativeCameraViewTarget([ @@ -290,23 +417,31 @@ namespace StgSharp 0f ]); NativeCameraViewRange(new Degree(1.5f), Vec2.Zero, (50, 50)); - NativeCameraUniform(s, "Camera"); + cameraUniform = GL.GetUniform(s.Handle, "Camera"); - s.Use(); + GL.UseProgram(s.Handle); - fbo = CreateFrameBuffer(1); - rbo = CreateRenderBuffer(1); - fbo.Bind(0); - rbo.Bind(0); + GlHandle[] frameBufferHandles = new GlHandle[1]; + GL.GenFrameBuffers(frameBufferHandles); + fbo = new FrameBuffer(frameBufferHandles); + rbo = new RenderBuffer(GL.GenRenderBuffer(1)); + GL.BindFrameBuffer(FrameBufferTarget.All, fbo[0]); + GL.BindRenderBuffer(rbo[0]); // GL.Assert(true); - t = CreateTexture(1); - t.Bind2D(0); - GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - Width, Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null!); - t.Set2dWrapProperty(0, TextureWrap.Repeat, TextureWrap.Repeat); - t.Set2dFilterProperty(0, TextureFilter.Linear, TextureFilter.Linear); + t = new TextureGL(GL.GenTextures(1)); + GL.ActiveTextureUnit((uint)TextureUnit.Unit0); + GL.BindTexture(glConst.TEXTURE_2D, t[0]); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, glConst.RGBA8, Width, Height, + FrameBufferChannel.RGBA, PixelChannelLayout.UByte); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S, + (int)TextureWrap.Repeat); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, + (int)TextureWrap.Repeat); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, + (int)TextureFilter.Linear); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER, + (int)TextureFilter.Linear); // GL.Assert(true); GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), @@ -317,15 +452,13 @@ namespace StgSharp Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); - FrameBuffer.BindNull(); + GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); // GL.Assert(true); - int streamLength = this.Width * this.Height * 4; - byte[] imageStream = new byte[streamLength]; - i = Image.FromMemory(this.Size, ImageChannel.WithAlphaChannel, imageStream); + i = new Image(this.Size); - time = s.GetUniform("time"); + time = GL.GetUniform(s.Handle, "time"); Vec2[] buttonTextureCoordArray = { (0f, 1f), @@ -338,45 +471,46 @@ namespace StgSharp // GL.Assert(true); ButtonTextureProvider = new TextureProvider(i, buttonTextureCoordArray); - f_vao = CreateVertexArray(1); - f_vbo = CreateVertexBuffer(2); - f_ebo = CreateElementBuffer(1); + f_vao = new VertexArray(GL.GenVertexArrays(1)); + f_vbo = new VertexBuffer(GL.GenBuffers(2)); + f_ebo = new ElementBuffer(GL.GenBuffers(1)); // GL.Assert(true); - f_vao.Bind(0); + GL.BindVertexArray(f_vao[0]); - f_ebo.Bind(0); - f_ebo.SetValue(0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw); + GL.BindBuffer(BufferType.ElementArrayBuffer, f_ebo[0]); + GL.SetBufferData(BufferType.ElementArrayBuffer, ButtonBounding.VertexIndices, + BufferUsage.StaticDraw); // GL.Assert(true); - f_vbo.Bind(0); - f_vbo.WriteVectorData(0, ButtonBounding.VertexStream, BufferUsage.StaticDraw); - f_vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + GL.BindBuffer(BufferType.ArrayBuffer, f_vbo[0]); + GL.SetBufferData(BufferType.ArrayBuffer, ButtonBounding.VertexStream, + BufferUsage.StaticDraw); + GL.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); // GL.Assert(true); - f_vbo.Bind(1); - f_vbo.WriteVectorData(1, buttonTextureCoordArray, BufferUsage.StaticDraw); - f_vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + GL.BindBuffer(BufferType.ArrayBuffer, f_vbo[1]); + GL.SetBufferData(BufferType.ArrayBuffer, buttonTextureCoordArray, + BufferUsage.StaticDraw); + GL.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); // GL.Assert(true); - autoT = CreateAutoTexture(4); - autoT.DefaultTextureProperty = new TextureProperty(TextureFilter.Nearest, - TextureFilter.Nearest, - TextureWrap.Repeat, - TextureWrap.Repeat); - - f_t = CreateTexture(1); - f_t.Bind2D(0); - f_t.Set2dWrapProperty(0, TextureWrap.Repeat, TextureWrap.Repeat); - f_t.Set2dFilterProperty(0, TextureFilter.Nearest, TextureFilter.Nearest); + f_t = new TextureGL(GL.GenTextures(1)); + GL.ActiveTextureUnit((uint)TextureUnit.Unit1); + GL.BindTexture(glConst.TEXTURE_2D, f_t[0]); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S, + (int)TextureWrap.Repeat); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, + (int)TextureWrap.Repeat); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, + (int)TextureFilter.Nearest); + GL.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER, + (int)TextureFilter.Nearest); // GL.Assert(true); - f_t.ActivateAs(TextureUnit.Unit1); - - // GL.Assert(true); - frameMainShader.Use(); - texUniform = frameMainShader.GetUniform("tex"); + GL.UseProgram(frameMainShader.Handle); + texUniform = GL.GetUniform(frameMainShader.Handle, "tex"); // GL.Assert(true); GL.SetUniformValue(texUniform, 1); diff --git a/test/StgSharpDebug/TestRender.cs b/test/StgSharpDebug/TestRender.cs index 02d89265..165c3721 100644 --- a/test/StgSharpDebug/TestRender.cs +++ b/test/StgSharpDebug/TestRender.cs @@ -20,7 +20,6 @@ namespace StgSharp public static void TestRender() { - // World.InitGL(4, 6); World.GlobalSetting.VSyncActivated = false; ViewPort vp = new ViewPort(800, 600, "Hello StgSharp!", IntPtr.Zero); diff --git a/tools/StgSharp.GenerateGL/GenerateCli.cs b/tools/StgSharp.GenerateGL/GenerateCli.cs new file mode 100644 index 00000000..ae27c31c --- /dev/null +++ b/tools/StgSharp.GenerateGL/GenerateCli.cs @@ -0,0 +1,156 @@ +// ----------------------------------------------------------------------------- +// file="GenerateCli" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using StgSharp.GenerateGL.Generation; +using StgSharp.GenerateGL.Registry; + +namespace StgSharp.GenerateGL +{ + /// + /// Owns the command-line boundary of the future code generation pipeline. + /// + internal static class GenerateCli + { + + private const int QueryErrorExitCode = 1; + private const int SuccessExitCode = 0; + private const int UsageErrorExitCode = 2; + + public static int Generate( + GlRegistryModel registry, + IReadOnlyList arguments, + out GeneratedFileSet? generatedFiles + ) + { + ArgumentNullException.ThrowIfNull(registry); + ArgumentNullException.ThrowIfNull(arguments); + generatedFiles = null; + + if (arguments.Count == 1 && arguments[0] is "--help" or "-h") + { + WriteHelp(); + return SuccessExitCode; + } + + if (arguments.Count != 0) + { + Console.Error.WriteLine( + $"error: unknown generate option '{arguments[0]}'."); + Console.Error.WriteLine("Run 'generate --help' for command information."); + return UsageErrorExitCode; + } + + try + { + generatedFiles = OpenGlGenerator.Generate(registry); + } + catch (InvalidDataException exception) + { + Console.Error.WriteLine($"error: {exception.Message}"); + return QueryErrorExitCode; + } + catch (InvalidOperationException exception) + { + Console.Error.WriteLine($"error: {exception.Message}"); + return QueryErrorExitCode; + } + + Console.WriteLine( + $"Generated {generatedFiles.Files.Count} file(s) in memory."); + Console.WriteLine("Use 'list files' and 'preview ' to inspect them."); + Console.WriteLine("No files were written to disk."); + return SuccessExitCode; + } + + public static int ListFiles( + GeneratedFileSet files, + IReadOnlyList arguments + ) + { + ArgumentNullException.ThrowIfNull(files); + ArgumentNullException.ThrowIfNull(arguments); + if (arguments.Count != 0) + { + Console.Error.WriteLine("error: list files does not accept arguments."); + return UsageErrorExitCode; + } + + if (files.Files.Count == 0) + { + Console.Error.WriteLine("No generated files are held in this session."); + Console.Error.WriteLine("Run 'generate' first."); + return QueryErrorExitCode; + } + + Console.WriteLine("Generated files (memory only)"); + for (int index = 0; index < files.Files.Count; index++) + { + GeneratedFile file = files.Files[index]; + Console.WriteLine( + $" [{index + 1}] {file.Name} ({file.Content.Length} characters)"); + } + + return SuccessExitCode; + } + + public static int Preview( + GeneratedFileSet files, + IReadOnlyList arguments + ) + { + ArgumentNullException.ThrowIfNull(files); + ArgumentNullException.ThrowIfNull(arguments); + if (arguments.Count != 1) + { + Console.Error.WriteLine("error: preview requires one generated file name."); + return UsageErrorExitCode; + } + + if (!files.TryGetFile(arguments[0], out GeneratedFile file)) + { + Console.Error.WriteLine( + $"No generated file named '{arguments[0]}' is held in this session."); + if (files.Files.Count == 0) + { + Console.Error.WriteLine("Run 'generate' first."); + } + else + { + Console.Error.WriteLine( + $"Available files: {string.Join(", ", files.Files.Select(value => value.Name))}"); + } + + return QueryErrorExitCode; + } + + Console.Write(file.Content); + return SuccessExitCode; + } + + public static void WriteHelp() + { + Console.WriteLine("Generate C# bindings from the loaded OpenGL registry."); + Console.WriteLine(); + Console.WriteLine("Usage:"); + Console.WriteLine(" generate"); + Console.WriteLine(" generate --help"); + Console.WriteLine(); + Console.WriteLine("Status:"); + Console.WriteLine(" Output is retained in the current process only."); + Console.WriteLine(" Running 'generate' does not create or modify disk files."); + Console.WriteLine(); + Console.WriteLine("Inspection:"); + Console.WriteLine(" list files"); + Console.WriteLine(" preview "); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Generation/CSharpAbiTypePolicy.cs b/tools/StgSharp.GenerateGL/Generation/CSharpAbiTypePolicy.cs new file mode 100644 index 00000000..a0ecdc92 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Generation/CSharpAbiTypePolicy.cs @@ -0,0 +1,64 @@ +// ----------------------------------------------------------------------------- +// file="CSharpAbiTypePolicy" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; + +namespace StgSharp.GenerateGL.Generation +{ + /// + /// Defines C ABI primitives and external Khronos platform types that cannot + /// be inferred from gl.xml. + /// + internal static class CSharpAbiTypePolicy + { + + private static readonly Dictionary _types = new Dictionary( + StringComparer.Ordinal) + { + ["void"] = "void", + ["char"] = "byte", + ["signed char"] = "sbyte", + ["unsigned char"] = "byte", + ["short"] = "short", + ["short int"] = "short", + ["signed short"] = "short", + ["signed short int"] = "short", + ["unsigned short"] = "ushort", + ["unsigned short int"] = "ushort", + ["int"] = "int", + ["signed"] = "int", + ["signed int"] = "int", + ["unsigned"] = "uint", + ["unsigned int"] = "uint", + ["float"] = "float", + ["double"] = "double", + ["khronos_int8_t"] = "sbyte", + ["khronos_uint8_t"] = "byte", + ["khronos_int16_t"] = "short", + ["khronos_uint16_t"] = "ushort", + ["khronos_int32_t"] = "int", + ["khronos_uint32_t"] = "uint", + ["khronos_int64_t"] = "long", + ["khronos_uint64_t"] = "ulong", + ["khronos_intptr_t"] = "nint", + ["khronos_uintptr_t"] = "nuint", + ["khronos_ssize_t"] = "nint", + ["khronos_usize_t"] = "nuint", + ["khronos_float_t"] = "float", + }; + + public static bool TryResolve( + string typeName, + out string equivalentType + ) + { + return _types.TryGetValue(typeName, out equivalentType!); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Generation/GeneratedFileSet.cs b/tools/StgSharp.GenerateGL/Generation/GeneratedFileSet.cs new file mode 100644 index 00000000..d8768233 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Generation/GeneratedFileSet.cs @@ -0,0 +1,63 @@ +// ----------------------------------------------------------------------------- +// file="GeneratedFileSet" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; + +namespace StgSharp.GenerateGL.Generation +{ + internal sealed record GeneratedFile( + string Name, + string Content + ); + + internal sealed class GeneratedFileSet + { + + public static GeneratedFileSet Empty { get; } = new GeneratedFileSet( + Array.Empty()); + + private readonly ReadOnlyDictionary _filesByName; + + public GeneratedFileSet( + IEnumerable files + ) + { + ArgumentNullException.ThrowIfNull(files); + + ReadOnlyCollection values = Array.AsReadOnly(files.ToArray()); + Dictionary index = new Dictionary( + StringComparer.OrdinalIgnoreCase); + foreach (GeneratedFile file in values) + { + ArgumentException.ThrowIfNullOrWhiteSpace(file.Name); + if (!index.TryAdd(file.Name, file)) + { + throw new InvalidOperationException( + $"Generated file name '{file.Name}' is duplicated."); + } + } + + Files = values; + _filesByName = new ReadOnlyDictionary(index); + } + + public IReadOnlyList Files { get; } + + public bool TryGetFile( + string name, + out GeneratedFile file + ) + { + ArgumentException.ThrowIfNullOrWhiteSpace(name); + return _filesByName.TryGetValue(name, out file!); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Generation/GlEquivalentTypeMapper.cs b/tools/StgSharp.GenerateGL/Generation/GlEquivalentTypeMapper.cs new file mode 100644 index 00000000..311c3788 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Generation/GlEquivalentTypeMapper.cs @@ -0,0 +1,242 @@ +// ----------------------------------------------------------------------------- +// file="GlEquivalentTypeMapper" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using StgSharp.GenerateGL.Registry; + +namespace StgSharp.GenerateGL.Generation +{ + /// + /// Resolves OpenGL typedef declarations recursively to equivalent C# ABI types. + /// + internal sealed class GlEquivalentTypeMapper + { + + private readonly Dictionary _resolvedTypes = new Dictionary( + StringComparer.Ordinal); + private readonly GlRegistryModel _registry; + + public GlEquivalentTypeMapper( + GlRegistryModel registry + ) + { + ArgumentNullException.ThrowIfNull(registry); + _registry = registry; + } + + public string ReadReturnType( + GlCommandDefinition command + ) + { + ArgumentNullException.ThrowIfNull(command); + return ReadDeclarationType( + command.Return.TypeName, + command.Return.DeclarationText, + command.Name); + } + + public string ReadParameterType( + GlParameterDefinition parameter + ) + { + ArgumentNullException.ThrowIfNull(parameter); + return ReadDeclarationType( + parameter.TypeName, + parameter.DeclarationText, + parameter.Name); + } + + private string ReadDeclarationType( + string? typeName, + string declaration, + string identifier + ) + { + if (typeName is null) + { + return ResolveTypeExpression(RemoveIdentifier(declaration, identifier)); + } + + string equivalentType = ResolveNamedType( + typeName, + new HashSet(StringComparer.Ordinal)); + int pointerDepth = declaration.Count(value => value == '*'); + if (declaration.Contains('[', StringComparison.Ordinal)) + { + pointerDepth++; + } + + return equivalentType + new string('*', pointerDepth); + } + + private string ResolveNamedType( + string typeName, + HashSet resolving + ) + { + if (CSharpAbiTypePolicy.TryResolve(typeName, out string abiType)) + { + return abiType; + } + + if (_resolvedTypes.TryGetValue(typeName, out string? resolvedType)) + { + return resolvedType; + } + + if (!resolving.Add(typeName)) + { + throw new InvalidDataException( + $"OpenGL type alias cycle contains '{typeName}'."); + } + + if (!_registry.TypesByName.TryGetValue( + typeName, + out IReadOnlyList? definitions) || + definitions.Count != 1) + { + throw new InvalidDataException( + $"OpenGL type '{typeName}' does not have one registry definition."); + } + + GlTypeDefinition definition = definitions[0]; + string declaration = NormalizeWhitespace(definition.DeclarationText); + string value; + if (TryReadCallbackType(typeName, declaration, resolving, out string callbackType)) + { + value = callbackType; + } + else + { + MatchCollection aliases = Regex.Matches( + declaration, + $@"typedef\s+(?.+?)\s*\b{Regex.Escape(typeName)}\b\s*;", + RegexOptions.CultureInvariant); + if (aliases.Count == 1) + { + value = ResolveTypeExpression( + aliases[0].Groups["target"].Value, + resolving); + } + else if (declaration == $"{typeName};" || declaration.StartsWith( + "struct ", + StringComparison.Ordinal)) + { + value = "void"; + } + else if (aliases.Count > 1) + { + throw new InvalidDataException( + $"OpenGL type '{typeName}' has platform-dependent typedefs and " + + "requires an explicit target policy."); + } + else + { + throw new InvalidDataException( + $"Cannot read typedef declaration '{definition.DeclarationText}'."); + } + } + + resolving.Remove(typeName); + _resolvedTypes.Add(typeName, value); + return value; + } + + private bool TryReadCallbackType( + string typeName, + string declaration, + HashSet resolving, + out string type + ) + { + Match match = Regex.Match( + declaration, + $@"^typedef\s+(?.+?)\s*\(\s*\*\s*{Regex.Escape(typeName)}\s*\)" + + @"\s*\((?.*)\)\s*;$", + RegexOptions.CultureInvariant); + if (!match.Success) + { + type = string.Empty; + return false; + } + + List types = new List(); + string parameters = match.Groups["parameters"].Value.Trim(); + if (parameters.Length != 0 && parameters != "void") + { + foreach (string parameter in parameters.Split(',')) + { + types.Add(ResolveTypeExpression(RemoveLastIdentifier(parameter), resolving)); + } + } + + types.Add(ResolveTypeExpression(match.Groups["return"].Value, resolving)); + type = $"delegate* unmanaged<{string.Join(", ", types)}>"; + return true; + } + + private string ResolveTypeExpression( + string expression, + HashSet? resolving = null + ) + { + resolving ??= new HashSet(StringComparer.Ordinal); + string value = Regex.Replace( + NormalizeWhitespace(expression), + @"\b(?:const|volatile|restrict)\b", + string.Empty, + RegexOptions.CultureInvariant).Trim(); + int pointerDepth = value.Count(character => character == '*'); + value = value.Replace("*", string.Empty, StringComparison.Ordinal).Trim(); + if (value.StartsWith("struct ", StringComparison.Ordinal)) + { + value = "void"; + } + + string equivalentType = ResolveNamedType(value, resolving); + return equivalentType + new string('*', pointerDepth); + } + + private static string RemoveIdentifier( + string declaration, + string identifier + ) + { + int index = declaration.LastIndexOf(identifier, StringComparison.Ordinal); + return index < 0 + ? declaration + : declaration.Remove(index, identifier.Length); + } + + private static string RemoveLastIdentifier( + string declaration + ) + { + Match match = Regex.Match( + declaration.Trim(), + @"^(?.+?)(?[A-Za-z_][A-Za-z0-9_]*)$", + RegexOptions.CultureInvariant); + return match.Success ? match.Groups["type"].Value.Trim() : declaration.Trim(); + } + + private static string NormalizeWhitespace( + string value + ) + { + return Regex.Replace( + value, + @"\s+", + " ", + RegexOptions.CultureInvariant).Trim(); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs b/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs new file mode 100644 index 00000000..2f03650e --- /dev/null +++ b/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs @@ -0,0 +1,422 @@ +// ----------------------------------------------------------------------------- +// file="OpenGlGenerator" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Numerics; +using System.Text; +using StgSharp.GenerateGL.Registry; + +namespace StgSharp.GenerateGL.Generation +{ + /// + /// Produces the first in-memory desktop OpenGL binding files. + /// + internal static class OpenGlGenerator + { + + private const string ApiName = "gl"; + private const string CoreProfile = "core"; + + private static readonly HashSet _csharpKeywords = new HashSet( + new[] + { + "abstract", "as", "base", "bool", "break", "byte", "case", "catch", + "char", "checked", "class", "const", "continue", "decimal", "default", + "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", + "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", + "implicit", "in", "int", "interface", "internal", "is", "lock", "long", + "namespace", "new", "null", "object", "operator", "out", "override", + "params", "private", "protected", "public", "readonly", "ref", "return", + "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", + "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", + "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", + "volatile", "while", + }, + StringComparer.Ordinal); + + public static GeneratedFileSet Generate( + GlRegistryModel registry + ) + { + ArgumentNullException.ThrowIfNull(registry); + + IReadOnlyList commands = ReadCoreCommands(registry); + GlEquivalentTypeMapper typeMapper = new GlEquivalentTypeMapper(registry); + return new GeneratedFileSet( + new[] + { + new GeneratedFile("glconst.cs", GenerateConstants(registry)), + new GeneratedFile( + "OpenglContext.g.cs", + GenerateContext(commands, typeMapper)), + new GeneratedFile( + "OpenGLFunction.Raw.g.cs", + GenerateFunctions(commands, typeMapper)), + }); + } + + private static ReadOnlyCollection ReadCoreCommands( + GlRegistryModel registry + ) + { + Dictionary definitions = new Dictionary( + StringComparer.Ordinal); + foreach (GlCommandDefinition command in registry.Commands) + { + if (!definitions.TryAdd(command.Name, command)) + { + throw new InvalidDataException( + $"Command '{command.Name}' has more than one definition."); + } + } + + List order = new List(); + HashSet known = new HashSet(StringComparer.Ordinal); + HashSet active = new HashSet(StringComparer.Ordinal); + foreach (GlFeatureDefinition feature in registry.Features.Where( + value => string.Equals(value.Api, ApiName, StringComparison.Ordinal))) + { + foreach (GlRequirementBlock block in feature.Requirements.Where(AppliesToCoreGl)) + { + foreach (GlRegistryReference reference in block.References.Where( + value => value.Kind == GlRegistryReferenceKind.Command)) + { + if (!definitions.ContainsKey(reference.Name)) + { + throw new InvalidDataException( + $"Feature '{feature.Name}' references undefined command " + + $"'{reference.Name}'."); + } + + if (block.Operation == GlRequirementOperation.Require) + { + active.Add(reference.Name); + if (known.Add(reference.Name)) + { + order.Add(reference.Name); + } + } + else + { + active.Remove(reference.Name); + } + } + } + } + + return Array.AsReadOnly( + order.Where(active.Contains).Select(value => definitions[value]).ToArray()); + } + + private static bool AppliesToCoreGl( + GlRequirementBlock block + ) + { + bool matchesApi = block.Api is null || string.Equals( + block.Api, + ApiName, + StringComparison.Ordinal); + bool matchesProfile = block.Profile is null || string.Equals( + block.Profile, + CoreProfile, + StringComparison.Ordinal); + return matchesApi && matchesProfile; + } + + private static string GenerateConstants( + GlRegistryModel registry + ) + { + StringBuilder builder = new StringBuilder(512 * 1024); + AppendGeneratedHeader(builder, "Desktop OpenGL constants"); + builder.Append("namespace StgSharp.Graphics.OpenGL\n"); + builder.Append("{\n"); + builder.Append(" public static class glConst\n"); + builder.Append(" {\n\n"); + + Dictionary emitted = new Dictionary( + StringComparer.Ordinal); + foreach (GlEnumDefinition value in registry.EnumBlocks.SelectMany( + block => block.Enums).Where(IsDesktopEnum)) + { + if (value.Value is null) + { + continue; + } + + if (emitted.TryGetValue(value.Name, out GlEnumDefinition? previous)) + { + if (!string.Equals(previous.Value, value.Value, StringComparison.Ordinal)) + { + throw new InvalidDataException( + $"Desktop enum '{value.Name}' has conflicting values " + + $"'{previous.Value}' and '{value.Value}'."); + } + + continue; + } + + emitted.Add(value.Name, value); + ConstantExpression expression = ReadConstantExpression(value); + builder.Append(" public const "); + builder.Append(expression.Type); + builder.Append(' '); + builder.Append(ReadConstantName(value.Name)); + builder.Append(" = "); + builder.Append(expression.Literal); + builder.Append(";\n"); + } + + builder.Append("\n }\n"); + builder.Append("}\n"); + return builder.ToString(); + } + + private static bool IsDesktopEnum( + GlEnumDefinition value + ) + { + return value.Api is null || string.Equals( + value.Api, + ApiName, + StringComparison.Ordinal); + } + + private static ConstantExpression ReadConstantExpression( + GlEnumDefinition value + ) + { + string source = value.Value!; + bool isHex = source.StartsWith("0x", StringComparison.OrdinalIgnoreCase); + BigInteger number = isHex + ? BigInteger.Parse( + $"0{source[2..]}", + NumberStyles.AllowHexSpecifier, + CultureInfo.InvariantCulture) + : BigInteger.Parse(source, NumberStyles.Integer, CultureInfo.InvariantCulture); + + if (string.Equals(value.TypeSuffix, "ull", StringComparison.OrdinalIgnoreCase)) + { + EnsureRange(number, BigInteger.Zero, ulong.MaxValue, value); + return new ConstantExpression("ulong", ReadLiteral(source, isHex, "UL")); + } + + if (string.Equals(value.TypeSuffix, "u", StringComparison.OrdinalIgnoreCase)) + { + EnsureRange(number, BigInteger.Zero, uint.MaxValue, value); + return new ConstantExpression("uint", ReadLiteral(source, isHex, "u")); + } + + if (number >= int.MinValue && number <= int.MaxValue) + { + return new ConstantExpression("int", source); + } + + if (number >= BigInteger.Zero && number <= uint.MaxValue) + { + return new ConstantExpression("uint", ReadLiteral(source, isHex, "u")); + } + + if (number >= long.MinValue && number <= long.MaxValue) + { + return new ConstantExpression("long", ReadLiteral(source, isHex, "L")); + } + + if (number >= BigInteger.Zero && number <= ulong.MaxValue) + { + return new ConstantExpression("ulong", ReadLiteral(source, isHex, "UL")); + } + + throw new InvalidDataException( + $"Enum '{value.Name}' value '{source}' does not fit a C# integral type."); + } + + private static void EnsureRange( + BigInteger value, + BigInteger minimum, + BigInteger maximum, + GlEnumDefinition definition + ) + { + if (value < minimum || value > maximum) + { + throw new InvalidDataException( + $"Enum '{definition.Name}' value '{definition.Value}' is outside its " + + "declared numeric suffix range."); + } + } + + private static string ReadLiteral( + string source, + bool isHex, + string suffix + ) + { + return isHex ? $"{source}{suffix}" : $"{source}{suffix}"; + } + + private static string ReadConstantName( + string name + ) + { + string value = name.StartsWith("GL_", StringComparison.Ordinal) + ? name[3..] + : name; + StringBuilder result = new StringBuilder(value.Length + 1); + if (value.Length == 0 || char.IsDigit(value[0])) + { + result.Append('_'); + } + + foreach (char character in value) + { + result.Append(char.IsLetterOrDigit(character) || character == '_' + ? character + : '_'); + } + + return result.ToString(); + } + + private static string GenerateContext( + IReadOnlyList commands, + GlEquivalentTypeMapper typeMapper + ) + { + StringBuilder builder = new StringBuilder(128 * 1024); + AppendGeneratedHeader(builder, "Desktop OpenGL core function pointer table"); + builder.Append("namespace StgSharp.Graphics.OpenGL\n"); + builder.Append("{\n"); + builder.Append(" public unsafe partial struct OpenglContext\n"); + builder.Append(" {\n"); + foreach (GlCommandDefinition command in commands) + { + builder.Append(" internal delegate* unmanaged<"); + foreach (GlParameterDefinition parameter in command.Parameters) + { + builder.Append(typeMapper.ReadParameterType(parameter)); + builder.Append(", "); + } + + builder.Append(typeMapper.ReadReturnType(command)); + builder.Append("> "); + builder.Append(command.Name); + builder.Append(";\n"); + } + + builder.Append(" }\n"); + builder.Append("}\n"); + return builder.ToString(); + } + + private static string GenerateFunctions( + IReadOnlyList commands, + GlEquivalentTypeMapper typeMapper + ) + { + StringBuilder builder = new StringBuilder(512 * 1024); + AppendGeneratedHeader(builder, "Desktop OpenGL core forwarding methods"); + builder.Append("using System.Runtime.CompilerServices;\n\n"); + builder.Append("namespace StgSharp.Graphics.OpenGL\n"); + builder.Append("{\n"); + builder.Append(" public unsafe partial class OpenGLFunction\n"); + builder.Append(" {\n"); + builder.Append("\n private readonly OpenglContext* __context;\n"); + builder.Append("\n internal OpenGLFunction(OpenglContext* context)\n"); + builder.Append(" {\n"); + builder.Append(" __context = context;\n"); + builder.Append(" }\n"); + foreach (GlCommandDefinition command in commands) + { + string returnType = typeMapper.ReadReturnType(command); + string methodName = ReadMethodName(command.Name); + builder.Append("\n [MethodImpl(MethodImplOptions.AggressiveInlining)]\n"); + builder.Append(" public "); + builder.Append(returnType); + builder.Append(' '); + builder.Append(methodName); + builder.Append('('); + for (int index = 0; index < command.Parameters.Count; index++) + { + if (index != 0) + { + builder.Append(", "); + } + + GlParameterDefinition parameter = command.Parameters[index]; + builder.Append(typeMapper.ReadParameterType(parameter)); + builder.Append(' '); + builder.Append(EscapeIdentifier(parameter.Name)); + } + + builder.Append(")\n"); + builder.Append(" {\n"); + builder.Append(" "); + if (returnType != "void") + { + builder.Append("return "); + } + + builder.Append("__context->"); + builder.Append(command.Name); + builder.Append('('); + builder.Append( + string.Join( + ", ", + command.Parameters.Select( + value => EscapeIdentifier(value.Name)))); + builder.Append(");\n"); + builder.Append(" }\n"); + } + + builder.Append("\n }\n"); + builder.Append("}\n"); + return builder.ToString(); + } + + private static string ReadMethodName( + string commandName + ) + { + return commandName.StartsWith("gl", StringComparison.Ordinal) && + commandName.Length > 2 + ? commandName[2..] + : commandName; + } + + private static string EscapeIdentifier( + string value + ) + { + return _csharpKeywords.Contains(value) ? $"@{value}" : value; + } + + private static void AppendGeneratedHeader( + StringBuilder builder, + string description + ) + { + builder.Append("// \n"); + builder.Append("// Generated by StgSharp.GenerateGL.\n"); + builder.Append("// "); + builder.Append(description); + builder.Append(".\n"); + builder.Append("// \n\n"); + } + + private sealed record ConstantExpression( + string Type, + string Literal + ); + + } +} diff --git a/tools/StgSharp.GenerateGL/Program.cs b/tools/StgSharp.GenerateGL/Program.cs new file mode 100644 index 00000000..e73dffb4 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Program.cs @@ -0,0 +1,60 @@ +// ----------------------------------------------------------------------------- +// file="Program" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.IO; +using System.Xml; + +namespace StgSharp.GenerateGL +{ + internal static class Program + { + + private static int Main( + string[] args + ) + { + try + { + return XmlCli.Run(args); + } + catch (IOException exception) + { + return WriteError(exception); + } + catch (XmlException exception) + { + return WriteError(exception); + } + catch (InvalidDataException exception) + { + return WriteError(exception); + } + catch (UnauthorizedAccessException exception) + { + return WriteError(exception); + } + catch (ArgumentException exception) + { + return WriteError(exception); + } + catch (NotSupportedException exception) + { + return WriteError(exception); + } + } + + private static int WriteError( + Exception exception + ) + { + Console.Error.WriteLine($"error: {exception.Message}"); + return XmlCli.LoadErrorExitCode; + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlApiDefinition.cs b/tools/StgSharp.GenerateGL/Registry/GlApiDefinition.cs new file mode 100644 index 00000000..a29558ee --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlApiDefinition.cs @@ -0,0 +1,59 @@ +// ----------------------------------------------------------------------------- +// file="GlApiDefinition" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace StgSharp.GenerateGL.Registry +{ + internal sealed record GlFeatureDefinition( + string Name, + string Api, + string Number, + string? Protect, + string? Comment, + IReadOnlyList Requirements, + GlRegistryElement Element + ); + + internal sealed record GlExtensionDefinition( + string Name, + string? SupportedApis, + string? Protect, + string? Comment, + IReadOnlyList Requirements, + GlRegistryElement Element + ); + + internal sealed record GlRequirementBlock( + GlRequirementOperation Operation, + string? Api, + string? Profile, + string? Comment, + IReadOnlyList References, + GlRegistryElement Element + ); + + internal sealed record GlRegistryReference( + GlRegistryReferenceKind Kind, + string Name, + string? Comment, + GlRegistryElement Element + ); + + internal enum GlRequirementOperation + { + Require, + Remove, + } + + internal enum GlRegistryReferenceKind + { + Type, + Enum, + Command, + } +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlCommandDefinition.cs b/tools/StgSharp.GenerateGL/Registry/GlCommandDefinition.cs new file mode 100644 index 00000000..e74e29e0 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlCommandDefinition.cs @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------------- +// file="GlCommandDefinition" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace StgSharp.GenerateGL.Registry +{ + internal sealed record GlCommandBlock( + string? Namespace, + IReadOnlyList Commands, + GlRegistryElement Element + ); + + internal sealed record GlCommandDefinition( + string Name, + GlReturnDefinition Return, + IReadOnlyList Parameters, + IReadOnlyList Aliases, + IReadOnlyList VectorEquivalents, + IReadOnlyList Protocols, + string? Comment, + GlRegistryElement Element + ); + + internal sealed record GlReturnDefinition( + string DeclarationText, + string? TypeName, + string? Group, + string? Kind, + string? ObjectClass, + GlRegistryElement Element + ); + + internal sealed record GlParameterDefinition( + string Name, + string DeclarationText, + string? TypeName, + string? Group, + string? Kind, + string? ObjectClass, + string? Length, + GlRegistryElement Element + ); + + internal sealed record GlCommandProtocol( + string Type, + string Opcode, + string? Name, + string? Comment, + GlRegistryElement Element + ); +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlEnumDefinition.cs b/tools/StgSharp.GenerateGL/Registry/GlEnumDefinition.cs new file mode 100644 index 00000000..c3c956f0 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlEnumDefinition.cs @@ -0,0 +1,50 @@ +// ----------------------------------------------------------------------------- +// file="GlEnumDefinition" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace StgSharp.GenerateGL.Registry +{ + internal sealed record GlEnumDefinition( + string Name, + string? Value, + string? Api, + string? TypeSuffix, + string? Group, + string? Alias, + string? Comment, + GlRegistryElement Element + ); + + internal sealed record GlEnumBlock( + string? Namespace, + string? Group, + string? Type, + string? Start, + string? End, + string? Vendor, + string? Comment, + IReadOnlyList Enums, + IReadOnlyList UnusedRanges, + GlRegistryElement Element + ); + + internal sealed record GlEnumGroup( + string Name, + string? Comment, + IReadOnlyList Members, + GlRegistryElement Element + ); + + internal sealed record GlUnusedEnumRange( + string Start, + string? End, + string? Vendor, + string? Comment, + GlRegistryElement Element + ); +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlRegistryElement.cs b/tools/StgSharp.GenerateGL/Registry/GlRegistryElement.cs new file mode 100644 index 00000000..7d2edd70 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlRegistryElement.cs @@ -0,0 +1,30 @@ +// ----------------------------------------------------------------------------- +// file="GlRegistryElement" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Collections.Generic; + +namespace StgSharp.GenerateGL.Registry +{ + /// + /// Preserves the XML representation shared by every registry model item. + /// + internal sealed record GlRegistryElement( + GlSourceLocation Location, + string RawXml, + IReadOnlyDictionary Attributes + ); + + internal readonly record struct GlSourceLocation( + int LineNumber, + int LinePosition + ); + + internal sealed record GlNamedReference( + string Name, + GlRegistryElement Element + ); +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlRegistryModel.cs b/tools/StgSharp.GenerateGL/Registry/GlRegistryModel.cs new file mode 100644 index 00000000..dddb5cc1 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlRegistryModel.cs @@ -0,0 +1,126 @@ +// ----------------------------------------------------------------------------- +// file="GlRegistryModel" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; + +namespace StgSharp.GenerateGL.Registry +{ + /// + /// Contains the structural OpenGL registry model without managed type mapping. + /// + internal sealed class GlRegistryModel + { + + public GlRegistryModel( + string sourcePath, + string? comment, + IEnumerable types, + IEnumerable kinds, + IEnumerable enumGroups, + IEnumerable enumBlocks, + IEnumerable commandBlocks, + IEnumerable features, + IEnumerable extensions, + GlRegistryElement element + ) + { + ArgumentException.ThrowIfNullOrWhiteSpace(sourcePath); + ArgumentNullException.ThrowIfNull(types); + ArgumentNullException.ThrowIfNull(kinds); + ArgumentNullException.ThrowIfNull(enumGroups); + ArgumentNullException.ThrowIfNull(enumBlocks); + ArgumentNullException.ThrowIfNull(commandBlocks); + ArgumentNullException.ThrowIfNull(features); + ArgumentNullException.ThrowIfNull(extensions); + ArgumentNullException.ThrowIfNull(element); + + SourcePath = sourcePath; + Comment = comment; + Types = Freeze(types); + Kinds = Freeze(kinds); + EnumGroups = Freeze(enumGroups); + EnumBlocks = Freeze(enumBlocks); + CommandBlocks = Freeze(commandBlocks); + Commands = Freeze(CommandBlocks.SelectMany(value => value.Commands)); + Features = Freeze(features); + Extensions = Freeze(extensions); + Element = element; + + TypesByName = CreateIndex(Types, value => value.Name); + KindsByName = CreateIndex(Kinds, value => value.Name); + EnumGroupsByName = CreateIndex(EnumGroups, value => value.Name); + EnumsByName = CreateIndex( + EnumBlocks.SelectMany(value => value.Enums), + value => value.Name); + CommandsByName = CreateIndex(Commands, value => value.Name); + FeaturesByName = CreateIndex(Features, value => value.Name); + ExtensionsByName = CreateIndex(Extensions, value => value.Name); + } + + public string SourcePath { get; } + + public string? Comment { get; } + + public IReadOnlyList Types { get; } + + public IReadOnlyList Kinds { get; } + + public IReadOnlyList EnumGroups { get; } + + public IReadOnlyList EnumBlocks { get; } + + public IReadOnlyList CommandBlocks { get; } + + public IReadOnlyList Commands { get; } + + public IReadOnlyList Features { get; } + + public IReadOnlyList Extensions { get; } + + public GlRegistryElement Element { get; } + + public IReadOnlyDictionary> TypesByName { get; } + + public IReadOnlyDictionary> KindsByName { get; } + + public IReadOnlyDictionary> EnumGroupsByName { get; } + + public IReadOnlyDictionary> EnumsByName { get; } + + public IReadOnlyDictionary> CommandsByName { get; } + + public IReadOnlyDictionary> FeaturesByName { get; } + + public IReadOnlyDictionary> ExtensionsByName { get; } + + private static ReadOnlyDictionary> CreateIndex( + IEnumerable values, + Func readName + ) + { + Dictionary> index = values.GroupBy( + readName, + StringComparer.Ordinal) + .ToDictionary( + value => value.Key, + value => (IReadOnlyList)Freeze(value), + StringComparer.Ordinal); + return new ReadOnlyDictionary>(index); + } + + private static ReadOnlyCollection Freeze( + IEnumerable values + ) + { + return Array.AsReadOnly(values.ToArray()); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlRegistryReader.cs b/tools/StgSharp.GenerateGL/Registry/GlRegistryReader.cs new file mode 100644 index 00000000..3d2d5458 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlRegistryReader.cs @@ -0,0 +1,511 @@ +// ----------------------------------------------------------------------------- +// file="GlRegistryReader" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using StgSharp.GenerateGL.Tree; + +namespace StgSharp.GenerateGL.Registry +{ + /// + /// Projects the generic XML tree into the structural OpenGL registry model. + /// + internal static class GlRegistryReader + { + + private static readonly IReadOnlyDictionary _emptyAttributes = + new ReadOnlyDictionary( + new Dictionary(StringComparer.Ordinal)); + + public static GlRegistryModel Read( + XmlTreeDocument document + ) + { + ArgumentNullException.ThrowIfNull(document); + + XElement root = document.Tree.Root ?? throw new InvalidDataException( + $"XML document '{document.SourcePath}' does not contain a root element."); + if (root.Name != "registry") + { + throw CreateError( + document, + root, + $"Expected , but found <{root.Name}>."); + } + + ValidateChildren( + document, + root, + "comment", + "types", + "kinds", + "groups", + "enums", + "commands", + "feature", + "extensions"); + + return new GlRegistryModel( + document.SourcePath, + ReadOptionalElementText(root, "comment"), + ReadSection(document, root, "types", "type").Select( + value => ReadType(document, value)), + ReadSection(document, root, "kinds", "kind").Select( + value => ReadKind(document, value)), + ReadSection(document, root, "groups", "group").Select( + value => ReadEnumGroup(document, value)), + root.Elements("enums").Select(value => ReadEnumBlock(document, value)), + root.Elements("commands").Select( + value => ReadCommandBlock(document, value)), + root.Elements("feature").Select(value => ReadFeature(document, value)), + ReadSection(document, root, "extensions", "extension").Select( + value => ReadExtension(document, value)), + ReadElement(root)); + } + + private static GlTypeDefinition ReadType( + XmlTreeDocument document, + XElement element + ) + { + string name = ReadOptionalAttribute(element, "name") ?? + ReadOptionalElementText(element, "name") ?? + throw CreateError( + document, + element, + "A registry requires a name attribute or child element."); + + return new GlTypeDefinition( + name, + ReadDeclarationText(element), + ReadOptionalAttribute(element, "api"), + ReadOptionalAttribute(element, "requires"), + ReadOptionalAttribute(element, "type"), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static GlKindDefinition ReadKind( + XmlTreeDocument document, + XElement element + ) + { + return new GlKindDefinition( + ReadRequiredAttribute(document, element, "name"), + ReadRequiredAttribute(document, element, "desc"), + ReadElement(element)); + } + + private static GlEnumGroup ReadEnumGroup( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "enum"); + return new GlEnumGroup( + ReadRequiredAttribute(document, element, "name"), + ReadOptionalAttribute(element, "comment"), + Freeze( + element.Elements("enum").Select( + value => new GlNamedReference( + ReadRequiredAttribute(document, value, "name"), + ReadElement(value)))), + ReadElement(element)); + } + + private static GlEnumBlock ReadEnumBlock( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "enum", "unused"); + return new GlEnumBlock( + ReadOptionalAttribute(element, "namespace"), + ReadOptionalAttribute(element, "group"), + ReadOptionalAttribute(element, "type"), + ReadOptionalAttribute(element, "start"), + ReadOptionalAttribute(element, "end"), + ReadOptionalAttribute(element, "vendor"), + ReadOptionalAttribute(element, "comment"), + Freeze( + element.Elements("enum").Select( + value => ReadEnum(document, value))), + Freeze( + element.Elements("unused").Select( + value => ReadUnusedEnumRange(document, value))), + ReadElement(element)); + } + + private static GlEnumDefinition ReadEnum( + XmlTreeDocument document, + XElement element + ) + { + return new GlEnumDefinition( + ReadRequiredAttribute(document, element, "name"), + ReadOptionalAttribute(element, "value"), + ReadOptionalAttribute(element, "api"), + ReadOptionalAttribute(element, "type"), + ReadOptionalAttribute(element, "group"), + ReadOptionalAttribute(element, "alias"), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static GlUnusedEnumRange ReadUnusedEnumRange( + XmlTreeDocument document, + XElement element + ) + { + return new GlUnusedEnumRange( + ReadRequiredAttribute(document, element, "start"), + ReadOptionalAttribute(element, "end"), + ReadOptionalAttribute(element, "vendor"), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static GlCommandBlock ReadCommandBlock( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "command"); + return new GlCommandBlock( + ReadOptionalAttribute(element, "namespace"), + Freeze( + element.Elements("command").Select( + value => ReadCommand(document, value))), + ReadElement(element)); + } + + private static GlCommandDefinition ReadCommand( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren( + document, + element, + "proto", + "param", + "alias", + "vecequiv", + "glx"); + + XElement prototype = element.Element("proto") ?? throw CreateError( + document, + element, + "A registry requires a child element."); + string name = ReadRequiredElementText(document, prototype, "name"); + + return new GlCommandDefinition( + name, + ReadReturn(document, prototype), + Freeze( + element.Elements("param").Select( + value => ReadParameter(document, value))), + Freeze( + element.Elements("alias").Select( + value => ReadNamedReference(document, value))), + Freeze( + element.Elements("vecequiv").Select( + value => ReadNamedReference(document, value))), + Freeze( + element.Elements("glx").Select( + value => ReadCommandProtocol(document, value))), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static GlReturnDefinition ReadReturn( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "ptype", "name"); + _ = ReadRequiredElementText(document, element, "name"); + return new GlReturnDefinition( + ReadDeclarationText(element), + ReadOptionalElementText(element, "ptype"), + ReadOptionalAttribute(element, "group"), + ReadOptionalAttribute(element, "kind"), + ReadOptionalAttribute(element, "class"), + ReadElement(element)); + } + + private static GlParameterDefinition ReadParameter( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "ptype", "name"); + return new GlParameterDefinition( + ReadRequiredElementText(document, element, "name"), + ReadDeclarationText(element), + ReadOptionalElementText(element, "ptype"), + ReadOptionalAttribute(element, "group"), + ReadOptionalAttribute(element, "kind"), + ReadOptionalAttribute(element, "class"), + ReadOptionalAttribute(element, "len"), + ReadElement(element)); + } + + private static GlNamedReference ReadNamedReference( + XmlTreeDocument document, + XElement element + ) + { + return new GlNamedReference( + ReadRequiredAttribute(document, element, "name"), + ReadElement(element)); + } + + private static GlCommandProtocol ReadCommandProtocol( + XmlTreeDocument document, + XElement element + ) + { + return new GlCommandProtocol( + ReadRequiredAttribute(document, element, "type"), + ReadRequiredAttribute(document, element, "opcode"), + ReadOptionalAttribute(element, "name"), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static GlFeatureDefinition ReadFeature( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "require", "remove"); + return new GlFeatureDefinition( + ReadRequiredAttribute(document, element, "name"), + ReadRequiredAttribute(document, element, "api"), + ReadRequiredAttribute(document, element, "number"), + ReadOptionalAttribute(element, "protect"), + ReadOptionalAttribute(element, "comment"), + Freeze( + element.Elements().Select( + value => ReadRequirement(document, value))), + ReadElement(element)); + } + + private static GlExtensionDefinition ReadExtension( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "require", "remove"); + return new GlExtensionDefinition( + ReadRequiredAttribute(document, element, "name"), + ReadOptionalAttribute(element, "supported"), + ReadOptionalAttribute(element, "protect"), + ReadOptionalAttribute(element, "comment"), + Freeze( + element.Elements().Select( + value => ReadRequirement(document, value))), + ReadElement(element)); + } + + private static GlRequirementBlock ReadRequirement( + XmlTreeDocument document, + XElement element + ) + { + ValidateChildren(document, element, "type", "enum", "command"); + GlRequirementOperation operation = element.Name.LocalName switch + { + "require" => GlRequirementOperation.Require, + "remove" => GlRequirementOperation.Remove, + _ => throw CreateError( + document, + element, + $"Expected or , but found <{element.Name}>."), + }; + + return new GlRequirementBlock( + operation, + ReadOptionalAttribute(element, "api"), + ReadOptionalAttribute(element, "profile"), + ReadOptionalAttribute(element, "comment"), + Freeze( + element.Elements().Select( + value => ReadRegistryReference(document, value))), + ReadElement(element)); + } + + private static GlRegistryReference ReadRegistryReference( + XmlTreeDocument document, + XElement element + ) + { + GlRegistryReferenceKind kind = element.Name.LocalName switch + { + "type" => GlRegistryReferenceKind.Type, + "enum" => GlRegistryReferenceKind.Enum, + "command" => GlRegistryReferenceKind.Command, + _ => throw CreateError( + document, + element, + $"Unsupported registry reference <{element.Name}>."), + }; + return new GlRegistryReference( + kind, + ReadRequiredAttribute(document, element, "name"), + ReadOptionalAttribute(element, "comment"), + ReadElement(element)); + } + + private static IEnumerable ReadSection( + XmlTreeDocument document, + XElement root, + XName sectionName, + XName itemName + ) + { + foreach (XElement section in root.Elements(sectionName)) + { + ValidateChildren(document, section, itemName.LocalName); + foreach (XElement item in section.Elements(itemName)) + { + yield return item; + } + } + } + + private static string ReadRequiredAttribute( + XmlTreeDocument document, + XElement element, + XName name + ) + { + string? value = ReadOptionalAttribute(element, name); + if (value is null) + { + throw CreateError( + document, + element, + $"<{element.Name}> requires the '{name}' attribute."); + } + + return value; + } + + private static string? ReadOptionalAttribute( + XElement element, + XName name + ) + { + string? value = (string?)element.Attribute(name); + return string.IsNullOrWhiteSpace(value) ? null : value; + } + + private static string ReadRequiredElementText( + XmlTreeDocument document, + XElement element, + XName name + ) + { + string? value = ReadOptionalElementText(element, name); + if (value is null) + { + throw CreateError( + document, + element, + $"<{element.Name}> requires a non-empty <{name}> child element."); + } + + return value; + } + + private static string? ReadOptionalElementText( + XElement element, + XName name + ) + { + string? value = element.Element(name)?.Value.Trim(); + return string.IsNullOrWhiteSpace(value) ? null : value; + } + + private static string ReadDeclarationText( + XElement element + ) + { + return element.Value.Trim(); + } + + private static GlRegistryElement ReadElement( + XElement element + ) + { + IXmlLineInfo lineInfo = element; + GlSourceLocation location = lineInfo.HasLineInfo() + ? new GlSourceLocation(lineInfo.LineNumber, lineInfo.LinePosition) + : default; + IReadOnlyDictionary attributes = element.HasAttributes + ? new ReadOnlyDictionary( + element.Attributes().ToDictionary( + value => value.Name.ToString(), + value => value.Value, + StringComparer.Ordinal)) + : _emptyAttributes; + return new GlRegistryElement( + location, + element.ToString(SaveOptions.DisableFormatting), + attributes); + } + + private static ReadOnlyCollection Freeze( + IEnumerable values + ) + { + return Array.AsReadOnly(values.ToArray()); + } + + private static void ValidateChildren( + XmlTreeDocument document, + XElement element, + params string[] allowedNames + ) + { + HashSet allowed = new HashSet( + allowedNames, + StringComparer.Ordinal); + XElement? unsupported = element.Elements().FirstOrDefault( + value => !allowed.Contains(value.Name.LocalName)); + if (unsupported is not null) + { + throw CreateError( + document, + unsupported, + $"Unsupported <{unsupported.Name}> child in <{element.Name}>."); + } + } + + private static InvalidDataException CreateError( + XmlTreeDocument document, + XElement element, + string message + ) + { + IXmlLineInfo lineInfo = element; + string location = lineInfo.HasLineInfo() + ? $"({lineInfo.LineNumber},{lineInfo.LinePosition})" + : string.Empty; + return new InvalidDataException( + $"{document.SourcePath}{location}: {message}"); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/Registry/GlTypeDefinition.cs b/tools/StgSharp.GenerateGL/Registry/GlTypeDefinition.cs new file mode 100644 index 00000000..36ca54a5 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Registry/GlTypeDefinition.cs @@ -0,0 +1,25 @@ +// ----------------------------------------------------------------------------- +// file="GlTypeDefinition" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +namespace StgSharp.GenerateGL.Registry +{ + internal sealed record GlTypeDefinition( + string Name, + string DeclarationText, + string? Api, + string? RequiredType, + string? Category, + string? Comment, + GlRegistryElement Element + ); + + internal sealed record GlKindDefinition( + string Name, + string Description, + GlRegistryElement Element + ); +} diff --git a/tools/StgSharp.GenerateGL/RegistryCli.cs b/tools/StgSharp.GenerateGL/RegistryCli.cs new file mode 100644 index 00000000..499ef9fa --- /dev/null +++ b/tools/StgSharp.GenerateGL/RegistryCli.cs @@ -0,0 +1,860 @@ +// ----------------------------------------------------------------------------- +// file="RegistryCli" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using StgSharp.GenerateGL.Registry; + +namespace StgSharp.GenerateGL +{ + /// + /// Presents the parsed registry model as the primary CLI surface. + /// + internal static class RegistryCli + { + + private const int DefaultFindLimit = 10; + private const int DefaultListLimit = 20; + private const int QueryErrorExitCode = 1; + private const int SuccessExitCode = 0; + private const int UsageErrorExitCode = 2; + + public static int Execute( + GlRegistryModel registry, + string command, + IReadOnlyList arguments + ) + { + ArgumentNullException.ThrowIfNull(registry); + return command switch + { + "SUMMARY" or "REGISTRY" or "MODEL" => QuerySummary( + registry, + arguments), + "LIST" or "LS" => QueryList(registry, arguments), + "FIND" or "SEARCH" => QueryFind(registry, arguments), + "SHOW" or "INFO" => QueryShow(registry, arguments), + _ => WriteUsageError($"Unknown registry command '{command}'."), + }; + } + + private static int QuerySummary( + GlRegistryModel registry, + IReadOnlyCollection arguments + ) + { + if (!ExpectNoArguments("summary", arguments)) + { + return UsageErrorExitCode; + } + + GlRequirementBlock[] requirements = registry.Features.SelectMany( + value => value.Requirements) + .Concat( + registry.Extensions.SelectMany( + value => value.Requirements)) + .ToArray(); + Console.WriteLine("OpenGL registry"); + WriteProperty("source", registry.SourcePath); + WriteProperty("types", registry.Types.Count); + WriteProperty("kinds", registry.Kinds.Count); + WriteProperty("enum groups", registry.EnumGroups.Count); + WriteProperty("enum blocks", registry.EnumBlocks.Count); + WriteProperty( + "enums", + registry.EnumBlocks.Sum(value => value.Enums.Count)); + WriteProperty( + "unused enum ranges", + registry.EnumBlocks.Sum(value => value.UnusedRanges.Count)); + WriteProperty("commands", registry.Commands.Count); + WriteProperty( + "parameters", + registry.Commands.Sum(value => value.Parameters.Count)); + WriteProperty("features", registry.Features.Count); + WriteProperty("extensions", registry.Extensions.Count); + WriteProperty( + "require blocks", + requirements.Count( + value => value.Operation == GlRequirementOperation.Require)); + WriteProperty( + "remove blocks", + requirements.Count( + value => value.Operation == GlRequirementOperation.Remove)); + WriteProperty( + "named references", + requirements.Sum(value => value.References.Count)); + return SuccessExitCode; + } + + private static int QueryList( + GlRegistryModel registry, + IReadOnlyList arguments + ) + { + if (!TryReadListOptions( + arguments, + out RegistryObjectKind kind, + out string? filter, + out int limit, + out string? error)) + { + return WriteUsageError(error); + } + + RegistrySearchResult[] values = Enumerate(registry, kind) + .Where( + value => filter is null || value.Name.Contains( + filter, + StringComparison.OrdinalIgnoreCase)) + .ToArray(); + if (values.Length == 0) + { + Console.Error.WriteLine( + filter is null + ? $"No {ReadKindName(kind, true)} are registered." + : $"No {ReadKindName(kind, true)} contain '{filter}'."); + return QueryErrorExitCode; + } + + int displayedCount = Math.Min(values.Length, limit); + for (int index = 0; index < displayedCount; index++) + { + WriteCompactResult(index + 1, values[index]); + } + + WriteTruncation(values.Length, displayedCount); + return SuccessExitCode; + } + + private static int QueryFind( + GlRegistryModel registry, + IReadOnlyList arguments + ) + { + if (!TryReadFindOptions( + arguments, + out string text, + out bool exact, + out int limit, + out string? error)) + { + return WriteUsageError(error); + } + + RegistrySearchResult[] values = Enumerate(registry) + .Where( + value => exact + ? string.Equals( + value.Name, + text, + StringComparison.OrdinalIgnoreCase) + : value.Name.Contains( + text, + StringComparison.OrdinalIgnoreCase)) + .OrderBy( + value => value.Name, + StringComparer.Ordinal) + .ThenBy(value => value.Kind) + .ToArray(); + if (values.Length == 0) + { + Console.Error.WriteLine($"No registry names match '{text}'."); + return QueryErrorExitCode; + } + + int displayedCount = Math.Min(values.Length, limit); + for (int index = 0; index < displayedCount; index++) + { + WriteCompactResult(index + 1, values[index]); + } + + WriteTruncation(values.Length, displayedCount); + return SuccessExitCode; + } + + private static int QueryShow( + GlRegistryModel registry, + IReadOnlyList arguments + ) + { + if (!TryReadShowOptions( + arguments, + out RegistryObjectKind kind, + out string name, + out int limit, + out string? error)) + { + return WriteUsageError(error); + } + + RegistrySearchResult[] values = Enumerate(registry, kind) + .Where( + value => string.Equals( + value.Name, + name, + StringComparison.Ordinal)) + .ToArray(); + if (values.Length == 0) + { + Console.Error.WriteLine( + $"No {ReadKindName(kind, false)} named '{name}' is registered."); + Console.Error.WriteLine($"Try: find {name}"); + return QueryErrorExitCode; + } + + for (int index = 0; index < values.Length; index++) + { + if (index != 0) + { + Console.WriteLine(); + } + + if (values.Length > 1) + { + Console.WriteLine($"[{index + 1}]"); + } + + WriteDetailedResult(values[index], limit); + } + + return SuccessExitCode; + } + + private static IEnumerable Enumerate( + GlRegistryModel registry + ) + { + foreach (RegistryObjectKind kind in Enum.GetValues()) + { + foreach (RegistrySearchResult value in Enumerate(registry, kind)) + { + yield return value; + } + } + } + + private static IEnumerable Enumerate( + GlRegistryModel registry, + RegistryObjectKind kind + ) + { + return kind switch + { + RegistryObjectKind.Type => registry.Types.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.Kind => registry.Kinds.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.EnumGroup => registry.EnumGroups.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.Enum => registry.EnumBlocks.SelectMany( + value => value.Enums).Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.Command => registry.Commands.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.Feature => registry.Features.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + RegistryObjectKind.Extension => registry.Extensions.Select( + value => new RegistrySearchResult( + kind, + value.Name, + value, + value.Element)), + _ => throw new ArgumentOutOfRangeException(nameof(kind)), + }; + } + + private static void WriteCompactResult( + int index, + RegistrySearchResult result + ) + { + Console.WriteLine( + $"[{index}] {ReadKindName(result.Kind, false)}: {result.Name}"); + switch (result.Value) + { + case GlTypeDefinition type: + WriteProperty("declaration", type.DeclarationText); + break; + + case GlKindDefinition kind: + WriteProperty("description", kind.Description); + break; + + case GlEnumGroup group: + WriteProperty("members", group.Members.Count); + break; + + case GlEnumDefinition enumValue: + WriteOptionalProperty("value", enumValue.Value); + WriteOptionalProperty("alias", enumValue.Alias); + WriteOptionalProperty("group", enumValue.Group); + break; + + case GlCommandDefinition command: + WriteProperty("declaration", ReadCommandDeclaration(command)); + break; + + case GlFeatureDefinition feature: + WriteProperty("api", feature.Api); + WriteProperty("version", feature.Number); + break; + + case GlExtensionDefinition extension: + WriteOptionalProperty("supported", extension.SupportedApis); + break; + } + + WriteProperty("line", result.Element.Location.LineNumber); + } + + private static void WriteDetailedResult( + RegistrySearchResult result, + int referenceLimit + ) + { + switch (result.Value) + { + case GlTypeDefinition type: + WriteType(type); + break; + + case GlKindDefinition kind: + WriteKind(kind); + break; + + case GlEnumGroup group: + WriteEnumGroup(group, referenceLimit); + break; + + case GlEnumDefinition enumValue: + WriteEnum(enumValue); + break; + + case GlCommandDefinition command: + WriteCommand(command); + break; + + case GlFeatureDefinition feature: + Console.WriteLine($"feature: {feature.Name}"); + WriteProperty("api", feature.Api); + WriteProperty("version", feature.Number); + WriteOptionalProperty("protect", feature.Protect); + WriteOptionalProperty("comment", feature.Comment); + WriteProperty("line", feature.Element.Location.LineNumber); + WriteRequirements(feature.Requirements, referenceLimit); + break; + + case GlExtensionDefinition extension: + Console.WriteLine($"extension: {extension.Name}"); + WriteOptionalProperty("supported", extension.SupportedApis); + WriteOptionalProperty("protect", extension.Protect); + WriteOptionalProperty("comment", extension.Comment); + WriteProperty("line", extension.Element.Location.LineNumber); + WriteRequirements(extension.Requirements, referenceLimit); + break; + } + } + + private static void WriteType( + GlTypeDefinition value + ) + { + Console.WriteLine($"type: {value.Name}"); + WriteProperty("declaration", value.DeclarationText); + WriteOptionalProperty("api", value.Api); + WriteOptionalProperty("requires", value.RequiredType); + WriteOptionalProperty("category", value.Category); + WriteOptionalProperty("comment", value.Comment); + WriteProperty("line", value.Element.Location.LineNumber); + } + + private static void WriteKind( + GlKindDefinition value + ) + { + Console.WriteLine($"kind: {value.Name}"); + WriteProperty("description", value.Description); + WriteProperty("line", value.Element.Location.LineNumber); + } + + private static void WriteEnumGroup( + GlEnumGroup value, + int limit + ) + { + Console.WriteLine($"enum group: {value.Name}"); + WriteOptionalProperty("comment", value.Comment); + WriteProperty("line", value.Element.Location.LineNumber); + WriteProperty("members", value.Members.Count); + int displayedCount = Math.Min(value.Members.Count, limit); + for (int index = 0; index < displayedCount; index++) + { + Console.WriteLine($" [{index + 1}] {value.Members[index].Name}"); + } + + WriteIndentedTruncation(value.Members.Count, displayedCount, 4); + } + + private static void WriteEnum( + GlEnumDefinition value + ) + { + Console.WriteLine($"enum: {value.Name}"); + WriteOptionalProperty("value", value.Value); + WriteOptionalProperty("api", value.Api); + WriteOptionalProperty("type suffix", value.TypeSuffix); + WriteOptionalProperty("group", value.Group); + WriteOptionalProperty("alias", value.Alias); + WriteOptionalProperty("comment", value.Comment); + WriteProperty("line", value.Element.Location.LineNumber); + } + + private static void WriteCommand( + GlCommandDefinition value + ) + { + Console.WriteLine($"command: {value.Name}"); + WriteProperty("declaration", ReadCommandDeclaration(value)); + WriteProperty("line", value.Element.Location.LineNumber); + WriteProperty("return declaration", value.Return.DeclarationText); + WriteOptionalProperty("return type", value.Return.TypeName); + WriteOptionalProperty("return group", value.Return.Group); + WriteOptionalProperty("return kind", value.Return.Kind); + WriteOptionalProperty("return class", value.Return.ObjectClass); + WriteOptionalProperty("comment", value.Comment); + WriteProperty("parameters", value.Parameters.Count); + for (int index = 0; index < value.Parameters.Count; index++) + { + GlParameterDefinition parameter = value.Parameters[index]; + Console.WriteLine($" [{index + 1}] {parameter.Name}"); + WriteIndentedProperty("declaration", parameter.DeclarationText, 6); + WriteIndentedOptionalProperty("type", parameter.TypeName, 6); + WriteIndentedOptionalProperty("group", parameter.Group, 6); + WriteIndentedOptionalProperty("kind", parameter.Kind, 6); + WriteIndentedOptionalProperty("class", parameter.ObjectClass, 6); + WriteIndentedOptionalProperty("length", parameter.Length, 6); + WriteIndentedProperty("line", parameter.Element.Location.LineNumber, 6); + } + + WriteNamedReferences("aliases", value.Aliases); + WriteNamedReferences("vector equivalents", value.VectorEquivalents); + if (value.Protocols.Count != 0) + { + WriteProperty("protocols", value.Protocols.Count); + foreach (GlCommandProtocol protocol in value.Protocols) + { + Console.WriteLine($" {protocol.Type}: {protocol.Opcode}"); + WriteIndentedOptionalProperty("name", protocol.Name, 6); + WriteIndentedOptionalProperty("comment", protocol.Comment, 6); + } + } + } + + private static void WriteRequirements( + IReadOnlyList requirements, + int referenceLimit + ) + { + WriteProperty("requirement blocks", requirements.Count); + for (int index = 0; index < requirements.Count; index++) + { + GlRequirementBlock block = requirements[index]; + Console.WriteLine( + $" [{index + 1}] " + + $"{(block.Operation == GlRequirementOperation.Require ? "require" : "remove")}"); + WriteIndentedOptionalProperty("api", block.Api, 6); + WriteIndentedOptionalProperty("profile", block.Profile, 6); + WriteIndentedOptionalProperty("comment", block.Comment, 6); + WriteIndentedProperty("references", block.References.Count, 6); + int displayedCount = Math.Min(block.References.Count, referenceLimit); + for (int referenceIndex = 0; + referenceIndex < displayedCount; + referenceIndex++) + { + GlRegistryReference reference = block.References[referenceIndex]; + Console.WriteLine( + $" {ReadReferenceKind(reference.Kind)}: {reference.Name}"); + } + + WriteIndentedTruncation(block.References.Count, displayedCount, 8); + } + } + + private static void WriteNamedReferences( + string name, + IReadOnlyList values + ) + { + if (values.Count == 0) + { + return; + } + + WriteProperty(name, values.Count); + foreach (GlNamedReference value in values) + { + Console.WriteLine($" - {value.Name}"); + } + } + + private static string ReadCommandDeclaration( + GlCommandDefinition command + ) + { + string returnType = command.Return.DeclarationText.Replace( + command.Name, + string.Empty, + StringComparison.Ordinal).Trim(); + return $"{returnType} {command.Name}(" + + string.Join(", ", command.Parameters.Select(value => value.DeclarationText)) + + ")"; + } + + private static bool TryReadListOptions( + IReadOnlyList arguments, + out RegistryObjectKind kind, + out string? filter, + out int limit, + out string? error + ) + { + kind = default; + if (arguments.Count == 0 || !TryReadKind(arguments[0], out kind)) + { + filter = null; + limit = 0; + error = "list requires a registry category: types, kinds, groups, enums, " + + "commands, features, or extensions."; + return false; + } + + filter = null; + limit = DefaultListLimit; + int index = 1; + if (index < arguments.Count && !arguments[index].StartsWith( + "--", + StringComparison.Ordinal)) + { + filter = arguments[index++]; + } + + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + error = $"Unknown or invalid list option '{argument}'."; + return false; + } + + error = null; + return true; + } + + private static bool TryReadFindOptions( + IReadOnlyList arguments, + out string text, + out bool exact, + out int limit, + out string? error + ) + { + if (arguments.Count == 0 || arguments[0].StartsWith( + "--", + StringComparison.Ordinal)) + { + text = string.Empty; + exact = false; + limit = 0; + error = "find requires a registry name or partial name."; + return false; + } + + text = arguments[0]; + exact = false; + limit = DefaultFindLimit; + int index = 1; + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--exact") + { + exact = true; + continue; + } + + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + error = $"Unknown or invalid find option '{argument}'."; + return false; + } + + error = null; + return true; + } + + private static bool TryReadShowOptions( + IReadOnlyList arguments, + out RegistryObjectKind kind, + out string name, + out int limit, + out string? error + ) + { + kind = default; + if (arguments.Count < 2 || !TryReadKind(arguments[0], out kind)) + { + name = string.Empty; + limit = 0; + error = "show requires a registry category and exact name."; + return false; + } + + name = arguments[1]; + limit = DefaultListLimit; + int index = 2; + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + error = $"Unknown or invalid show option '{argument}'."; + return false; + } + + error = null; + return true; + } + + private static bool TryReadKind( + string value, + out RegistryObjectKind kind + ) + { + kind = value.ToUpperInvariant() switch + { + "TYPE" or "TYPES" => RegistryObjectKind.Type, + "KIND" or "KINDS" => RegistryObjectKind.Kind, + "GROUP" or "GROUPS" or "ENUMGROUP" or "ENUMGROUPS" => + RegistryObjectKind.EnumGroup, + "ENUM" or "ENUMS" => RegistryObjectKind.Enum, + "COMMAND" or "COMMANDS" or "FUNCTION" or "FUNCTIONS" => + RegistryObjectKind.Command, + "FEATURE" or "FEATURES" or "VERSION" or "VERSIONS" => + RegistryObjectKind.Feature, + "EXTENSION" or "EXTENSIONS" => RegistryObjectKind.Extension, + _ => default, + }; + return value.ToUpperInvariant() is + "TYPE" or "TYPES" or + "KIND" or "KINDS" or + "GROUP" or "GROUPS" or "ENUMGROUP" or "ENUMGROUPS" or + "ENUM" or "ENUMS" or + "COMMAND" or "COMMANDS" or "FUNCTION" or "FUNCTIONS" or + "FEATURE" or "FEATURES" or "VERSION" or "VERSIONS" or + "EXTENSION" or "EXTENSIONS"; + } + + private static string ReadKindName( + RegistryObjectKind kind, + bool plural + ) + { + string name = kind switch + { + RegistryObjectKind.Type => "type", + RegistryObjectKind.Kind => "kind", + RegistryObjectKind.EnumGroup => "enum group", + RegistryObjectKind.Enum => "enum", + RegistryObjectKind.Command => "command", + RegistryObjectKind.Feature => "feature", + RegistryObjectKind.Extension => "extension", + _ => throw new ArgumentOutOfRangeException(nameof(kind)), + }; + return plural ? $"{name}s" : name; + } + + private static string ReadReferenceKind( + GlRegistryReferenceKind kind + ) + { + return kind switch + { + GlRegistryReferenceKind.Type => "type", + GlRegistryReferenceKind.Enum => "enum", + GlRegistryReferenceKind.Command => "command", + _ => throw new ArgumentOutOfRangeException(nameof(kind)), + }; + } + + private static bool TryReadPositiveInt( + IReadOnlyList arguments, + ref int index, + out int value + ) + { + if (index >= arguments.Count) + { + value = 0; + return false; + } + + return int.TryParse( + arguments[index++], + NumberStyles.None, + CultureInfo.InvariantCulture, + out value) && value > 0; + } + + private static bool ExpectNoArguments( + string command, + IReadOnlyCollection arguments + ) + { + if (arguments.Count == 0) + { + return true; + } + + Console.Error.WriteLine($"error: {command} does not accept arguments."); + return false; + } + + private static int WriteUsageError( + string? error + ) + { + Console.Error.WriteLine($"error: {error}"); + return UsageErrorExitCode; + } + + private static void WriteTruncation( + int totalCount, + int displayedCount + ) + { + if (displayedCount != totalCount) + { + Console.WriteLine($"... {totalCount - displayedCount} more result(s)"); + } + } + + private static void WriteIndentedTruncation( + int totalCount, + int displayedCount, + int indentation + ) + { + if (displayedCount != totalCount) + { + Console.WriteLine( + $"{new string(' ', indentation)}... " + + $"{totalCount - displayedCount} more item(s)"); + } + } + + private static void WriteProperty( + string name, + object value + ) + { + WriteIndentedProperty(name, value, 2); + } + + private static void WriteOptionalProperty( + string name, + string? value + ) + { + WriteIndentedOptionalProperty(name, value, 2); + } + + private static void WriteIndentedProperty( + string name, + object value, + int indentation + ) + { + Console.WriteLine($"{new string(' ', indentation)}{name}: {value}"); + } + + private static void WriteIndentedOptionalProperty( + string name, + string? value, + int indentation + ) + { + if (value is not null) + { + WriteIndentedProperty(name, value, indentation); + } + } + + private sealed record RegistrySearchResult( + RegistryObjectKind Kind, + string Name, + object Value, + GlRegistryElement Element + ); + + private enum RegistryObjectKind + { + Type, + Kind, + EnumGroup, + Enum, + Command, + Feature, + Extension, + } + + } +} diff --git a/tools/StgSharp.GenerateGL/StgSharp.GenerateGL.csproj b/tools/StgSharp.GenerateGL/StgSharp.GenerateGL.csproj new file mode 100644 index 00000000..dff3294b --- /dev/null +++ b/tools/StgSharp.GenerateGL/StgSharp.GenerateGL.csproj @@ -0,0 +1,18 @@ + + + + Exe + false + true + true + + $(NoWarn);CA1303 + + + + + + + diff --git a/tools/StgSharp.GenerateGL/Tree/XmlTreeDocument.cs b/tools/StgSharp.GenerateGL/Tree/XmlTreeDocument.cs new file mode 100644 index 00000000..5072e5d0 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Tree/XmlTreeDocument.cs @@ -0,0 +1,20 @@ +// ----------------------------------------------------------------------------- +// file="XmlTreeDocument" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System.Xml.Linq; + +namespace StgSharp.GenerateGL.Tree +{ + /// + /// Holds the original XML text alongside its parsed tree. + /// + internal sealed record XmlTreeDocument( + string SourcePath, + string SourceText, + XDocument Tree + ); +} diff --git a/tools/StgSharp.GenerateGL/Tree/XmlTreeReader.cs b/tools/StgSharp.GenerateGL/Tree/XmlTreeReader.cs new file mode 100644 index 00000000..04c438e3 --- /dev/null +++ b/tools/StgSharp.GenerateGL/Tree/XmlTreeReader.cs @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------------- +// file="XmlTreeReader" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.IO; +using System.Xml; +using System.Xml.Linq; + +namespace StgSharp.GenerateGL.Tree +{ + /// + /// Loads XML as a generic tree without interpreting OpenGL semantics. + /// + internal static class XmlTreeReader + { + + public static XmlTreeDocument Load( + string path + ) + { + ArgumentException.ThrowIfNullOrWhiteSpace(path); + + string sourcePath = Path.GetFullPath(path); + string sourceText = File.ReadAllText(sourcePath); + XmlReaderSettings settings = new XmlReaderSettings + { + DtdProcessing = DtdProcessing.Prohibit, + IgnoreComments = false, + IgnoreWhitespace = false, + XmlResolver = null, + }; + + XDocument tree; + using (StringReader textReader = new StringReader(sourceText)) + using (XmlReader reader = XmlReader.Create(textReader, settings, sourcePath)) + { + tree = XDocument.Load( + reader, + LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + } + + if (tree.Root is null) + { + throw new InvalidDataException( + $"XML document '{sourcePath}' does not contain a root element."); + } + + return new XmlTreeDocument(sourcePath, sourceText, tree); + } + + } +} diff --git a/tools/StgSharp.GenerateGL/XmlCli.cs b/tools/StgSharp.GenerateGL/XmlCli.cs new file mode 100644 index 00000000..37d695f1 --- /dev/null +++ b/tools/StgSharp.GenerateGL/XmlCli.cs @@ -0,0 +1,1509 @@ +// ----------------------------------------------------------------------------- +// file="XmlCli" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml; +using System.Xml.Linq; +using System.Xml.XPath; +using StgSharp.GenerateGL.Generation; +using StgSharp.GenerateGL.Registry; +using StgSharp.GenerateGL.Tree; + +namespace StgSharp.GenerateGL +{ + internal static class XmlCli + { + + internal const int LoadErrorExitCode = 3; + + private const int DefaultDepth = 2; + private const int DefaultLimit = 20; + private const int DefaultSearchLimit = 5; + private const int ReadableDepth = 6; + private const int SearchReadableChildLimit = 8; + private const int SearchReadableDepth = 4; + private const int QueryErrorExitCode = 1; + private const int SuccessExitCode = 0; + private const int UsageErrorExitCode = 2; + + public static int Run( + string[] args + ) + { + ArgumentNullException.ThrowIfNull(args); + + if (!TryReadInvocation(args, out CliInvocation invocation, out string? error)) + { + return WriteUsageError(error); + } + + if (invocation.ShowHelp) + { + WriteHelp(); + return SuccessExitCode; + } + + CliSession session = LoadSession(invocation.XmlPath); + if (invocation.Interactive) + { + return RunInteractive(session); + } + + return ExecuteQuery(session, invocation.Command, invocation.Arguments); + } + + private static int ExecuteQuery( + CliSession session, + string command, + IReadOnlyList arguments + ) + { + try + { + return command switch + { + "LIST" or "LS" when arguments.Count != 0 && string.Equals( + arguments[0], + "files", + StringComparison.OrdinalIgnoreCase) => GenerateCli.ListFiles( + session.GeneratedFiles, + arguments.Skip(1).ToArray()), + "SUMMARY" or "REGISTRY" or "MODEL" or + "LIST" or "LS" or + "FIND" or "SEARCH" or + "SHOW" or "INFO" => RegistryCli.Execute( + session.Registry, + command, + arguments), + "GENERATE" or "GEN" => QueryGenerate(session, arguments), + "PREVIEW" => GenerateCli.Preview( + session.GeneratedFiles, + arguments), + "XML" => ExecuteXmlQuery(session.Document, arguments), + "CLEAR" or "CLS" => WriteUsageError( + "clear is only available in the interactive shell."), + "RAW" or "TREE" or "SELECT" or "TEXT" or + "ATTRIBUTES" or "ATTRS" => WriteMovedXmlQuery(command), + _ => WriteUnknownQuery(command), + }; + } + catch (XPathException exception) + { + return WriteUsageError($"Invalid XPath: {exception.Message}"); + } + catch (InvalidDataException exception) + { + Console.Error.WriteLine($"error: {exception.Message}"); + return QueryErrorExitCode; + } + } + + private static int QueryGenerate( + CliSession session, + IReadOnlyList arguments + ) + { + int result = GenerateCli.Generate( + session.Registry, + arguments, + out GeneratedFileSet? generatedFiles); + if (generatedFiles is not null) + { + session.GeneratedFiles = generatedFiles; + } + + return result; + } + + private static int ExecuteXmlQuery( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (arguments.Count == 0) + { + WriteXmlHelp(); + return SuccessExitCode; + } + + string command = arguments[0].ToUpperInvariant(); + string[] queryArguments = arguments.Skip(1).ToArray(); + return command switch + { + "SUMMARY" => QueryXmlSummary(document, queryArguments), + "RAW" => QueryRaw(document, queryArguments), + "TREE" => QueryTree(document, queryArguments), + "FIND" or "SEARCH" => QueryFind(document, queryArguments), + "SHOW" => QueryShow(document, queryArguments), + "SELECT" => QuerySelect(document, queryArguments), + "TEXT" => QueryText(document, queryArguments), + "ATTRIBUTES" or "ATTRS" => QueryAttributes( + document, + queryArguments), + _ => WriteUsageError($"Unknown XML command '{command}'."), + }; + } + + private static int QueryFind( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadSearchOptions(arguments, out SearchOptions options, out string? error)) + { + return WriteUsageError(error); + } + + SearchMatch[] matches = FindMatches(document, options).ToArray(); + if (matches.Length == 0) + { + Console.Error.WriteLine($"No XML keys or values contain '{options.Text}'."); + return QueryErrorExitCode; + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + for (int index = 0; index < displayedCount; index++) + { + SearchMatch match = matches[index]; + XElement context = FindSearchContext(match, options.ParentLevels); + if (index != 0) + { + Console.WriteLine(); + } + + Console.WriteLine( + $"[{index + 1}] {match.Field}: {Preview(match.Value, 120)}"); + Console.WriteLine($" match: {GetElementPath(match.Element)}"); + if (context != match.Element) + { + Console.WriteLine($" context: {GetElementPath(context)}"); + } + + WriteReadableElement( + context, + 0, + SearchReadableDepth, + SearchReadableChildLimit); + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static int QueryShow( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadSelectionOptions( + "show", + arguments, + out SelectionOptions options, + out string? error)) + { + return WriteUsageError(error); + } + + XElement[] matches = SelectElements(document, options.XPath); + if (matches.Length == 0) + { + return WriteNoMatches(options.XPath); + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + for (int index = 0; index < displayedCount; index++) + { + XElement element = matches[index]; + if (index != 0) + { + Console.WriteLine(); + } + + Console.WriteLine($"[{index + 1}] {GetElementPath(element)}"); + WriteReadableElement(element, 0, ReadableDepth, DefaultLimit); + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static int RunInteractive( + CliSession initialSession + ) + { + CliSession session = initialSession; + Console.WriteLine($"Loaded {session.Document.SourcePath}"); + Console.WriteLine("Type 'help' for commands, or 'exit' to leave."); + + while (true) + { + if (!Console.IsInputRedirected) + { + Console.Write($"{Path.GetFileName(session.Document.SourcePath)}> "); + } + + string? line = Console.ReadLine(); + if (line is null) + { + return SuccessExitCode; + } + + if (!TrySplitCommandLine(line, out string[] values, out string? error)) + { + Console.Error.WriteLine($"error: {error}"); + continue; + } + + if (values.Length == 0) + { + continue; + } + + string command = values[0].ToUpperInvariant(); + string[] arguments = values.Skip(1).ToArray(); + switch (command) + { + case "EXIT" or "QUIT": + return SuccessExitCode; + + case "HELP" or "?": + WriteHelp(arguments); + break; + + case "CLEAR" or "CLS": + if (arguments.Length != 0) + { + Console.Error.WriteLine( + "error: clear does not accept arguments."); + break; + } + + ClearConsole(); + break; + + case "LOAD" or "OPEN": + if (arguments.Length != 1) + { + Console.Error.WriteLine("error: load requires one XML path."); + break; + } + + if (TryLoadInteractive(arguments[0], out CliSession loaded)) + { + session = loaded; + Console.WriteLine($"Loaded {session.Document.SourcePath}"); + } + + break; + + case "RELOAD": + if (arguments.Length != 0) + { + Console.Error.WriteLine("error: reload does not accept arguments."); + break; + } + + if (TryLoadInteractive( + session.Document.SourcePath, + out CliSession reloaded)) + { + session = reloaded; + Console.WriteLine($"Reloaded {session.Document.SourcePath}"); + } + + break; + + default: + ExecuteQuery(session, command, arguments); + break; + } + } + } + + private static int QueryXmlSummary( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!ExpectNoArguments("xml summary", arguments)) + { + return UsageErrorExitCode; + } + + XElement root = document.Tree.Root!; + XElement[] elements = root.DescendantsAndSelf().ToArray(); + XText[] textNodes = document.Tree.DescendantNodes() + .OfType() + .Where(value => value is not XCData) + .ToArray(); + int maxDepth = elements.Max(value => value.Ancestors().Count()); + + Console.WriteLine("XML tree"); + WriteProperty("source", document.SourcePath); + WriteProperty("source characters", document.SourceText.Length); + WriteProperty("root", root.Name.ToString()); + WriteOptionalProperty("declaration version", document.Tree.Declaration?.Version); + WriteOptionalProperty("declaration encoding", document.Tree.Declaration?.Encoding); + WriteOptionalProperty("declaration standalone", document.Tree.Declaration?.Standalone); + WriteProperty("elements", elements.Length); + WriteProperty("attributes", elements.Sum(value => value.Attributes().Count())); + WriteProperty("text nodes", textNodes.Length); + WriteProperty( + "non-whitespace text nodes", + textNodes.Count(value => !string.IsNullOrWhiteSpace(value.Value))); + WriteProperty( + "CDATA nodes", + document.Tree.DescendantNodes().OfType().Count()); + WriteProperty( + "comments", + document.Tree.DescendantNodes().OfType().Count()); + WriteProperty("maximum element depth", maxDepth); + + Console.WriteLine(" root element children"); + foreach (IGrouping group in root.Elements() + .GroupBy(value => value.Name.ToString()) + .OrderBy( + value => value.Key, + StringComparer.Ordinal)) + { + Console.WriteLine($" {group.Key}: {group.Count()}"); + } + + return SuccessExitCode; + } + + private static int QueryRaw( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!ExpectNoArguments("raw", arguments)) + { + return UsageErrorExitCode; + } + + Console.Write(document.SourceText); + return SuccessExitCode; + } + + private static int QueryTree( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadTreeOptions(arguments, out TreeOptions options, out string? error)) + { + return WriteUsageError(error); + } + + XElement[] matches = SelectElements(document, options.XPath); + if (matches.Length == 0) + { + return WriteNoMatches(options.XPath); + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + for (int index = 0; index < displayedCount; index++) + { + XElement element = matches[index]; + if (index != 0) + { + Console.WriteLine(); + } + + Console.WriteLine($"[{index + 1}] {GetElementPath(element)}"); + WriteTree( + element, + 0, + options.Depth, + options.Limit, + options.IncludeWhitespace); + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static int QuerySelect( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadSelectionOptions( + "select", + arguments, + out SelectionOptions options, + out string? error)) + { + return WriteUsageError(error); + } + + XElement[] matches = SelectElements(document, options.XPath); + if (matches.Length == 0) + { + return WriteNoMatches(options.XPath); + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + for (int index = 0; index < displayedCount; index++) + { + XElement element = matches[index]; + if (index != 0) + { + Console.WriteLine(); + } + + Console.WriteLine( + $"[{index + 1}] {GetElementPath(element)} [line {ReadLine(element)}]"); + Console.WriteLine(element.ToString(SaveOptions.DisableFormatting)); + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static int QueryText( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadSelectionOptions( + "text", + arguments, + out SelectionOptions options, + out string? error)) + { + return WriteUsageError(error); + } + + XElement[] matches = SelectElements(document, options.XPath); + if (matches.Length == 0) + { + return WriteNoMatches(options.XPath); + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + foreach (XElement element in matches.Take(displayedCount)) + { + Console.WriteLine(element.Value); + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static int QueryAttributes( + XmlTreeDocument document, + IReadOnlyList arguments + ) + { + if (!TryReadSelectionOptions( + "attributes", + arguments, + out SelectionOptions options, + out string? error)) + { + return WriteUsageError(error); + } + + XElement[] matches = SelectElements(document, options.XPath); + if (matches.Length == 0) + { + return WriteNoMatches(options.XPath); + } + + int displayedCount = Math.Min(matches.Length, options.Limit); + for (int index = 0; index < displayedCount; index++) + { + XElement element = matches[index]; + Console.WriteLine( + $"[{index + 1}] {GetElementPath(element)} [line {ReadLine(element)}]"); + XAttribute[] attributes = element.Attributes().ToArray(); + if (attributes.Length == 0) + { + Console.WriteLine(" (no attributes)"); + continue; + } + + foreach (XAttribute attribute in attributes) + { + Console.WriteLine($" @{attribute.Name} = {attribute.Value}"); + } + } + + WriteTruncation(matches.Length, displayedCount); + return SuccessExitCode; + } + + private static XElement[] SelectElements( + XmlTreeDocument document, + string xpath + ) + { + return document.Tree.XPathSelectElements(xpath).ToArray(); + } + + private static IEnumerable FindMatches( + XmlTreeDocument document, + SearchOptions options + ) + { + XElement root = document.Tree.Root!; + foreach (XElement element in root.DescendantsAndSelf()) + { + if (MatchesSearch(element.Name.LocalName, options)) + { + yield return new SearchMatch(element, "element", element.Name.LocalName); + continue; + } + + XAttribute? attribute = element.Attributes().FirstOrDefault(value => + MatchesSearch(value.Name.LocalName, options) || + MatchesSearch(value.Value, options)); + if (attribute is not null) + { + yield return new SearchMatch( + element, + $"@{attribute.Name.LocalName}", + attribute.Value); + continue; + } + + string text = ReadDirectText(element); + if (text.Length != 0 && MatchesSearch(text, options)) + { + yield return new SearchMatch(element, "$text", text); + } + } + } + + private static bool MatchesSearch( + string value, + SearchOptions options + ) + { + return options.Exact + ? string.Equals(value, options.Text, StringComparison.OrdinalIgnoreCase) + : value.Contains(options.Text, StringComparison.OrdinalIgnoreCase); + } + + private static XElement FindSearchContext( + SearchMatch match, + int? parentLevels + ) + { + XElement context = match.Element; + int levels = parentLevels ?? (match.Field == "$text" ? 2 : 0); + for (int index = 0; index < levels; index++) + { + if (context.Parent is not XElement parent) + { + break; + } + + if (parentLevels is null && parent.Elements().Take(DefaultLimit + 1).Count() > + DefaultLimit) + { + break; + } + + context = parent; + } + + return context; + } + + private static void WriteReadableElement( + XElement element, + int depth, + int maximumDepth, + int childLimit + ) + { + string padding = new string(' ', depth * 2); + Console.WriteLine($"{padding}{element.Name.LocalName}: # line {ReadLine(element)}"); + + foreach (XAttribute attribute in element.Attributes()) + { + Console.WriteLine( + $"{padding} @{attribute.Name.LocalName}: {Preview(attribute.Value, 200)}"); + } + + string directText = ReadDirectText(element); + if (directText.Length != 0) + { + Console.WriteLine($"{padding} $text: {Preview(directText, 200)}"); + } + + foreach (XComment comment in element.Nodes().OfType()) + { + Console.WriteLine($"{padding} $comment: {Preview(comment.Value.Trim(), 200)}"); + } + + XElement[] children = element.Elements().ToArray(); + if (children.Length == 0) + { + return; + } + + if (depth >= maximumDepth) + { + Console.WriteLine($"{padding} ...: {children.Length} child element(s)"); + return; + } + + Dictionary totals = children.GroupBy(value => value.Name) + .ToDictionary( + value => value.Key, + value => value.Count()); + Dictionary indices = new Dictionary(); + int displayedCount = Math.Min(children.Length, childLimit); + foreach (XElement child in children.Take(displayedCount)) + { + indices.TryGetValue(child.Name, out int currentIndex); + currentIndex++; + indices[child.Name] = currentIndex; + + string name = totals[child.Name] == 1 + ? child.Name.LocalName + : $"{child.Name.LocalName}[{currentIndex}]"; + if (!child.HasElements && !child.HasAttributes) + { + Console.WriteLine( + $"{padding} {name}: {Preview(child.Value.Trim(), 200)}"); + continue; + } + + WriteReadableChild(child, name, depth + 1, maximumDepth, childLimit); + } + + if (displayedCount != children.Length) + { + Console.WriteLine( + $"{padding} ...: {children.Length - displayedCount} more child element(s)"); + } + } + + private static void WriteReadableChild( + XElement element, + string name, + int depth, + int maximumDepth, + int childLimit + ) + { + string padding = new string(' ', depth * 2); + Console.WriteLine($"{padding}{name}: # line {ReadLine(element)}"); + + foreach (XAttribute attribute in element.Attributes()) + { + Console.WriteLine( + $"{padding} @{attribute.Name.LocalName}: {Preview(attribute.Value, 200)}"); + } + + string directText = ReadDirectText(element); + if (directText.Length != 0) + { + Console.WriteLine($"{padding} $text: {Preview(directText, 200)}"); + } + + XElement[] children = element.Elements().ToArray(); + if (children.Length == 0) + { + return; + } + + if (depth >= maximumDepth) + { + Console.WriteLine($"{padding} ...: {children.Length} child element(s)"); + return; + } + + Dictionary totals = children.GroupBy(value => value.Name) + .ToDictionary( + value => value.Key, + value => value.Count()); + Dictionary indices = new Dictionary(); + int displayedCount = Math.Min(children.Length, childLimit); + foreach (XElement child in children.Take(displayedCount)) + { + indices.TryGetValue(child.Name, out int currentIndex); + currentIndex++; + indices[child.Name] = currentIndex; + + string childName = totals[child.Name] == 1 + ? child.Name.LocalName + : $"{child.Name.LocalName}[{currentIndex}]"; + if (!child.HasElements && !child.HasAttributes) + { + Console.WriteLine( + $"{padding} {childName}: {Preview(child.Value.Trim(), 200)}"); + continue; + } + + WriteReadableChild( + child, + childName, + depth + 1, + maximumDepth, + childLimit); + } + + if (displayedCount != children.Length) + { + Console.WriteLine( + $"{padding} ...: {children.Length - displayedCount} more child element(s)"); + } + } + + private static string ReadDirectText( + XElement element + ) + { + return string.Join( + ' ', + element.Nodes() + .OfType() + .Where(value => value is not XCData && + !string.IsNullOrWhiteSpace(value.Value)) + .Select(value => value.Value.Trim())); + } + + private static void WriteTree( + XElement element, + int depth, + int maximumDepth, + int childLimit, + bool includeWhitespace + ) + { + string padding = new string(' ', depth * 2); + string attributes = string.Join( + string.Empty, + element.Attributes().Select(value => + $" {value.Name}=\"{Preview(value.Value, 80)}\"")); + Console.WriteLine( + $"{padding}<{element.Name}{attributes}> [line {ReadLine(element)}]"); + + XNode[] children = element.Nodes() + .Where(value => IsVisible(value, includeWhitespace)) + .ToArray(); + if (children.Length == 0) + { + return; + } + + if (depth >= maximumDepth) + { + Console.WriteLine($"{padding} ... {children.Length} child node(s)"); + return; + } + + int displayedCount = Math.Min(children.Length, childLimit); + foreach (XNode child in children.Take(displayedCount)) + { + switch (child) + { + case XElement childElement: + WriteTree( + childElement, + depth + 1, + maximumDepth, + childLimit, + includeWhitespace); + break; + + case XCData cdata: + WriteNodeValue("#cdata", cdata.Value, depth + 1); + break; + + case XText text: + WriteNodeValue("#text", text.Value, depth + 1); + break; + + case XComment comment: + WriteNodeValue("#comment", comment.Value, depth + 1); + break; + + case XProcessingInstruction instruction: + WriteNodeValue( + $"?{instruction.Target}", + instruction.Data, + depth + 1); + break; + } + } + + if (displayedCount != children.Length) + { + Console.WriteLine( + $"{padding} ... {children.Length - displayedCount} more child node(s)"); + } + } + + private static bool IsVisible( + XNode node, + bool includeWhitespace + ) + { + return includeWhitespace || node is not XText text || + !string.IsNullOrWhiteSpace(text.Value); + } + + private static void WriteNodeValue( + string kind, + string value, + int depth + ) + { + string padding = new string(' ', depth * 2); + Console.WriteLine($"{padding}{kind} \"{Preview(value, 120)}\""); + } + + private static string Preview( + string value, + int maximumLength + ) + { + string escaped = value.Replace("\r", "\\r", StringComparison.Ordinal) + .Replace("\n", "\\n", StringComparison.Ordinal) + .Replace("\t", "\\t", StringComparison.Ordinal) + .Replace("\"", "\\\"", StringComparison.Ordinal); + return escaped.Length <= maximumLength + ? escaped + : $"{escaped[..maximumLength]}..."; + } + + private static string GetElementPath( + XElement element + ) + { + List segments = new List(); + foreach (XElement current in element.AncestorsAndSelf().Reverse()) + { + string segment = current.Name.LocalName; + if (current.Parent is XElement parent) + { + XElement[] siblings = parent.Elements(current.Name).ToArray(); + if (siblings.Length > 1) + { + int index = Array.IndexOf(siblings, current) + 1; + segment = $"{segment}[{index}]"; + } + } + + segments.Add(segment); + } + + return $"/{string.Join('/', segments)}"; + } + + private static int ReadLine( + XObject value + ) + { + return value is IXmlLineInfo lineInfo && lineInfo.HasLineInfo() + ? lineInfo.LineNumber + : 0; + } + + private static bool TryLoadInteractive( + string path, + out CliSession session + ) + { + try + { + session = LoadSession(path); + return true; + } + catch (IOException exception) + { + return WriteLoadError(exception, out session); + } + catch (XmlException exception) + { + return WriteLoadError(exception, out session); + } + catch (InvalidDataException exception) + { + return WriteLoadError(exception, out session); + } + catch (UnauthorizedAccessException exception) + { + return WriteLoadError(exception, out session); + } + catch (ArgumentException exception) + { + return WriteLoadError(exception, out session); + } + catch (NotSupportedException exception) + { + return WriteLoadError(exception, out session); + } + } + + private static CliSession LoadSession( + string path + ) + { + XmlTreeDocument document = XmlTreeReader.Load(path); + GlRegistryModel registry = GlRegistryReader.Read(document); + return new CliSession(document, registry); + } + + private static bool WriteLoadError( + Exception exception, + out CliSession session + ) + { + session = null!; + Console.Error.WriteLine($"error: {exception.Message}"); + return false; + } + + private static void ClearConsole() + { + if (Console.IsOutputRedirected) + { + return; + } + + try + { + Console.Clear(); + } + catch (IOException exception) + { + Console.Error.WriteLine($"error: {exception.Message}"); + } + catch (PlatformNotSupportedException exception) + { + Console.Error.WriteLine($"error: {exception.Message}"); + } + } + + private static bool TrySplitCommandLine( + string line, + out string[] values, + out string? error + ) + { + List result = new List(); + StringBuilder current = new StringBuilder(); + bool hasToken = false; + bool isQuoted = false; + + for (int index = 0; index < line.Length; index++) + { + char value = line[index]; + if (value == '"') + { + isQuoted = !isQuoted; + hasToken = true; + continue; + } + + if (value == '\\' && isQuoted && index + 1 < line.Length && + line[index + 1] == '"') + { + current.Append('"'); + index++; + hasToken = true; + continue; + } + + if (char.IsWhiteSpace(value) && !isQuoted) + { + if (hasToken) + { + result.Add(current.ToString()); + current.Clear(); + hasToken = false; + } + + continue; + } + + current.Append(value); + hasToken = true; + } + + if (isQuoted) + { + values = Array.Empty(); + error = "Unterminated double quote."; + return false; + } + + if (hasToken) + { + result.Add(current.ToString()); + } + + values = result.ToArray(); + error = null; + return true; + } + + private static bool TryReadInvocation( + string[] args, + out CliInvocation invocation, + out string? error + ) + { + string xmlPath = Path.Combine(AppContext.BaseDirectory, "xml", "gl.xml"); + List remaining = new List(args.Length); + for (int index = 0; index < args.Length; index++) + { + string argument = args[index]; + if (argument == "--xml") + { + if (++index >= args.Length || args[index].StartsWith("--", StringComparison.Ordinal)) + { + invocation = null!; + error = "--xml requires a file path."; + return false; + } + + xmlPath = args[index]; + continue; + } + + remaining.Add(argument); + } + + bool showHelp = remaining.Count == 1 && + (remaining[0] is "--help" or "-h" || string.Equals( + remaining[0], + "help", + StringComparison.OrdinalIgnoreCase)); + bool interactive = remaining.Count == 0 || remaining.Count == 1 && + (string.Equals( + remaining[0], + "shell", + StringComparison.OrdinalIgnoreCase) || string.Equals( + remaining[0], + "repl", + StringComparison.OrdinalIgnoreCase)); + invocation = new CliInvocation( + xmlPath, + showHelp || interactive ? string.Empty : remaining[0].ToUpperInvariant(), + showHelp || interactive + ? Array.Empty() + : remaining.Skip(1).ToArray(), + showHelp, + interactive); + error = null; + return true; + } + + private static bool TryReadTreeOptions( + IReadOnlyList arguments, + out TreeOptions options, + out string? error + ) + { + string xpath = "/*"; + int depth = DefaultDepth; + int limit = DefaultLimit; + bool includeWhitespace = false; + int index = 0; + if (arguments.Count != 0 && !arguments[0].StartsWith("--", StringComparison.Ordinal)) + { + xpath = arguments[0]; + index++; + } + + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--whitespace") + { + includeWhitespace = true; + continue; + } + + if (argument == "--depth" && TryReadNonNegativeInt( + arguments, + ref index, + out depth)) + { + continue; + } + + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + options = null!; + error = $"Unknown or invalid tree option '{argument}'."; + return false; + } + + options = new TreeOptions(xpath, depth, limit, includeWhitespace); + error = null; + return true; + } + + private static bool TryReadSearchOptions( + IReadOnlyList arguments, + out SearchOptions options, + out string? error + ) + { + if (arguments.Count == 0 || arguments[0].StartsWith("--", StringComparison.Ordinal)) + { + options = null!; + error = "find requires a search string."; + return false; + } + + string text = arguments[0]; + int limit = DefaultSearchLimit; + int? parentLevels = null; + bool exact = false; + int index = 1; + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--exact") + { + exact = true; + continue; + } + + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + if (argument == "--up" && TryReadNonNegativeInt( + arguments, + ref index, + out int levels)) + { + parentLevels = levels; + continue; + } + + options = null!; + error = $"Unknown or invalid find option '{argument}'."; + return false; + } + + options = new SearchOptions(text, limit, parentLevels, exact); + error = null; + return true; + } + + private static bool TryReadSelectionOptions( + string query, + IReadOnlyList arguments, + out SelectionOptions options, + out string? error + ) + { + if (arguments.Count == 0 || arguments[0].StartsWith("--", StringComparison.Ordinal)) + { + options = null!; + error = $"{query} requires an XPath expression."; + return false; + } + + string xpath = arguments[0]; + int limit = DefaultLimit; + int index = 1; + while (index < arguments.Count) + { + string argument = arguments[index++]; + if (argument == "--limit" && TryReadPositiveInt( + arguments, + ref index, + out limit)) + { + continue; + } + + options = null!; + error = $"Unknown or invalid {query} option '{argument}'."; + return false; + } + + options = new SelectionOptions(xpath, limit); + error = null; + return true; + } + + private static bool TryReadPositiveInt( + IReadOnlyList arguments, + ref int index, + out int value + ) + { + return TryReadInt(arguments, ref index, out value) && value > 0; + } + + private static bool TryReadNonNegativeInt( + IReadOnlyList arguments, + ref int index, + out int value + ) + { + return TryReadInt(arguments, ref index, out value) && value >= 0; + } + + private static bool TryReadInt( + IReadOnlyList arguments, + ref int index, + out int value + ) + { + if (index >= arguments.Count) + { + value = 0; + return false; + } + + return int.TryParse( + arguments[index++], + NumberStyles.None, + CultureInfo.InvariantCulture, + out value); + } + + private static bool ExpectNoArguments( + string query, + IReadOnlyCollection arguments + ) + { + if (arguments.Count == 0) + { + return true; + } + + Console.Error.WriteLine($"error: {query} does not accept arguments."); + return false; + } + + private static int WriteNoMatches( + string xpath + ) + { + Console.Error.WriteLine($"XPath selected no elements: {xpath}"); + return QueryErrorExitCode; + } + + private static int WriteUnknownQuery( + string query + ) + { + Console.Error.WriteLine($"error: unknown query '{query}'."); + Console.Error.WriteLine( + "Run with --help, or type help in the interactive shell."); + return UsageErrorExitCode; + } + + private static int WriteMovedXmlQuery( + string query + ) + { + string command = query switch + { + "RAW" => "raw", + "TREE" => "tree", + "SELECT" => "select", + "TEXT" => "text", + "ATTRIBUTES" or "ATTRS" => "attributes", + _ => query, + }; + Console.Error.WriteLine( + $"error: '{command}' is an XML diagnostic command; use 'xml {command}'."); + return UsageErrorExitCode; + } + + private static int WriteUsageError( + string? error + ) + { + Console.Error.WriteLine($"error: {error}"); + Console.Error.WriteLine( + "Run with --help, or type help in the interactive shell."); + return UsageErrorExitCode; + } + + private static void WriteTruncation( + int totalCount, + int displayedCount + ) + { + if (displayedCount != totalCount) + { + Console.WriteLine($"... {totalCount - displayedCount} more match(es)"); + } + } + + private static void WriteProperty( + string name, + object value + ) + { + Console.WriteLine($" {name}: {value}"); + } + + private static void WriteOptionalProperty( + string name, + string? value + ) + { + if (value is not null) + { + WriteProperty(name, value); + } + } + + private static void WriteHelp( + string[]? arguments = null + ) + { + if (arguments is { Length: 1 } && string.Equals( + arguments[0], + "generate", + StringComparison.OrdinalIgnoreCase)) + { + GenerateCli.WriteHelp(); + return; + } + + if (arguments is { Length: > 0 }) + { + Console.Error.WriteLine("error: help accepts only the 'generate' topic."); + return; + } + + Console.WriteLine("Inspect the structural OpenGL registry model."); + Console.WriteLine(); + Console.WriteLine("Usage:"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] # interactive shell"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] shell"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] summary"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] list " + + "[filter] [--limit ]"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] find " + + "[--exact] [--limit ]"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] show " + + "[--limit ]"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] generate"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] list files"); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] preview "); + Console.WriteLine(" StgSharp.GenerateGL [--xml ] xml [...]"); + Console.WriteLine(); + Console.WriteLine("Registry categories:"); + Console.WriteLine( + " types, kinds, groups, enums, commands, features, extensions"); + Console.WriteLine(); + Console.WriteLine("Examples:"); + Console.WriteLine(" StgSharp.GenerateGL summary"); + Console.WriteLine(" StgSharp.GenerateGL list commands BindBuffer"); + Console.WriteLine(" StgSharp.GenerateGL find glBindBuffer"); + Console.WriteLine(" StgSharp.GenerateGL show command glBindBuffer"); + Console.WriteLine(" StgSharp.GenerateGL show extension GL_KHR_debug"); + Console.WriteLine(" StgSharp.GenerateGL generate"); + Console.WriteLine(" StgSharp.GenerateGL list files"); + Console.WriteLine(" StgSharp.GenerateGL preview glconst.cs"); + Console.WriteLine(" StgSharp.GenerateGL xml tree --depth 1"); + Console.WriteLine(); + Console.WriteLine("Interactive commands:"); + Console.WriteLine(" help, load , reload, clear, exit"); + Console.WriteLine(); + Console.WriteLine("Use 'xml' to list the raw XML diagnostic commands."); + Console.WriteLine("Registry values and XML attributes remain strings."); + Console.WriteLine("The default XML is copied beside the executable at xml/gl.xml."); + } + + private static void WriteXmlHelp() + { + Console.WriteLine("Raw XML diagnostic commands:"); + Console.WriteLine(" xml summary"); + Console.WriteLine(" xml raw"); + Console.WriteLine( + " xml tree [xpath] [--depth ] [--limit ] [--whitespace]"); + Console.WriteLine( + " xml find [--exact] [--up ] [--limit ]"); + Console.WriteLine(" xml show [--limit ]"); + Console.WriteLine(" xml select [--limit ]"); + Console.WriteLine(" xml text [--limit ]"); + Console.WriteLine(" xml attributes [--limit ]"); + } + + private sealed class CliSession + { + + public CliSession( + XmlTreeDocument document, + GlRegistryModel registry + ) + { + Document = document; + Registry = registry; + } + + public XmlTreeDocument Document { get; } + + public GlRegistryModel Registry { get; } + + public GeneratedFileSet GeneratedFiles { get; set; } = GeneratedFileSet.Empty; + + } + + private sealed record CliInvocation( + string XmlPath, + string Command, + IReadOnlyList Arguments, + bool ShowHelp, + bool Interactive + ); + + private sealed record SelectionOptions( + string XPath, + int Limit + ); + + private sealed record SearchMatch( + XElement Element, + string Field, + string Value + ); + + private sealed record SearchOptions( + string Text, + int Limit, + int? ParentLevels, + bool Exact + ); + + private sealed record TreeOptions( + string XPath, + int Depth, + int Limit, + bool IncludeWhitespace + ); + + } +} diff --git a/test/StgSharp.GenerateGL/gl.h b/tools/StgSharp.GenerateGL/gl.h similarity index 100% rename from test/StgSharp.GenerateGL/gl.h rename to tools/StgSharp.GenerateGL/gl.h diff --git a/test/StgSharp.GenerateGL/xml/Genglvnd b/tools/StgSharp.GenerateGL/xml/Genglvnd similarity index 100% rename from test/StgSharp.GenerateGL/xml/Genglvnd rename to tools/StgSharp.GenerateGL/xml/Genglvnd diff --git a/test/StgSharp.GenerateGL/xml/README.adoc b/tools/StgSharp.GenerateGL/xml/README.adoc similarity index 100% rename from test/StgSharp.GenerateGL/xml/README.adoc rename to tools/StgSharp.GenerateGL/xml/README.adoc diff --git a/test/StgSharp.GenerateGL/xml/genglvnd.py b/tools/StgSharp.GenerateGL/xml/genglvnd.py similarity index 100% rename from test/StgSharp.GenerateGL/xml/genglvnd.py rename to tools/StgSharp.GenerateGL/xml/genglvnd.py diff --git a/test/StgSharp.GenerateGL/xml/genheaders.py b/tools/StgSharp.GenerateGL/xml/genheaders.py similarity index 100% rename from test/StgSharp.GenerateGL/xml/genheaders.py rename to tools/StgSharp.GenerateGL/xml/genheaders.py diff --git a/test/StgSharp.GenerateGL/xml/gl.xml b/tools/StgSharp.GenerateGL/xml/gl.xml similarity index 100% rename from test/StgSharp.GenerateGL/xml/gl.xml rename to tools/StgSharp.GenerateGL/xml/gl.xml diff --git a/test/StgSharp.GenerateGL/xml/glx.xml b/tools/StgSharp.GenerateGL/xml/glx.xml similarity index 100% rename from test/StgSharp.GenerateGL/xml/glx.xml rename to tools/StgSharp.GenerateGL/xml/glx.xml diff --git a/test/StgSharp.GenerateGL/xml/glxproto.reserved.txt b/tools/StgSharp.GenerateGL/xml/glxproto.reserved.txt similarity index 100% rename from test/StgSharp.GenerateGL/xml/glxproto.reserved.txt rename to tools/StgSharp.GenerateGL/xml/glxproto.reserved.txt diff --git a/test/StgSharp.GenerateGL/xml/readme.pdf b/tools/StgSharp.GenerateGL/xml/readme.pdf similarity index 100% rename from test/StgSharp.GenerateGL/xml/readme.pdf rename to tools/StgSharp.GenerateGL/xml/readme.pdf diff --git a/test/StgSharp.GenerateGL/xml/readme.tex b/tools/StgSharp.GenerateGL/xml/readme.tex similarity index 100% rename from test/StgSharp.GenerateGL/xml/readme.tex rename to tools/StgSharp.GenerateGL/xml/readme.tex diff --git a/test/StgSharp.GenerateGL/xml/reg.py b/tools/StgSharp.GenerateGL/xml/reg.py similarity index 100% rename from test/StgSharp.GenerateGL/xml/reg.py rename to tools/StgSharp.GenerateGL/xml/reg.py diff --git a/test/StgSharp.GenerateGL/xml/registry.rnc b/tools/StgSharp.GenerateGL/xml/registry.rnc similarity index 100% rename from test/StgSharp.GenerateGL/xml/registry.rnc rename to tools/StgSharp.GenerateGL/xml/registry.rnc diff --git a/test/StgSharp.GenerateGL/xml/testesext.c b/tools/StgSharp.GenerateGL/xml/testesext.c similarity index 100% rename from test/StgSharp.GenerateGL/xml/testesext.c rename to tools/StgSharp.GenerateGL/xml/testesext.c diff --git a/test/StgSharp.GenerateGL/xml/testglext.c b/tools/StgSharp.GenerateGL/xml/testglext.c similarity index 100% rename from test/StgSharp.GenerateGL/xml/testglext.c rename to tools/StgSharp.GenerateGL/xml/testglext.c diff --git a/test/StgSharp.GenerateGL/xml/vendors.txt b/tools/StgSharp.GenerateGL/xml/vendors.txt similarity index 100% rename from test/StgSharp.GenerateGL/xml/vendors.txt rename to tools/StgSharp.GenerateGL/xml/vendors.txt diff --git a/test/StgSharp.GenerateGL/xml/wgl.xml b/tools/StgSharp.GenerateGL/xml/wgl.xml similarity index 100% rename from test/StgSharp.GenerateGL/xml/wgl.xml rename to tools/StgSharp.GenerateGL/xml/wgl.xml diff --git a/test/StgSharp.GenerateGL/xml/wgltypes.txt b/tools/StgSharp.GenerateGL/xml/wgltypes.txt similarity index 100% rename from test/StgSharp.GenerateGL/xml/wgltypes.txt rename to tools/StgSharp.GenerateGL/xml/wgltypes.txt