diff --git a/GenerateGL.sln b/GenerateGL.sln new file mode 100644 index 00000000..dc07a6b6 --- /dev/null +++ b/GenerateGL.sln @@ -0,0 +1,37 @@ + +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", "StgSharp.GenerateGL\GenerateGL.csproj", "{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Common", "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/StgSharp.Common/Collections/StringHashMultiplexer.cs b/StgSharp.Common/Collections/StringHashMultiplexer.cs index 05f2ffc4..e159a21c 100644 --- a/StgSharp.Common/Collections/StringHashMultiplexer.cs +++ b/StgSharp.Common/Collections/StringHashMultiplexer.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="StringHashMultiplexer" // Project: StgSharp @@ -71,7 +71,7 @@ namespace StgSharp.Collections { int hash; fixed (char* cPtr = obj.AsSpan()) { - hash = NativeIntrinsic.Intrinsic.city_hash_simplify(cPtr, obj.Length); + hash = NativeIntrinsic.Context.city_hash_simplify(cPtr, obj.Length); } return hash; } @@ -136,7 +136,7 @@ namespace StgSharp.Collections { int hash; fixed (char* cPtr = obj.AsSpan()) { - hash = NativeIntrinsic.Intrinsic.city_hash_simplify(cPtr, obj.Length); + hash = NativeIntrinsic.Context.city_hash_simplify(cPtr, obj.Length); } return hash; } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs index 23058ecb..d3ed5347 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="TextureGL" // Project: StgSharp @@ -44,14 +44,19 @@ namespace StgSharp.Graphics.OpenGL private OpenGLFunction _gl; internal GlHandle[] _textureHandle; - internal TextureGL(int count, glRender binding) + internal TextureGL( + int count, + glRender binding + ) { // sourceList = new Image[count]; this._gl = binding.GL; _textureHandle = _gl.GenTextures(count); } - public GlHandle this[int index] + public GlHandle this[ + int index + ] { get => _textureHandle[index]; } @@ -70,12 +75,16 @@ namespace StgSharp.Graphics.OpenGL internal OpenGLFunction GL => _gl; - public void ActivateAs(TextureUnit unit) + public void ActivateAs( + TextureUnit unit + ) { _gl.ActiveTextureUnit((uint)unit); } - public void Bind2D(int index) + public void Bind2D( + int index + ) { currentEditingTextureIndex = index; _gl.BindTexture(glConst.TEXTURE_2D, _textureHandle[index]); @@ -90,19 +99,25 @@ namespace StgSharp.Graphics.OpenGL /// /// /// - public unsafe void LoadTexture(int index, Image i) + public unsafe void LoadTexture( + int index, + Image i + ) { byte[] handle = i.PixelBuffer; - _gl.TextureImage2d( - Texture2DTarget.Texture2D, 0, i.Channel, (uint)i.Width, (uint)i.Height, i.Channel, i.PixelLayout, - pixels:handle); + _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) + public void Set2dFilterProperty( + int index, + TextureFilter onMinify, + TextureFilter onMagnify + ) { #if DEBUG if (index != currentEditingTextureIndex) @@ -117,7 +132,11 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Set2dWrapProperty(int index, TextureWrap onHorizontial, TextureWrap onVertical) + public void Set2dWrapProperty( + int index, + TextureWrap onHorizontial, + TextureWrap onVertical + ) { #if DEBUG if (index != currentEditingTextureIndex) @@ -132,7 +151,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Set2dProperty(int index, TextureProperty property) + public void Set2dProperty( + int index, + TextureProperty property + ) { Set2dFilterProperty(index, property.FilterOnMinify, property.FilterOnMagnify); Set2dWrapProperty(index, property.WrapOnHorizontial, property.WrapOnVertical); @@ -156,7 +178,8 @@ namespace StgSharp.Graphics.OpenGL TextureFilter onMagnify, TextureFilter onMinify, TextureWrap onHorizontial, - TextureWrap onVertical) + TextureWrap onVertical + ) { FilterOnMagnify = onMagnify; FilterOnMinify = onMinify; @@ -188,15 +211,17 @@ namespace StgSharp.Graphics.OpenGL set => vert = value; } - public override bool Equals([NotNullWhen(true)] object obj) + public override bool Equals( + [NotNullWhen(true)] object obj + ) { return base.Equals(obj); } public override int GetHashCode() { - return HashCode.Combine( - FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, WrapOnVertical); + return HashCode.Combine(FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, + WrapOnVertical); } public override string ToString() @@ -204,12 +229,18 @@ namespace StgSharp.Graphics.OpenGL return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; } - public static bool operator !=(TextureProperty left, TextureProperty right) + public static bool operator !=( + TextureProperty left, + TextureProperty right + ) { return left.mask != right.mask; } - public static bool operator ==(TextureProperty left, TextureProperty right) + public static bool operator ==( + TextureProperty left, + TextureProperty right + ) { return left.mask == right.mask; } @@ -218,11 +249,12 @@ namespace StgSharp.Graphics.OpenGL ( TextureFilter onMagnify, TextureFilter onMinify, TextureWrap onHorizontial, TextureWrap onVertical - ) propertyValueTuple) + ) propertyValueTuple + ) { - return new TextureProperty( - propertyValueTuple.onMagnify, propertyValueTuple.onMinify, - propertyValueTuple.onHorizontial, propertyValueTuple.onVertical); + return new TextureProperty(propertyValueTuple.onMagnify, propertyValueTuple.onMinify, + propertyValueTuple.onHorizontial, + propertyValueTuple.onVertical); } } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs index b9cab902..c81649d3 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="VAO" // Project: StgSharp @@ -36,14 +36,19 @@ namespace StgSharp.Graphics.OpenGL public sealed unsafe class VertexArray : GlBufferObjectBase { - internal VertexArray(int n, glRender binding) + internal VertexArray( + int n, + glRender binding + ) : base(binding) { _bufferHandle = GL.GenVertexArrays(n); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public sealed override void Bind(int index) + public sealed override void Bind( + int index + ) { GL.BindVertexArray(_bufferHandle[index]); } @@ -60,13 +65,17 @@ namespace StgSharp.Graphics.OpenGL int vertexLength, TypeCode dataType, bool isNomalized, - uint stride, - int pointer) + int stride, + int pointer + ) { - GL.SetVertexAttribute(attributeIndex, vertexLength, dataType, isNomalized, stride, pointer); + GL.SetVertexAttribute(attributeIndex, vertexLength, dataType, isNomalized, stride, + pointer); } - protected sealed override void Dispose(bool disposing) + protected sealed override void Dispose( + bool disposing + ) { if (disposing) { GL.DeleteVertexArrays(_bufferHandle); diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs index fa2b7fd7..cbe4b5b5 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="Shader" // Project: StgSharp @@ -56,7 +56,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected sealed override Shader CreateShaderSegment(ShaderType type, int count) + protected sealed override Shader CreateShaderSegment( + ShaderType type, + int count + ) { return new Shader(GL.CreateShaderSet(count, type), type, this); } @@ -70,7 +73,11 @@ namespace StgSharp.Graphics.OpenGL internal readonly GlHandle[] handle; public readonly ShaderType type; - internal unsafe Shader(GlHandle[] handle, ShaderType usage, glRender stream) + internal unsafe Shader( + GlHandle[] handle, + ShaderType usage, + glRender stream + ) { this.handle = handle; GL = stream.GL; @@ -89,12 +96,18 @@ namespace StgSharp.Graphics.OpenGL /// Index of shader code in current shader code set. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachTo(int index, [NotNull]ShaderProgram target) + public void AttachTo( + int index, + [NotNull]ShaderProgram target + ) { GL.AttachShader(target.handle, handle[index]); } - public void CheckStatus(int index, ShaderStatus status) + public void CheckStatus( + int index, + ShaderStatus status + ) { string log = GL.GetShaderStatus(this, index, (int)status); if (!string.IsNullOrEmpty(log)) { @@ -103,7 +116,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile(int index, ReadOnlySpan codeU8Stream) + public unsafe void Compile( + int index, + ReadOnlySpan codeU8Stream + ) { GL.LoadShaderSource(handle[index], codeU8Stream); GL.CompileShader(handle[index]); @@ -111,7 +127,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile(int index, byte[] codeStream) + public unsafe void Compile( + int index, + byte[] codeStream + ) { ArgumentNullException.ThrowIfNull(codeStream); GL.LoadShaderSource(handle[index], codeStream); @@ -120,7 +139,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile(int index, string codeStream) + public unsafe void Compile( + int index, + string codeStream + ) { ArgumentNullException.ThrowIfNull(codeStream); GL.LoadShaderSource(handle[index], codeStream.AsSpan()); @@ -128,12 +150,16 @@ namespace StgSharp.Graphics.OpenGL CheckStatus(index, ShaderStatus.CompileStatus); } - public void FromBytes(byte[] stream) + public void FromBytes( + byte[] stream + ) { throw new NotImplementedException(); } - public static byte[] FromCodeFile(string fileRoute) + public static byte[] FromCodeFile( + string fileRoute + ) { string str = File.ReadAllText(fileRoute); if (string.IsNullOrEmpty(str)) { @@ -147,7 +173,9 @@ namespace StgSharp.Graphics.OpenGL return Array.Empty(); } - public byte[] GetBytes(out int length) + public byte[] GetBytes( + out int length + ) { throw new NotImplementedException(); } @@ -175,7 +203,9 @@ namespace StgSharp.Graphics.OpenGL /// /// CustomizeInit a program with no shader attached. /// - internal unsafe ShaderProgram(glRender binding) + internal unsafe ShaderProgram( + glRender binding + ) { GL = binding.GL; handle = GL.CreateProgram(); @@ -191,7 +221,9 @@ namespace StgSharp.Graphics.OpenGL /// /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe Uniform GetUniform(string name) where T: unmanaged + public unsafe Uniform GetUniform( + string name + ) where T : unmanaged { return new Uniform(GL.GetUniformLocation(this.handle, name)); } @@ -205,7 +237,9 @@ namespace StgSharp.Graphics.OpenGL /// /// /// - public unsafe Uniform GetUniform(string name) where T: unmanaged where U: struct + public unsafe Uniform GetUniform( + string name + ) where T : unmanaged where U : struct { return new Uniform(GL.GetUniformLocation(this.handle, name)); } @@ -219,8 +253,9 @@ namespace StgSharp.Graphics.OpenGL /// /// /// - public unsafe Uniform GetUniform(string name) where T: unmanaged where U: struct - where V: struct + public unsafe Uniform GetUniform( + string name + ) where T : unmanaged where U : struct where V : struct { return new Uniform(GL.GetUniformLocation(this.handle, name)); } @@ -234,9 +269,9 @@ namespace StgSharp.Graphics.OpenGL /// /// /// - public unsafe Uniform GetUniform(string name) where T: unmanaged where U: struct - where V: struct - where W: struct + 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)); } diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs index 209a21de..ae70a522 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="Uniform" // Project: StgSharp @@ -41,17 +41,21 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class Uniform : Uniform where T: unmanaged + public sealed class Uniform : Uniform where T : unmanaged { internal Uniform() { } - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( + GlHandle id + ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( + GlHandle handle + ) { return new Uniform { @@ -61,17 +65,21 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class Uniform : Uniform where T: unmanaged where U: struct + public sealed class Uniform : Uniform where T : unmanaged where U : struct { internal Uniform() { } - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( + GlHandle id + ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( + GlHandle handle + ) { return new Uniform { @@ -81,17 +89,22 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class Uniform : Uniform where T: unmanaged where U: struct where V: struct + public sealed class Uniform : Uniform where T : unmanaged where U : struct + where V : struct { internal Uniform() { } - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( + GlHandle id + ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( + GlHandle handle + ) { return new Uniform { @@ -101,17 +114,23 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class Uniform : Uniform where T: unmanaged where U: struct where V: struct where W: struct + public sealed class Uniform : Uniform where T : unmanaged where U : struct + where V : struct + where W : struct { internal Uniform() { } - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( + GlHandle id + ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( + GlHandle handle + ) { return new Uniform { @@ -125,46 +144,67 @@ namespace StgSharp.Graphics.OpenGL { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull] Uniform uniform, Matrix44 mat) + public void SetUniformValue( + [NotNull] Uniform uniform, + Matrix44 mat + ) { - Matrix44 temp = mat; - Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, false, (float*)&temp); + Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, (byte)0, (float*)&mat); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull]Uniform uniform, Vec4 vec) + public void SetUniformValue( + [NotNull]Uniform uniform, + Vec4 vec + ) { - Vec4 temp = vec; - Context.glUniform1fv(uniform.id.SignedValue, 4, &temp.reg); + Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull]Uniform uniform, Vec4 vec) + public void SetUniformValue( + [NotNull]Uniform uniform, + Vec4 vec + ) { - Vec4 temp = vec; - Context.glUniform1fv(uniform.id.SignedValue, 4, &temp.reg); + Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull]Uniform uniform, float v0) + public void SetUniformValue( + [NotNull]Uniform uniform, + float v0 + ) { Context.glUniform1f(uniform.id.SignedValue, v0); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull]Uniform uniform, int i0) + public void SetUniformValue( + [NotNull]Uniform uniform, + int i0 + ) { Context.glUniform1i(uniform.id.SignedValue, i0); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull] Uniform uniform, float v0, float v1) + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1 + ) { Context.glUniform2f(uniform.id.SignedValue, v0, v1); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue([NotNull] Uniform uniform, float v0, float v1, float v2) + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1, + float v2 + ) { Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); } @@ -175,7 +215,8 @@ namespace StgSharp.Graphics.OpenGL float v0, float v1, float v2, - float v3) + float v3 + ) { Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); } diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManager.Load.cs b/StgSharp.Common/Graphics/OpenGL/glApiManager.Load.cs index 7e331f5c..e8528709 100644 --- a/StgSharp.Common/Graphics/OpenGL/glApiManager.Load.cs +++ b/StgSharp.Common/Graphics/OpenGL/glApiManager.Load.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glApiManager.Load" // Project: StgSharp @@ -27,13 +27,17 @@ // ----------------------------------------------------------------------- using StgSharp.HighPerformance; using System; +using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL { public static partial class glManager { - internal static unsafe bool LoadGLcore10(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore10( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core10) { @@ -43,62 +47,65 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBlendFunc = (delegate*)load("glBlendFunc"u8); - contextPtr->glClear = (delegate*)load("glClear"u8); - contextPtr->glClearColor = (delegate*)load("glClearColor"u8); - contextPtr->glClearDepth = (delegate*)load("glClearDepth"u8); - contextPtr->glClearStencil = (delegate*)load("glClearStencil"u8); - contextPtr->glColorMask = (delegate*)load("glColorMask"u8); - contextPtr->glCullFace = (delegate*)load("glCullFace"u8); - contextPtr->glDepthFunc = (delegate*)load("glDepthFunc"u8); - contextPtr->glDepthMask = (delegate*)load("glDepthMask"u8); - contextPtr->glDepthRange = (delegate*)load("glDepthRange"u8); - contextPtr->glDisable = (delegate*)load("glDisable"u8); - contextPtr->glDrawBuffer = (delegate*)load("glDrawBuffer"u8); - contextPtr->glEnable = (delegate*)load("glEnable"u8); - contextPtr->glFinish = (delegate*)load("glFinish"u8); - contextPtr->glFlush = (delegate*)load("glFlush"u8); - contextPtr->glFrontFace = (delegate*)load("glFrontFace"u8); - contextPtr->glGetBooleanv = (delegate*)load("glGetBooleanv"u8); - contextPtr->glGetDoublev = (delegate*)load("glGetDoublev"u8); - contextPtr->glGetError = (delegate*)load("glGetError"u8); - contextPtr->glGetFloatv = (delegate*)load("glGetFloatv"u8); - contextPtr->glGetIntegerv = (delegate*)load("glGetIntegerv"u8); - contextPtr->glGetString = (delegate*)load("glGetString"u8); - contextPtr->glGetTexImage = (delegate*)load("glGetTexImage"u8); - contextPtr->glGetTexLevelParameterfv = (delegate*)load("glGetTexLevelParameterfv"u8); - contextPtr->glGetTexLevelParameteriv = (delegate*)load("glGetTexLevelParameteriv"u8); - contextPtr->glGetTexParameterfv = (delegate*)load("glGetTexParameterfv"u8); - contextPtr->glGetTexParameteriv = (delegate*)load("glGetTexParameteriv"u8); - contextPtr->glHint = (delegate*)load("glHint"u8); - contextPtr->glIsEnabled = (delegate*)load("glIsEnabled"u8); - contextPtr->glLineWidth = (delegate*)load("glLineWidth"u8); - contextPtr->glLogicOp = (delegate*)load("glLogicOp"u8); - contextPtr->glPixelStoref = (delegate*)load("glPixelStoref"u8); - contextPtr->glPixelStorei = (delegate*)load("glPixelStorei"u8); - contextPtr->glPointSize = (delegate*)load("glPointSize"u8); - contextPtr->glPolygonMode = (delegate*)load("glPolygonMode"u8); - contextPtr->glReadBuffer = (delegate*)load("glReadBuffer"u8); - contextPtr->glReadPixels = (delegate*)load("glReadPixels"u8); - contextPtr->glScissor = (delegate*)load("glScissor"u8); - contextPtr->glStencilFunc = (delegate*)load("glStencilFunc"u8); - contextPtr->glStencilMask = (delegate*)load("glStencilMask"u8); - contextPtr->glStencilOp = (delegate*)load("glStencilOp"u8); - contextPtr->glTexImage1D = (delegate*)load("glTexImage1D"u8); - contextPtr->glTexImage2D = (delegate*)load("glTexImage2D"u8); - contextPtr->glTexParameterf = (delegate*)load("glTexParameterf"u8); - contextPtr->glTexParameterfv = (delegate*)load("glTexParameterfv"u8); - contextPtr->glTexParameteri = (delegate*)load("glTexParameteri"u8); - contextPtr->glTexParameteriv = (delegate*)load("glTexParameteriv"u8); - contextPtr->glViewport = (delegate*)load("glViewport"u8); + contextPtr->glBlendFunc = LoadGLFunction(load, "glBlendFunc"u8); + contextPtr->glClear = LoadGLFunction(load, "glClear"u8); + contextPtr->glClearColor = LoadGLFunction(load, "glClearColor"u8); + contextPtr->glClearDepth = LoadGLFunction(load, "glClearDepth"u8); + contextPtr->glClearStencil = LoadGLFunction(load, "glClearStencil"u8); + contextPtr->glColorMask = LoadGLFunction(load, "glColorMask"u8); + contextPtr->glCullFace = LoadGLFunction(load, "glCullFace"u8); + contextPtr->glDepthFunc = LoadGLFunction(load, "glDepthFunc"u8); + contextPtr->glDepthMask = LoadGLFunction(load, "glDepthMask"u8); + contextPtr->glDepthRange = LoadGLFunction(load, "glDepthRange"u8); + contextPtr->glDisable = LoadGLFunction(load, "glDisable"u8); + contextPtr->glDrawBuffer = LoadGLFunction(load, "glDrawBuffer"u8); + contextPtr->glEnable = LoadGLFunction(load, "glEnable"u8); + contextPtr->glFinish = LoadGLFunction(load, "glFinish"u8); + contextPtr->glFlush = LoadGLFunction(load, "glFlush"u8); + contextPtr->glFrontFace = LoadGLFunction(load, "glFrontFace"u8); + contextPtr->glGetBooleanv = LoadGLFunction(load, "glGetBooleanv"u8); + contextPtr->glGetDoublev = LoadGLFunction(load, "glGetDoublev"u8); + contextPtr->glGetError = LoadGLFunction(load, "glGetError"u8); + contextPtr->glGetFloatv = LoadGLFunction(load, "glGetFloatv"u8); + contextPtr->glGetIntegerv = LoadGLFunction(load, "glGetIntegerv"u8); + contextPtr->glGetString = LoadGLFunction(load, "glGetString"u8); + contextPtr->glGetTexImage = LoadGLFunction(load, "glGetTexImage"u8); + contextPtr->glGetTexLevelParameterfv = LoadGLFunction(load, "glGetTexLevelParameterfv"u8); + contextPtr->glGetTexLevelParameteriv = LoadGLFunction(load, "glGetTexLevelParameteriv"u8); + contextPtr->glGetTexParameterfv = LoadGLFunction(load, "glGetTexParameterfv"u8); + contextPtr->glGetTexParameteriv = LoadGLFunction(load, "glGetTexParameteriv"u8); + contextPtr->glHint = LoadGLFunction(load, "glHint"u8); + contextPtr->glIsEnabled = LoadGLFunction(load, "glIsEnabled"u8); + contextPtr->glLineWidth = LoadGLFunction(load, "glLineWidth"u8); + contextPtr->glLogicOp = LoadGLFunction(load, "glLogicOp"u8); + contextPtr->glPixelStoref = LoadGLFunction(load, "glPixelStoref"u8); + contextPtr->glPixelStorei = LoadGLFunction(load, "glPixelStorei"u8); + contextPtr->glPointSize = LoadGLFunction(load, "glPointSize"u8); + contextPtr->glPolygonMode = LoadGLFunction(load, "glPolygonMode"u8); + contextPtr->glReadBuffer = LoadGLFunction(load, "glReadBuffer"u8); + contextPtr->glReadPixels = LoadGLFunction(load, "glReadPixels"u8); + contextPtr->glScissor = LoadGLFunction(load, "glScissor"u8); + contextPtr->glStencilFunc = LoadGLFunction(load, "glStencilFunc"u8); + contextPtr->glStencilMask = LoadGLFunction(load, "glStencilMask"u8); + contextPtr->glStencilOp = LoadGLFunction(load, "glStencilOp"u8); + contextPtr->glTexImage1D = LoadGLFunction(load, "glTexImage1D"u8); + contextPtr->glTexImage2D = LoadGLFunction(load, "glTexImage2D"u8); + contextPtr->glTexParameterf = LoadGLFunction(load, "glTexParameterf"u8); + contextPtr->glTexParameterfv = LoadGLFunction(load, "glTexParameterfv"u8); + contextPtr->glTexParameteri = LoadGLFunction(load, "glTexParameteri"u8); + contextPtr->glTexParameteriv = LoadGLFunction(load, "glTexParameteriv"u8); + contextPtr->glViewport = LoadGLFunction(load, "glViewport"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.0 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.0 APIs"); return true; } - internal static unsafe bool LoadGLcore11(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore11( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core11) { @@ -108,36 +115,40 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindTexture = (delegate*)load("glBindTexture"u8); - contextPtr->glCopyTexImage1D = (delegate*)load( + contextPtr->glBindTexture = LoadGLFunction(load, "glBindTexture"u8); + contextPtr->glCopyTexImage1D = LoadGLFunction(load, "glCopyTexImage1D"u8); - contextPtr->glCopyTexImage2D = (delegate*)load( + contextPtr->glCopyTexImage2D = LoadGLFunction(load, "glCopyTexImage2D"u8); - contextPtr->glCopyTexSubImage1D = (delegate*)load( + contextPtr->glCopyTexSubImage1D = LoadGLFunction(load, "glCopyTexSubImage1D"u8); - contextPtr->glCopyTexSubImage2D = (delegate*)load( + contextPtr->glCopyTexSubImage2D = LoadGLFunction(load, "glCopyTexSubImage2D"u8); - contextPtr->glDeleteTextures = (delegate*)load( + contextPtr->glDeleteTextures = LoadGLFunction(load, "glDeleteTextures"u8); - contextPtr->glDrawArrays = (delegate*)load("glDrawArrays"u8); - contextPtr->glDrawElements = (delegate*)load( + contextPtr->glDrawArrays = LoadGLFunction(load, "glDrawArrays"u8); + contextPtr->glDrawElements = LoadGLFunction(load, "glDrawElements"u8); - contextPtr->glGenTextures = (delegate*)load("glGenTextures"u8); - contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"u8); - contextPtr->glIsTexture = (delegate*)load("glIsTexture"u8); - contextPtr->glPolygonOffset = (delegate*)load("glPolygonOffset"u8); - contextPtr->glTexSubImage1D = (delegate*)load( + contextPtr->glGenTextures = LoadGLFunction(load, "glGenTextures"u8); + + // contextPtr->glGetPointerv =LoadGLFunction(load,"glGetPointerv"u8); + contextPtr->glIsTexture = LoadGLFunction(load, "glIsTexture"u8); + contextPtr->glPolygonOffset = LoadGLFunction(load, "glPolygonOffset"u8); + contextPtr->glTexSubImage1D = LoadGLFunction(load, "glTexSubImage1D"u8); - contextPtr->glTexSubImage2D = (delegate*)load( + contextPtr->glTexSubImage2D = LoadGLFunction(load, "glTexSubImage2D"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.1 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.1 APIs"); return true; } - internal static unsafe bool LoadGLcore12(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore12( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core12) { @@ -147,22 +158,25 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glCopyTexSubImage3D = (delegate*)load( + contextPtr->glCopyTexSubImage3D = LoadGLFunction(load, "glCopyTexSubImage3D"u8); - contextPtr->glDrawRangeElements = (delegate*)load( + contextPtr->glDrawRangeElements = LoadGLFunction(load, "glDrawRangeElements"u8); - contextPtr->glTexImage3D = (delegate*)load( + contextPtr->glTexImage3D = LoadGLFunction(load, "glTexImage3D"u8); - contextPtr->glTexSubImage3D = (delegate*)load( + contextPtr->glTexSubImage3D = LoadGLFunction(load, "glTexSubImage3D"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.2 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.2 APIs"); return true; } - internal static unsafe bool LoadGLcore13(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore13( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core13) { @@ -172,31 +186,34 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glActiveTexture = (delegate*)load("glActiveTexture"u8); - contextPtr->glCompressedTexImage1D = (delegate*)load( + contextPtr->glActiveTexture = LoadGLFunction(load, "glActiveTexture"u8); + contextPtr->glCompressedTexImage1D = LoadGLFunction(load, "glCompressedTexImage1D"u8); - contextPtr->glCompressedTexImage2D = (delegate*)load( + contextPtr->glCompressedTexImage2D = LoadGLFunction(load, "glCompressedTexImage2D"u8); - contextPtr->glCompressedTexImage3D = (delegate*)load( + contextPtr->glCompressedTexImage3D = LoadGLFunction(load, "glCompressedTexImage3D"u8); - contextPtr->glCompressedTexSubImage1D = (delegate*)load( + contextPtr->glCompressedTexSubImage1D = LoadGLFunction(load, "glCompressedTexSubImage1D"u8); - contextPtr->glCompressedTexSubImage2D = (delegate*)load( + contextPtr->glCompressedTexSubImage2D = LoadGLFunction(load, "glCompressedTexSubImage2D"u8); - contextPtr->glCompressedTexSubImage3D = (delegate*)load( + contextPtr->glCompressedTexSubImage3D = LoadGLFunction(load, "glCompressedTexSubImage3D"u8); - contextPtr->glGetCompressedTexImage = (delegate*)load( + contextPtr->glGetCompressedTexImage = LoadGLFunction(load, "glGetCompressedTexImage"u8); - contextPtr->glSampleCoverage = (delegate*)load( + contextPtr->glSampleCoverage = LoadGLFunction(load, "glSampleCoverage"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.3 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.3 APIs"); return true; } - internal static unsafe bool LoadGLcore14(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore14( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core14) { @@ -206,31 +223,34 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBlendColor = (delegate*)load( + contextPtr->glBlendColor = LoadGLFunction(load, "glBlendColor"u8); - contextPtr->glBlendEquation = (delegate*)load("glBlendEquation"u8); - contextPtr->glBlendFuncSeparate = (delegate*)load( + contextPtr->glBlendEquation = LoadGLFunction(load, "glBlendEquation"u8); + contextPtr->glBlendFuncSeparate = LoadGLFunction(load, "glBlendFuncSeparate"u8); - contextPtr->glMultiDrawArrays = (delegate*)load( + contextPtr->glMultiDrawArrays = LoadGLFunction(load, "glMultiDrawArrays"u8); - contextPtr->glMultiDrawElements = (delegate*)load( + contextPtr->glMultiDrawElements = LoadGLFunction(load, "glMultiDrawElements"u8); - contextPtr->glPointParameterf = (delegate*)load( + contextPtr->glPointParameterf = LoadGLFunction(load, "glPointParameterf"u8); - contextPtr->glPointParameterfv = (delegate*)load( + contextPtr->glPointParameterfv = LoadGLFunction(load, "glPointParameterfv"u8); - contextPtr->glPointParameteri = (delegate*)load( + contextPtr->glPointParameteri = LoadGLFunction(load, "glPointParameteri"u8); - contextPtr->glPointParameteriv = (delegate*)load( + contextPtr->glPointParameteriv = LoadGLFunction(load, "glPointParameteriv"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.4 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.4 APIs"); return true; } - internal static unsafe bool LoadGLcore15(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore15( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core15) { @@ -240,40 +260,43 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBeginQuery = (delegate*)load("glBeginQuery"u8); - contextPtr->glBindBuffer = (delegate*)load("glBindBuffer"u8); - contextPtr->glBufferData = (delegate*)load( + contextPtr->glBeginQuery = LoadGLFunction(load, "glBeginQuery"u8); + contextPtr->glBindBuffer = LoadGLFunction(load, "glBindBuffer"u8); + contextPtr->glBufferData = LoadGLFunction(load, "glBufferData"u8); - contextPtr->glBufferSubData = (delegate*)load( + contextPtr->glBufferSubData = LoadGLFunction(load, "glBufferSubData"u8); - contextPtr->glDeleteBuffers = (delegate*)load("glDeleteBuffers"u8); - contextPtr->glDeleteQueries = (delegate*)load("glDeleteQueries"u8); - contextPtr->glEndQuery = (delegate*)load("glEndQuery"u8); - contextPtr->glGenBuffers = (delegate*)load("glGenBuffers"u8); - contextPtr->glGenQueries = (delegate*)load("glGenQueries"u8); - contextPtr->glGetBufferParameteriv = (delegate*)load( + contextPtr->glDeleteBuffers = LoadGLFunction(load, "glDeleteBuffers"u8); + contextPtr->glDeleteQueries = LoadGLFunction(load, "glDeleteQueries"u8); + contextPtr->glEndQuery = LoadGLFunction(load, "glEndQuery"u8); + contextPtr->glGenBuffers = LoadGLFunction(load, "glGenBuffers"u8); + contextPtr->glGenQueries = LoadGLFunction(load, "glGenQueries"u8); + contextPtr->glGetBufferParameteriv = LoadGLFunction(load, "glGetBufferParameteriv"u8); - contextPtr->glGetBufferPointerv = (delegate*)load( + contextPtr->glGetBufferPointerv = LoadGLFunction(load, "glGetBufferPointerv"u8); - contextPtr->glGetBufferSubData = (delegate*)load( + contextPtr->glGetBufferSubData = LoadGLFunction(load, "glGetBufferSubData"u8); - contextPtr->glGetQueryObjectiv = (delegate*)load( + contextPtr->glGetQueryObjectiv = LoadGLFunction(load, "glGetQueryObjectiv"u8); - contextPtr->glGetQueryObjectuiv = (delegate*)load( + contextPtr->glGetQueryObjectuiv = LoadGLFunction(load, "glGetQueryObjectuiv"u8); - contextPtr->glGetQueryiv = (delegate*)load("glGetQueryiv"u8); - contextPtr->glIsBuffer = (delegate*)load("glIsBuffer"u8); - contextPtr->glIsQuery = (delegate*)load("glIsQuery"u8); - contextPtr->glMapBuffer = (delegate*)load("glMapBuffer"u8); - contextPtr->glUnmapBuffer = (delegate*)load("glUnmapBuffer"u8); + contextPtr->glGetQueryiv = LoadGLFunction(load, "glGetQueryiv"u8); + contextPtr->glIsBuffer = LoadGLFunction(load, "glIsBuffer"u8); + contextPtr->glIsQuery = LoadGLFunction(load, "glIsQuery"u8); + contextPtr->glMapBuffer = LoadGLFunction(load, "glMapBuffer"u8); + contextPtr->glUnmapBuffer = LoadGLFunction(load, "glUnmapBuffer"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 1.5 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 1.5 APIs"); return true; } - internal static unsafe bool LoadGLcore20(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore20( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core20) { @@ -283,173 +306,176 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glAttachShader = (delegate*)load("glAttachShader"u8); - contextPtr->glBindAttribLocation = (delegate*)load( + contextPtr->glAttachShader = LoadGLFunction(load, "glAttachShader"u8); + contextPtr->glBindAttribLocation = LoadGLFunction(load, "glBindAttribLocation"u8); - contextPtr->glBlendEquationSeparate = (delegate*)load( + contextPtr->glBlendEquationSeparate = LoadGLFunction(load, "glBlendEquationSeparate"u8); - contextPtr->glCompileShader = (delegate*)load("glCompileShader"u8); - contextPtr->glCreateProgram = (delegate*)load("glCreateProgram"u8); - contextPtr->glCreateShader = (delegate*)load("glCreateShader"u8); - contextPtr->glDeleteProgram = (delegate*)load("glDeleteProgram"u8); - contextPtr->glDeleteShader = (delegate*)load("glDeleteShader"u8); - contextPtr->glDetachShader = (delegate*)load("glDetachShader"u8); - contextPtr->glDisableVertexAttribArray = (delegate*)load( + contextPtr->glCompileShader = LoadGLFunction(load, "glCompileShader"u8); + contextPtr->glCreateProgram = LoadGLFunction(load, "glCreateProgram"u8); + contextPtr->glCreateShader = LoadGLFunction(load, "glCreateShader"u8); + contextPtr->glDeleteProgram = LoadGLFunction(load, "glDeleteProgram"u8); + contextPtr->glDeleteShader = LoadGLFunction(load, "glDeleteShader"u8); + contextPtr->glDetachShader = LoadGLFunction(load, "glDetachShader"u8); + contextPtr->glDisableVertexAttribArray = LoadGLFunction(load, "glDisableVertexAttribArray"u8); - contextPtr->glDrawBuffers = (delegate*)load("glDrawBuffers"u8); - contextPtr->glEnableVertexAttribArray = (delegate*)load( + contextPtr->glDrawBuffers = LoadGLFunction(load, "glDrawBuffers"u8); + contextPtr->glEnableVertexAttribArray = LoadGLFunction(load, "glEnableVertexAttribArray"u8); - contextPtr->glGetActiveAttrib = (delegate*)load( + contextPtr->glGetActiveAttrib = LoadGLFunction(load, "glGetActiveAttrib"u8); - contextPtr->glGetActiveUniform = (delegate*)load( + contextPtr->glGetActiveUniform = LoadGLFunction(load, "glGetActiveUniform"u8); - contextPtr->glGetAttachedShaders = (delegate*)load( + contextPtr->glGetAttachedShaders = LoadGLFunction(load, "glGetAttachedShaders"u8); - contextPtr->glGetAttribLocation = (delegate*)load( + contextPtr->glGetAttribLocation = LoadGLFunction(load, "glGetAttribLocation"u8); - contextPtr->glGetProgramInfoLog = (delegate*)load( + contextPtr->glGetProgramInfoLog = LoadGLFunction(load, "glGetProgramInfoLog"u8); - contextPtr->glGetProgramiv = (delegate*)load( + contextPtr->glGetProgramiv = LoadGLFunction(load, "glGetProgramiv"u8); - contextPtr->glGetShaderInfoLog = (delegate*)load( + contextPtr->glGetShaderInfoLog = LoadGLFunction(load, "glGetShaderInfoLog"u8); - contextPtr->glGetShaderSource = (delegate*)load( + contextPtr->glGetShaderSource = LoadGLFunction(load, "glGetShaderSource"u8); - contextPtr->glGetShaderiv = (delegate*)load("glGetShaderiv"u8); - contextPtr->glGetUniformLocation = (delegate*)load( + contextPtr->glGetShaderiv = LoadGLFunction(load, "glGetShaderiv"u8); + contextPtr->glGetUniformLocation = LoadGLFunction(load, "glGetUniformLocation"u8); - contextPtr->glGetUniformfv = (delegate*)load( + contextPtr->glGetUniformfv = LoadGLFunction(load, "glGetUniformfv"u8); - contextPtr->glGetUniformiv = (delegate*)load( + contextPtr->glGetUniformiv = LoadGLFunction(load, "glGetUniformiv"u8); - contextPtr->glGetVertexAttribPointerv = (delegate*)load( + contextPtr->glGetVertexAttribPointerv = LoadGLFunction(load, "glGetVertexAttribPointerv"u8); - contextPtr->glGetVertexAttribdv = (delegate*)load( + contextPtr->glGetVertexAttribdv = LoadGLFunction(load, "glGetVertexAttribdv"u8); - contextPtr->glGetVertexAttribfv = (delegate*)load( + contextPtr->glGetVertexAttribfv = LoadGLFunction(load, "glGetVertexAttribfv"u8); - contextPtr->glGetVertexAttribiv = (delegate*)load( + contextPtr->glGetVertexAttribiv = LoadGLFunction(load, "glGetVertexAttribiv"u8); - contextPtr->glIsProgram = (delegate*)load("glIsProgram"u8); - contextPtr->glIsShader = (delegate*)load("glIsShader"u8); - contextPtr->glLinkProgram = (delegate*)load("glLinkProgram"u8); - contextPtr->glShaderSource = (delegate* unmanaged[Stdcall])load( + contextPtr->glIsProgram = LoadGLFunction(load, "glIsProgram"u8); + contextPtr->glIsShader = LoadGLFunction(load, "glIsShader"u8); + contextPtr->glLinkProgram = LoadGLFunction(load, "glLinkProgram"u8); + contextPtr->glShaderSource = LoadGLFunction(load, "glShaderSource"u8); - contextPtr->glStencilFuncSeparate = (delegate*)load( + contextPtr->glStencilFuncSeparate = LoadGLFunction(load, "glStencilFuncSeparate"u8); - contextPtr->glStencilMaskSeparate = (delegate*)load( + contextPtr->glStencilMaskSeparate = LoadGLFunction(load, "glStencilMaskSeparate"u8); - contextPtr->glStencilOpSeparate = (delegate*)load( + contextPtr->glStencilOpSeparate = LoadGLFunction(load, "glStencilOpSeparate"u8); - contextPtr->glUniform1f = (delegate*)load("glUniform1f"u8); - contextPtr->glUniform1fv = (delegate*)load("glUniform1fv"u8); - contextPtr->glUniform1i = (delegate*)load("glUniform1i"u8); - contextPtr->glUniform1iv = (delegate*)load("glUniform1iv"u8); - contextPtr->glUniform2f = (delegate*)load("glUniform2f"u8); - contextPtr->glUniform2fv = (delegate*)load("glUniform2fv"u8); - contextPtr->glUniform2i = (delegate*)load("glUniform2i"u8); - contextPtr->glUniform2iv = (delegate*)load("glUniform2iv"u8); - contextPtr->glUniform3f = (delegate*)load( + contextPtr->glUniform1f = LoadGLFunction(load, "glUniform1f"u8); + contextPtr->glUniform1fv = LoadGLFunction(load, "glUniform1fv"u8); + contextPtr->glUniform1i = LoadGLFunction(load, "glUniform1i"u8); + contextPtr->glUniform1iv = LoadGLFunction(load, "glUniform1iv"u8); + contextPtr->glUniform2f = LoadGLFunction(load, "glUniform2f"u8); + contextPtr->glUniform2fv = LoadGLFunction(load, "glUniform2fv"u8); + contextPtr->glUniform2i = LoadGLFunction(load, "glUniform2i"u8); + contextPtr->glUniform2iv = LoadGLFunction(load, "glUniform2iv"u8); + contextPtr->glUniform3f = LoadGLFunction(load, "glUniform3f"u8); - contextPtr->glUniform3fv = (delegate*)load("glUniform3fv"u8); - contextPtr->glUniform3i = (delegate*)load("glUniform3i"u8); - contextPtr->glUniform3iv = (delegate*)load("glUniform3iv"u8); - contextPtr->glUniform4f = (delegate*)load( + contextPtr->glUniform3fv = LoadGLFunction(load, "glUniform3fv"u8); + contextPtr->glUniform3i = LoadGLFunction(load, "glUniform3i"u8); + contextPtr->glUniform3iv = LoadGLFunction(load, "glUniform3iv"u8); + contextPtr->glUniform4f = LoadGLFunction(load, "glUniform4f"u8); - contextPtr->glUniform4fv = (delegate*)load("glUniform4fv"u8); - contextPtr->glUniform4i = (delegate*)load( + contextPtr->glUniform4fv = LoadGLFunction(load, "glUniform4fv"u8); + contextPtr->glUniform4i = LoadGLFunction(load, "glUniform4i"u8); - contextPtr->glUniform4iv = (delegate*)load("glUniform4iv"u8); - contextPtr->glUniformMatrix2fv = (delegate*)load( + contextPtr->glUniform4iv = LoadGLFunction(load, "glUniform4iv"u8); + contextPtr->glUniformMatrix2fv = LoadGLFunction(load, "glUniformMatrix2fv"u8); - contextPtr->glUniformMatrix3fv = (delegate*)load( + contextPtr->glUniformMatrix3fv = LoadGLFunction(load, "glUniformMatrix3fv"u8); - contextPtr->glUniformMatrix4fv = (delegate*)load( + contextPtr->glUniformMatrix4fv = LoadGLFunction(load, "glUniformMatrix4fv"u8); - contextPtr->glUseProgram = (delegate*)load("glUseProgram"u8); - contextPtr->glValidateProgram = (delegate*)load("glValidateProgram"u8); - contextPtr->glVertexAttrib1d = (delegate*)load( + contextPtr->glUseProgram = LoadGLFunction(load, "glUseProgram"u8); + contextPtr->glValidateProgram = LoadGLFunction(load, "glValidateProgram"u8); + contextPtr->glVertexAttrib1d = LoadGLFunction(load, "glVertexAttrib1d"u8); - contextPtr->glVertexAttrib1dv = (delegate*)load( + contextPtr->glVertexAttrib1dv = LoadGLFunction(load, "glVertexAttrib1dv"u8); - contextPtr->glVertexAttrib1f = (delegate*)load( + contextPtr->glVertexAttrib1f = LoadGLFunction(load, "glVertexAttrib1f"u8); - contextPtr->glVertexAttrib1fv = (delegate*)load( + contextPtr->glVertexAttrib1fv = LoadGLFunction(load, "glVertexAttrib1fv"u8); - contextPtr->glVertexAttrib1s = (delegate*)load( + contextPtr->glVertexAttrib1s = LoadGLFunction(load, "glVertexAttrib1s"u8); - contextPtr->glVertexAttrib1sv = (delegate*)load( + contextPtr->glVertexAttrib1sv = LoadGLFunction(load, "glVertexAttrib1sv"u8); - contextPtr->glVertexAttrib2d = (delegate*)load( + contextPtr->glVertexAttrib2d = LoadGLFunction(load, "glVertexAttrib2d"u8); - contextPtr->glVertexAttrib2dv = (delegate*)load( + contextPtr->glVertexAttrib2dv = LoadGLFunction(load, "glVertexAttrib2dv"u8); - contextPtr->glVertexAttrib2f = (delegate*)load( + contextPtr->glVertexAttrib2f = LoadGLFunction(load, "glVertexAttrib2f"u8); - contextPtr->glVertexAttrib2fv = (delegate*)load( + contextPtr->glVertexAttrib2fv = LoadGLFunction(load, "glVertexAttrib2fv"u8); - contextPtr->glVertexAttrib2s = (delegate*)load( + contextPtr->glVertexAttrib2s = LoadGLFunction(load, "glVertexAttrib2s"u8); - contextPtr->glVertexAttrib2sv = (delegate*)load( + contextPtr->glVertexAttrib2sv = LoadGLFunction(load, "glVertexAttrib2sv"u8); - contextPtr->glVertexAttrib3d = (delegate*)load( + contextPtr->glVertexAttrib3d = LoadGLFunction(load, "glVertexAttrib3d"u8); - contextPtr->glVertexAttrib3dv = (delegate*)load( + contextPtr->glVertexAttrib3dv = LoadGLFunction(load, "glVertexAttrib3dv"u8); - contextPtr->glVertexAttrib3f = (delegate*)load( + contextPtr->glVertexAttrib3f = LoadGLFunction(load, "glVertexAttrib3f"u8); - contextPtr->glVertexAttrib3fv = (delegate*)load( + contextPtr->glVertexAttrib3fv = LoadGLFunction(load, "glVertexAttrib3fv"u8); - contextPtr->glVertexAttrib3s = (delegate*)load( + contextPtr->glVertexAttrib3s = LoadGLFunction(load, "glVertexAttrib3s"u8); - contextPtr->glVertexAttrib3sv = (delegate*)load( + contextPtr->glVertexAttrib3sv = LoadGLFunction(load, "glVertexAttrib3sv"u8); - contextPtr->glVertexAttrib4Nbv = (delegate*)load( + contextPtr->glVertexAttrib4Nbv = LoadGLFunction(load, "glVertexAttrib4Nbv"u8); - contextPtr->glVertexAttrib4Niv = (delegate*)load( + contextPtr->glVertexAttrib4Niv = LoadGLFunction(load, "glVertexAttrib4Niv"u8); - contextPtr->glVertexAttrib4Nsv = (delegate*)load( + contextPtr->glVertexAttrib4Nsv = LoadGLFunction(load, "glVertexAttrib4Nsv"u8); - contextPtr->glVertexAttrib4Nub = (delegate*)load( + contextPtr->glVertexAttrib4Nub = LoadGLFunction(load, "glVertexAttrib4Nub"u8); - contextPtr->glVertexAttrib4Nubv = (delegate*)load( + contextPtr->glVertexAttrib4Nubv = LoadGLFunction(load, "glVertexAttrib4Nubv"u8); - contextPtr->glVertexAttrib4Nuiv = (delegate*)load( + contextPtr->glVertexAttrib4Nuiv = LoadGLFunction(load, "glVertexAttrib4Nuiv"u8); - contextPtr->glVertexAttrib4Nusv = (delegate*)load( + contextPtr->glVertexAttrib4Nusv = LoadGLFunction(load, "glVertexAttrib4Nusv"u8); - contextPtr->glVertexAttrib4bv = (delegate*)load( + contextPtr->glVertexAttrib4bv = LoadGLFunction(load, "glVertexAttrib4bv"u8); - contextPtr->glVertexAttrib4d = (delegate*)load( + contextPtr->glVertexAttrib4d = LoadGLFunction(load, "glVertexAttrib4d"u8); - contextPtr->glVertexAttrib4dv = (delegate*)load( + contextPtr->glVertexAttrib4dv = LoadGLFunction(load, "glVertexAttrib4dv"u8); - contextPtr->glVertexAttrib4f = (delegate*)load( + contextPtr->glVertexAttrib4f = LoadGLFunction(load, "glVertexAttrib4f"u8); - contextPtr->glVertexAttrib4fv = (delegate*)load( + contextPtr->glVertexAttrib4fv = LoadGLFunction(load, "glVertexAttrib4fv"u8); - contextPtr->glVertexAttrib4iv = (delegate*)load( + contextPtr->glVertexAttrib4iv = LoadGLFunction(load, "glVertexAttrib4iv"u8); - contextPtr->glVertexAttrib4s = (delegate*)load( + contextPtr->glVertexAttrib4s = LoadGLFunction(load, "glVertexAttrib4s"u8); - contextPtr->glVertexAttrib4sv = (delegate*)load( + contextPtr->glVertexAttrib4sv = LoadGLFunction(load, "glVertexAttrib4sv"u8); - contextPtr->glVertexAttrib4ubv = (delegate*)load( + contextPtr->glVertexAttrib4ubv = LoadGLFunction(load, "glVertexAttrib4ubv"u8); - contextPtr->glVertexAttrib4uiv = (delegate*)load( + contextPtr->glVertexAttrib4uiv = LoadGLFunction(load, "glVertexAttrib4uiv"u8); - contextPtr->glVertexAttrib4usv = (delegate*)load( + contextPtr->glVertexAttrib4usv = LoadGLFunction(load, "glVertexAttrib4usv"u8); - contextPtr->glVertexAttribPointer = (delegate*)load( + contextPtr->glVertexAttribPointer = LoadGLFunction(load, "glVertexAttribPointer"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 2.0 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 2.0 APIs"); return true; } - internal static unsafe bool LoadGLcore21(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore21( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core21) { @@ -459,26 +485,29 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glUniformMatrix2x3fv = (delegate*)load( + contextPtr->glUniformMatrix2x3fv = LoadGLFunction(load, "glUniformMatrix2x3fv"u8); - contextPtr->glUniformMatrix2x4fv = (delegate*)load( + contextPtr->glUniformMatrix2x4fv = LoadGLFunction(load, "glUniformMatrix2x4fv"u8); - contextPtr->glUniformMatrix3x2fv = (delegate*)load( + contextPtr->glUniformMatrix3x2fv = LoadGLFunction(load, "glUniformMatrix3x2fv"u8); - contextPtr->glUniformMatrix3x4fv = (delegate*)load( + contextPtr->glUniformMatrix3x4fv = LoadGLFunction(load, "glUniformMatrix3x4fv"u8); - contextPtr->glUniformMatrix4x2fv = (delegate*)load( + contextPtr->glUniformMatrix4x2fv = LoadGLFunction(load, "glUniformMatrix4x2fv"u8); - contextPtr->glUniformMatrix4x3fv = (delegate*)load( + contextPtr->glUniformMatrix4x3fv = LoadGLFunction(load, "glUniformMatrix4x3fv"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 2.1 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 2.1 APIs"); return true; } - internal static unsafe bool LoadGLcore30(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore30( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core30) { @@ -488,164 +517,167 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBeginConditionalRender = (delegate*)load( + contextPtr->glBeginConditionalRender = LoadGLFunction(load, "glBeginConditionalRender"u8); - contextPtr->glBeginTransformFeedback = (delegate*)load( + contextPtr->glBeginTransformFeedback = LoadGLFunction(load, "glBeginTransformFeedback"u8); - contextPtr->glBindBufferBase = (delegate*)load( + contextPtr->glBindBufferBase = LoadGLFunction(load, "glBindBufferBase"u8); - contextPtr->glBindBufferRange = (delegate*)load( + contextPtr->glBindBufferRange = LoadGLFunction(load, "glBindBufferRange"u8); - contextPtr->glBindFragDataLocation = (delegate*)load( + contextPtr->glBindFragDataLocation = LoadGLFunction(load, "glBindFragDataLocation"u8); - contextPtr->glBindFramebuffer = (delegate*)load( + contextPtr->glBindFramebuffer = LoadGLFunction(load, "glBindFramebuffer"u8); - contextPtr->glBindRenderbuffer = (delegate*)load( + contextPtr->glBindRenderbuffer = LoadGLFunction(load, "glBindRenderbuffer"u8); - contextPtr->glBindVertexArray = (delegate*)load("glBindVertexArray"u8); - contextPtr->glBlitFramebuffer = (delegate*)load( + contextPtr->glBindVertexArray = LoadGLFunction(load, "glBindVertexArray"u8); + contextPtr->glBlitFramebuffer = LoadGLFunction(load, "glBlitFramebuffer"u8); - contextPtr->glCheckFramebufferStatus = (delegate*)load( + contextPtr->glCheckFramebufferStatus = LoadGLFunction(load, "glCheckFramebufferStatus"u8); - contextPtr->glClampColor = (delegate*)load("glClampColor"u8); - contextPtr->glClearBufferfi = (delegate*)load( + contextPtr->glClampColor = LoadGLFunction(load, "glClampColor"u8); + contextPtr->glClearBufferfi = LoadGLFunction(load, "glClearBufferfi"u8); - contextPtr->glClearBufferfv = (delegate*)load( + contextPtr->glClearBufferfv = LoadGLFunction(load, "glClearBufferfv"u8); - contextPtr->glClearBufferiv = (delegate*)load( + contextPtr->glClearBufferiv = LoadGLFunction(load, "glClearBufferiv"u8); - contextPtr->glClearBufferuiv = (delegate*)load( + contextPtr->glClearBufferuiv = LoadGLFunction(load, "glClearBufferuiv"u8); - contextPtr->glColorMaski = (delegate*)load( + contextPtr->glColorMaski = LoadGLFunction(load, "glColorMaski"u8); - contextPtr->glDeleteFramebuffers = (delegate*)load( + contextPtr->glDeleteFramebuffers = LoadGLFunction(load, "glDeleteFramebuffers"u8); - contextPtr->glDeleteRenderbuffers = (delegate*)load( + contextPtr->glDeleteRenderbuffers = LoadGLFunction(load, "glDeleteRenderbuffers"u8); - contextPtr->glDeleteVertexArrays = (delegate*)load( + contextPtr->glDeleteVertexArrays = LoadGLFunction(load, "glDeleteVertexArrays"u8); - contextPtr->glDisablei = (delegate*)load("glDisablei"u8); - contextPtr->glEnablei = (delegate*)load("glEnablei"u8); - contextPtr->glEndConditionalRender = (delegate*)load("glEndConditionalRender"u8); - contextPtr->glEndTransformFeedback = (delegate*)load("glEndTransformFeedback"u8); - contextPtr->glFlushMappedBufferRange = (delegate*)load( + contextPtr->glDisablei = LoadGLFunction(load, "glDisablei"u8); + contextPtr->glEnablei = LoadGLFunction(load, "glEnablei"u8); + contextPtr->glEndConditionalRender = LoadGLFunction(load, "glEndConditionalRender"u8); + contextPtr->glEndTransformFeedback = LoadGLFunction(load, "glEndTransformFeedback"u8); + contextPtr->glFlushMappedBufferRange = LoadGLFunction(load, "glFlushMappedBufferRange"u8); - contextPtr->glFramebufferRenderbuffer = (delegate*)load( + contextPtr->glFramebufferRenderbuffer = LoadGLFunction(load, "glFramebufferRenderbuffer"u8); - contextPtr->glFramebufferTexture1D = (delegate*)load( + contextPtr->glFramebufferTexture1D = LoadGLFunction(load, "glFramebufferTexture1D"u8); - contextPtr->glFramebufferTexture2D = (delegate*)load( + contextPtr->glFramebufferTexture2D = LoadGLFunction(load, "glFramebufferTexture2D"u8); - contextPtr->glFramebufferTexture3D = (delegate*)load( + contextPtr->glFramebufferTexture3D = LoadGLFunction(load, "glFramebufferTexture3D"u8); - contextPtr->glFramebufferTextureLayer = (delegate*)load( + contextPtr->glFramebufferTextureLayer = LoadGLFunction(load, "glFramebufferTextureLayer"u8); - contextPtr->glGenFramebuffers = (delegate*)load( + contextPtr->glGenFramebuffers = LoadGLFunction(load, "glGenFramebuffers"u8); - contextPtr->glGenRenderbuffers = (delegate*)load( + contextPtr->glGenRenderbuffers = LoadGLFunction(load, "glGenRenderbuffers"u8); - contextPtr->glGenVertexArrays = (delegate*)load( + contextPtr->glGenVertexArrays = LoadGLFunction(load, "glGenVertexArrays"u8); - contextPtr->glGenerateMipmap = (delegate*)load("glGenerateMipmap"u8); - contextPtr->glGetBooleani_v = (delegate*)load( + contextPtr->glGenerateMipmap = LoadGLFunction(load, "glGenerateMipmap"u8); + contextPtr->glGetBooleani_v = LoadGLFunction(load, "glGetBooleani_v"u8); - contextPtr->glGetFragDataLocation = (delegate*)load( + contextPtr->glGetFragDataLocation = LoadGLFunction(load, "glGetFragDataLocation"u8); - contextPtr->glGetFramebufferAttachmentParameteriv = (delegate*)load( + contextPtr->glGetFramebufferAttachmentParameteriv = LoadGLFunction(load, "glGetFramebufferAttachmentParameteriv"u8); - contextPtr->glGetIntegeri_v = (delegate*)load( + contextPtr->glGetIntegeri_v = LoadGLFunction(load, "glGetIntegeri_v"u8); - contextPtr->glGetRenderbufferParameteriv = (delegate*)load( + contextPtr->glGetRenderbufferParameteriv = LoadGLFunction(load, "glGetRenderbufferParameteriv"u8); - contextPtr->glGetStringi = (delegate*)load("glGetStringi"u8); - contextPtr->glGetTexParameterIiv = (delegate*)load( + contextPtr->glGetStringi = LoadGLFunction(load, "glGetStringi"u8); + contextPtr->glGetTexParameterIiv = LoadGLFunction(load, "glGetTexParameterIiv"u8); - contextPtr->glGetTexParameterIuiv = (delegate*)load( + contextPtr->glGetTexParameterIuiv = LoadGLFunction(load, "glGetTexParameterIuiv"u8); - contextPtr->glGetTransformFeedbackVarying = (delegate*)load( + contextPtr->glGetTransformFeedbackVarying = LoadGLFunction(load, "glGetTransformFeedbackVarying"u8); - contextPtr->glGetUniformuiv = (delegate*)load( + contextPtr->glGetUniformuiv = LoadGLFunction(load, "glGetUniformuiv"u8); - contextPtr->glGetVertexAttribIiv = (delegate*)load( + contextPtr->glGetVertexAttribIiv = LoadGLFunction(load, "glGetVertexAttribIiv"u8); - contextPtr->glGetVertexAttribIuiv = (delegate*)load( + contextPtr->glGetVertexAttribIuiv = LoadGLFunction(load, "glGetVertexAttribIuiv"u8); - contextPtr->glIsEnabledi = (delegate*)load("glIsEnabledi"u8); - contextPtr->glIsFramebuffer = (delegate*)load("glIsFramebuffer"u8); - contextPtr->glIsRenderbuffer = (delegate*)load("glIsRenderbuffer"u8); - contextPtr->glIsVertexArray = (delegate*)load("glIsVertexArray"u8); - contextPtr->glMapBufferRange = (delegate*)load( + contextPtr->glIsEnabledi = LoadGLFunction(load, "glIsEnabledi"u8); + contextPtr->glIsFramebuffer = LoadGLFunction(load, "glIsFramebuffer"u8); + contextPtr->glIsRenderbuffer = LoadGLFunction(load, "glIsRenderbuffer"u8); + contextPtr->glIsVertexArray = LoadGLFunction(load, "glIsVertexArray"u8); + contextPtr->glMapBufferRange = LoadGLFunction(load, "glMapBufferRange"u8); - contextPtr->glRenderbufferStorage = (delegate*)load( + contextPtr->glRenderbufferStorage = LoadGLFunction(load, "glRenderbufferStorage"u8); - contextPtr->glRenderbufferStorageMultisample = (delegate*)load( + contextPtr->glRenderbufferStorageMultisample = LoadGLFunction(load, "glRenderbufferStorageMultisample"u8); - contextPtr->glTexParameterIiv = (delegate*)load( + contextPtr->glTexParameterIiv = LoadGLFunction(load, "glTexParameterIiv"u8); - contextPtr->glTexParameterIuiv = (delegate*)load( + contextPtr->glTexParameterIuiv = LoadGLFunction(load, "glTexParameterIuiv"u8); - contextPtr->glTransformFeedbackVaryings = (delegate*)load( + contextPtr->glTransformFeedbackVaryings = LoadGLFunction(load, "glTransformFeedbackVaryings"u8); - contextPtr->glUniform1ui = (delegate*)load("glUniform1ui"u8); - contextPtr->glUniform1uiv = (delegate*)load("glUniform1uiv"u8); - contextPtr->glUniform2ui = (delegate*)load("glUniform2ui"u8); - contextPtr->glUniform2uiv = (delegate*)load("glUniform2uiv"u8); - contextPtr->glUniform3ui = (delegate*)load( + contextPtr->glUniform1ui = LoadGLFunction(load, "glUniform1ui"u8); + contextPtr->glUniform1uiv = LoadGLFunction(load, "glUniform1uiv"u8); + contextPtr->glUniform2ui = LoadGLFunction(load, "glUniform2ui"u8); + contextPtr->glUniform2uiv = LoadGLFunction(load, "glUniform2uiv"u8); + contextPtr->glUniform3ui = LoadGLFunction(load, "glUniform3ui"u8); - contextPtr->glUniform3uiv = (delegate*)load("glUniform3uiv"u8); - contextPtr->glUniform4ui = (delegate*)load( + contextPtr->glUniform3uiv = LoadGLFunction(load, "glUniform3uiv"u8); + contextPtr->glUniform4ui = LoadGLFunction(load, "glUniform4ui"u8); - contextPtr->glUniform4uiv = (delegate*)load("glUniform4uiv"u8); - contextPtr->glVertexAttribI1i = (delegate*)load( + contextPtr->glUniform4uiv = LoadGLFunction(load, "glUniform4uiv"u8); + contextPtr->glVertexAttribI1i = LoadGLFunction(load, "glVertexAttribI1i"u8); - contextPtr->glVertexAttribI1iv = (delegate*)load( + contextPtr->glVertexAttribI1iv = LoadGLFunction(load, "glVertexAttribI1iv"u8); - contextPtr->glVertexAttribI1ui = (delegate*)load( + contextPtr->glVertexAttribI1ui = LoadGLFunction(load, "glVertexAttribI1ui"u8); - contextPtr->glVertexAttribI1uiv = (delegate*)load( + contextPtr->glVertexAttribI1uiv = LoadGLFunction(load, "glVertexAttribI1uiv"u8); - contextPtr->glVertexAttribI2i = (delegate*)load( + contextPtr->glVertexAttribI2i = LoadGLFunction(load, "glVertexAttribI2i"u8); - contextPtr->glVertexAttribI2iv = (delegate*)load( + contextPtr->glVertexAttribI2iv = LoadGLFunction(load, "glVertexAttribI2iv"u8); - contextPtr->glVertexAttribI2ui = (delegate*)load( + contextPtr->glVertexAttribI2ui = LoadGLFunction(load, "glVertexAttribI2ui"u8); - contextPtr->glVertexAttribI2uiv = (delegate*)load( + contextPtr->glVertexAttribI2uiv = LoadGLFunction(load, "glVertexAttribI2uiv"u8); - contextPtr->glVertexAttribI3i = (delegate*)load( + contextPtr->glVertexAttribI3i = LoadGLFunction(load, "glVertexAttribI3i"u8); - contextPtr->glVertexAttribI3iv = (delegate*)load( + contextPtr->glVertexAttribI3iv = LoadGLFunction(load, "glVertexAttribI3iv"u8); - contextPtr->glVertexAttribI3ui = (delegate*)load( + contextPtr->glVertexAttribI3ui = LoadGLFunction(load, "glVertexAttribI3ui"u8); - contextPtr->glVertexAttribI3uiv = (delegate*)load( + contextPtr->glVertexAttribI3uiv = LoadGLFunction(load, "glVertexAttribI3uiv"u8); - contextPtr->glVertexAttribI4bv = (delegate*)load( + contextPtr->glVertexAttribI4bv = LoadGLFunction(load, "glVertexAttribI4bv"u8); - contextPtr->glVertexAttribI4i = (delegate*)load( + contextPtr->glVertexAttribI4i = LoadGLFunction(load, "glVertexAttribI4i"u8); - contextPtr->glVertexAttribI4iv = (delegate*)load( + contextPtr->glVertexAttribI4iv = LoadGLFunction(load, "glVertexAttribI4iv"u8); - contextPtr->glVertexAttribI4sv = (delegate*)load( + contextPtr->glVertexAttribI4sv = LoadGLFunction(load, "glVertexAttribI4sv"u8); - contextPtr->glVertexAttribI4ubv = (delegate*)load( + contextPtr->glVertexAttribI4ubv = LoadGLFunction(load, "glVertexAttribI4ubv"u8); - contextPtr->glVertexAttribI4ui = (delegate*)load( + contextPtr->glVertexAttribI4ui = LoadGLFunction(load, "glVertexAttribI4ui"u8); - contextPtr->glVertexAttribI4uiv = (delegate*)load( + contextPtr->glVertexAttribI4uiv = LoadGLFunction(load, "glVertexAttribI4uiv"u8); - contextPtr->glVertexAttribI4usv = (delegate*)load( + contextPtr->glVertexAttribI4usv = LoadGLFunction(load, "glVertexAttribI4usv"u8); - contextPtr->glVertexAttribIPointer = (delegate*)load( + contextPtr->glVertexAttribIPointer = LoadGLFunction(load, "glVertexAttribIPointer"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 3.0 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 3.0 APIs"); return true; } - internal static unsafe bool LoadGLcore31(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore31( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core31) { @@ -655,43 +687,46 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindBufferBase = (delegate*)load( + contextPtr->glBindBufferBase = LoadGLFunction(load, "glBindBufferBase"u8); - contextPtr->glBindBufferRange = (delegate*)load( + contextPtr->glBindBufferRange = LoadGLFunction(load, "glBindBufferRange"u8); - contextPtr->glCopyBufferSubData = (delegate*)load( + contextPtr->glCopyBufferSubData = LoadGLFunction(load, "glCopyBufferSubData"u8); - contextPtr->glDrawArraysInstanced = (delegate*)load( + contextPtr->glDrawArraysInstanced = LoadGLFunction(load, "glDrawArraysInstanced"u8); - contextPtr->glDrawElementsInstanced = (delegate*)load( + contextPtr->glDrawElementsInstanced = LoadGLFunction(load, "glDrawElementsInstanced"u8); - contextPtr->glGetActiveUniformBlockName = (delegate*)load( + contextPtr->glGetActiveUniformBlockName = LoadGLFunction(load, "glGetActiveUniformBlockName"u8); - contextPtr->glGetActiveUniformBlockiv = (delegate*)load( + contextPtr->glGetActiveUniformBlockiv = LoadGLFunction(load, "glGetActiveUniformBlockiv"u8); - contextPtr->glGetActiveUniformName = (delegate*)load( + contextPtr->glGetActiveUniformName = LoadGLFunction(load, "glGetActiveUniformName"u8); - contextPtr->glGetActiveUniformsiv = (delegate*)load( + contextPtr->glGetActiveUniformsiv = LoadGLFunction(load, "glGetActiveUniformsiv"u8); - contextPtr->glGetIntegeri_v = (delegate*)load( + contextPtr->glGetIntegeri_v = LoadGLFunction(load, "glGetIntegeri_v"u8); - contextPtr->glGetUniformBlockIndex = (delegate*)load( + contextPtr->glGetUniformBlockIndex = LoadGLFunction(load, "glGetUniformBlockIndex"u8); - contextPtr->glGetUniformIndices = (delegate*)load( + contextPtr->glGetUniformIndices = LoadGLFunction(load, "glGetUniformIndices"u8); - contextPtr->glPrimitiveRestartIndex = (delegate*)load( + contextPtr->glPrimitiveRestartIndex = LoadGLFunction(load, "glPrimitiveRestartIndex"u8); - contextPtr->glTexBuffer = (delegate*)load("glTexBuffer"u8); - contextPtr->glUniformBlockBinding = (delegate*)load( + contextPtr->glTexBuffer = LoadGLFunction(load, "glTexBuffer"u8); + contextPtr->glUniformBlockBinding = LoadGLFunction(load, "glUniformBlockBinding"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 3.1 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 3.1 APIs"); return true; } - internal static unsafe bool LoadGLcore32(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore32( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core32) { @@ -701,45 +736,48 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glClientWaitSync = (delegate*)load( + contextPtr->glClientWaitSync = LoadGLFunction(load, "glClientWaitSync"u8); - contextPtr->glDeleteSync = (delegate*)load("glDeleteSync"u8); - contextPtr->glDrawElementsBaseVertex = (delegate*)load( + contextPtr->glDeleteSync = LoadGLFunction(load, "glDeleteSync"u8); + contextPtr->glDrawElementsBaseVertex = LoadGLFunction(load, "glDrawElementsBaseVertex"u8); - contextPtr->glDrawElementsInstancedBaseVertex = (delegate*)load( + contextPtr->glDrawElementsInstancedBaseVertex = LoadGLFunction(load, "glDrawElementsInstancedBaseVertex"u8); - contextPtr->glDrawRangeElementsBaseVertex = (delegate*)load( + contextPtr->glDrawRangeElementsBaseVertex = LoadGLFunction(load, "glDrawRangeElementsBaseVertex"u8); - contextPtr->glFenceSync = (delegate*)load("glFenceSync"u8); - contextPtr->glFramebufferTexture = (delegate*)load( + contextPtr->glFenceSync = LoadGLFunction(load, "glFenceSync"u8); + contextPtr->glFramebufferTexture = LoadGLFunction(load, "glFramebufferTexture"u8); - contextPtr->glGetBufferParameteri64v = (delegate*)load( + contextPtr->glGetBufferParameteri64v = LoadGLFunction(load, "glGetBufferParameteri64v"u8); - contextPtr->glGetInteger64i_v = (delegate*)load( + contextPtr->glGetInteger64i_v = LoadGLFunction(load, "glGetInteger64i_v"u8); - contextPtr->glGetInteger64v = (delegate*)load("glGetInteger64v"u8); - contextPtr->glGetMultisamplefv = (delegate*)load( + contextPtr->glGetInteger64v = LoadGLFunction(load, "glGetInteger64v"u8); + contextPtr->glGetMultisamplefv = LoadGLFunction(load, "glGetMultisamplefv"u8); - contextPtr->glGetSynciv = (delegate*)load( + contextPtr->glGetSynciv = LoadGLFunction(load, "glGetSynciv"u8); - contextPtr->glIsSync = (delegate*)load("glIsSync"u8); - contextPtr->glMultiDrawElementsBaseVertex = (delegate*)load( + contextPtr->glIsSync = LoadGLFunction(load, "glIsSync"u8); + contextPtr->glMultiDrawElementsBaseVertex = LoadGLFunction(load, "glMultiDrawElementsBaseVertex"u8); - contextPtr->glProvokingVertex = (delegate*)load("glProvokingVertex"u8); - contextPtr->glSampleMaski = (delegate*)load("glSampleMaski"u8); - contextPtr->glTexImage2DMultisample = (delegate*)load( + contextPtr->glProvokingVertex = LoadGLFunction(load, "glProvokingVertex"u8); + contextPtr->glSampleMaski = LoadGLFunction(load, "glSampleMaski"u8); + contextPtr->glTexImage2DMultisample = LoadGLFunction(load, "glTexImage2DMultisample"u8); - contextPtr->glTexImage3DMultisample = (delegate*)load( + contextPtr->glTexImage3DMultisample = LoadGLFunction(load, "glTexImage3DMultisample"u8); - contextPtr->glWaitSync = (delegate*)load("glWaitSync"u8); + contextPtr->glWaitSync = LoadGLFunction(load, "glWaitSync"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 3.2 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 3.2 APIs"); return true; } - internal static unsafe bool LoadGLcore33(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore33( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core33) { @@ -749,66 +787,69 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindFragDataLocationIndexed = (delegate*)load( + contextPtr->glBindFragDataLocationIndexed = LoadGLFunction(load, "glBindFragDataLocationIndexed"u8); - contextPtr->glBindSampler = (delegate*)load("glBindSampler"u8); - contextPtr->glDeleteSamplers = (delegate*)load( + contextPtr->glBindSampler = LoadGLFunction(load, "glBindSampler"u8); + contextPtr->glDeleteSamplers = LoadGLFunction(load, "glDeleteSamplers"u8); - contextPtr->glGenSamplers = (delegate*)load("glGenSamplers"u8); - contextPtr->glGetFragDataIndex = (delegate*)load( + contextPtr->glGenSamplers = LoadGLFunction(load, "glGenSamplers"u8); + contextPtr->glGetFragDataIndex = LoadGLFunction(load, "glGetFragDataIndex"u8); - contextPtr->glGetQueryObjecti64v = (delegate*)load( + contextPtr->glGetQueryObjecti64v = LoadGLFunction(load, "glGetQueryObjecti64v"u8); - contextPtr->glGetQueryObjectui64v = (delegate*)load( + contextPtr->glGetQueryObjectui64v = LoadGLFunction(load, "glGetQueryObjectui64v"u8); - contextPtr->glGetSamplerParameterIiv = (delegate*)load( + contextPtr->glGetSamplerParameterIiv = LoadGLFunction(load, "glGetSamplerParameterIiv"u8); - contextPtr->glGetSamplerParameterIuiv = (delegate*)load( + contextPtr->glGetSamplerParameterIuiv = LoadGLFunction(load, "glGetSamplerParameterIuiv"u8); - contextPtr->glGetSamplerParameterfv = (delegate*)load( + contextPtr->glGetSamplerParameterfv = LoadGLFunction(load, "glGetSamplerParameterfv"u8); - contextPtr->glGetSamplerParameteriv = (delegate*)load( + contextPtr->glGetSamplerParameteriv = LoadGLFunction(load, "glGetSamplerParameteriv"u8); - contextPtr->glIsSampler = (delegate*)load("glIsSampler"u8); - contextPtr->glQueryCounter = (delegate*)load("glQueryCounter"u8); - contextPtr->glSamplerParameterIiv = (delegate*)load( + contextPtr->glIsSampler = LoadGLFunction(load, "glIsSampler"u8); + contextPtr->glQueryCounter = LoadGLFunction(load, "glQueryCounter"u8); + contextPtr->glSamplerParameterIiv = LoadGLFunction(load, "glSamplerParameterIiv"u8); - contextPtr->glSamplerParameterIuiv = (delegate*)load( + contextPtr->glSamplerParameterIuiv = LoadGLFunction(load, "glSamplerParameterIuiv"u8); - contextPtr->glSamplerParameterf = (delegate*)load( + contextPtr->glSamplerParameterf = LoadGLFunction(load, "glSamplerParameterf"u8); - contextPtr->glSamplerParameterfv = (delegate*)load( + contextPtr->glSamplerParameterfv = LoadGLFunction(load, "glSamplerParameterfv"u8); - contextPtr->glSamplerParameteri = (delegate*)load( + contextPtr->glSamplerParameteri = LoadGLFunction(load, "glSamplerParameteri"u8); - contextPtr->glSamplerParameteriv = (delegate*)load( + contextPtr->glSamplerParameteriv = LoadGLFunction(load, "glSamplerParameteriv"u8); - contextPtr->glVertexAttribDivisor = (delegate*)load( + contextPtr->glVertexAttribDivisor = LoadGLFunction(load, "glVertexAttribDivisor"u8); - contextPtr->glVertexAttribP1ui = (delegate*)load( + contextPtr->glVertexAttribP1ui = LoadGLFunction(load, "glVertexAttribP1ui"u8); - contextPtr->glVertexAttribP1uiv = (delegate*)load( + contextPtr->glVertexAttribP1uiv = LoadGLFunction(load, "glVertexAttribP1uiv"u8); - contextPtr->glVertexAttribP2ui = (delegate*)load( + contextPtr->glVertexAttribP2ui = LoadGLFunction(load, "glVertexAttribP2ui"u8); - contextPtr->glVertexAttribP2uiv = (delegate*)load( + contextPtr->glVertexAttribP2uiv = LoadGLFunction(load, "glVertexAttribP2uiv"u8); - contextPtr->glVertexAttribP3ui = (delegate*)load( + contextPtr->glVertexAttribP3ui = LoadGLFunction(load, "glVertexAttribP3ui"u8); - contextPtr->glVertexAttribP3uiv = (delegate*)load( + contextPtr->glVertexAttribP3uiv = LoadGLFunction(load, "glVertexAttribP3uiv"u8); - contextPtr->glVertexAttribP4ui = (delegate*)load( + contextPtr->glVertexAttribP4ui = LoadGLFunction(load, "glVertexAttribP4ui"u8); - contextPtr->glVertexAttribP4uiv = (delegate*)load( + contextPtr->glVertexAttribP4uiv = LoadGLFunction(load, "glVertexAttribP4uiv"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 3.3 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 3.3 APIs"); return true; } - internal static unsafe bool LoadGLcore40(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore40( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core40) { @@ -818,97 +859,100 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBeginQueryIndexed = (delegate*)load( + contextPtr->glBeginQueryIndexed = LoadGLFunction(load, "glBeginQueryIndexed"u8); - contextPtr->glBindTransformFeedback = (delegate*)load( + contextPtr->glBindTransformFeedback = LoadGLFunction(load, "glBindTransformFeedback"u8); - contextPtr->glBlendEquationSeparatei = (delegate*)load( + contextPtr->glBlendEquationSeparatei = LoadGLFunction(load, "glBlendEquationSeparatei"u8); - contextPtr->glBlendEquationi = (delegate*)load("glBlendEquationi"u8); - contextPtr->glBlendFuncSeparatei = (delegate*)load( + contextPtr->glBlendEquationi = LoadGLFunction(load, "glBlendEquationi"u8); + contextPtr->glBlendFuncSeparatei = LoadGLFunction(load, "glBlendFuncSeparatei"u8); - contextPtr->glBlendFunci = (delegate*)load("glBlendFunci"u8); - contextPtr->glDeleteTransformFeedbacks = (delegate*)load( + contextPtr->glBlendFunci = LoadGLFunction(load, "glBlendFunci"u8); + contextPtr->glDeleteTransformFeedbacks = LoadGLFunction(load, "glDeleteTransformFeedbacks"u8); - contextPtr->glDrawArraysIndirect = (delegate*)load( + contextPtr->glDrawArraysIndirect = LoadGLFunction(load, "glDrawArraysIndirect"u8); - contextPtr->glDrawElementsIndirect = (delegate*)load( + contextPtr->glDrawElementsIndirect = LoadGLFunction(load, "glDrawElementsIndirect"u8); - contextPtr->glDrawTransformFeedback = (delegate*)load( + contextPtr->glDrawTransformFeedback = LoadGLFunction(load, "glDrawTransformFeedback"u8); - contextPtr->glDrawTransformFeedbackStream = (delegate*)load( + contextPtr->glDrawTransformFeedbackStream = LoadGLFunction(load, "glDrawTransformFeedbackStream"u8); - contextPtr->glEndQueryIndexed = (delegate*)load( + contextPtr->glEndQueryIndexed = LoadGLFunction(load, "glEndQueryIndexed"u8); - contextPtr->glGenTransformFeedbacks = (delegate*)load( + contextPtr->glGenTransformFeedbacks = LoadGLFunction(load, "glGenTransformFeedbacks"u8); - contextPtr->glGetActiveSubroutineName = (delegate*)load( + contextPtr->glGetActiveSubroutineName = LoadGLFunction(load, "glGetActiveSubroutineName"u8); - contextPtr->glGetActiveSubroutineUniformName = (delegate*)load( + contextPtr->glGetActiveSubroutineUniformName = LoadGLFunction(load, "glGetActiveSubroutineUniformName"u8); - contextPtr->glGetActiveSubroutineUniformiv = (delegate*)load( + contextPtr->glGetActiveSubroutineUniformiv = LoadGLFunction(load, "glGetActiveSubroutineUniformiv"u8); - contextPtr->glGetProgramStageiv = (delegate*)load( + contextPtr->glGetProgramStageiv = LoadGLFunction(load, "glGetProgramStageiv"u8); - contextPtr->glGetQueryIndexediv = (delegate*)load( + contextPtr->glGetQueryIndexediv = LoadGLFunction(load, "glGetQueryIndexediv"u8); - contextPtr->glGetSubroutineIndex = (delegate*)load( + contextPtr->glGetSubroutineIndex = LoadGLFunction(load, "glGetSubroutineIndex"u8); - contextPtr->glGetSubroutineUniformLocation = (delegate*)load( + contextPtr->glGetSubroutineUniformLocation = LoadGLFunction(load, "glGetSubroutineUniformLocation"u8); - contextPtr->glGetUniformSubroutineuiv = (delegate*)load( + contextPtr->glGetUniformSubroutineuiv = LoadGLFunction(load, "glGetUniformSubroutineuiv"u8); - contextPtr->glGetUniformdv = (delegate*)load( + contextPtr->glGetUniformdv = LoadGLFunction(load, "glGetUniformdv"u8); - contextPtr->glIsTransformFeedback = (delegate*)load( + contextPtr->glIsTransformFeedback = LoadGLFunction(load, "glIsTransformFeedback"u8); - contextPtr->glMinSampleShading = (delegate*)load("glMinSampleShading"u8); - contextPtr->glPatchParameterfv = (delegate*)load( + contextPtr->glMinSampleShading = LoadGLFunction(load, "glMinSampleShading"u8); + contextPtr->glPatchParameterfv = LoadGLFunction(load, "glPatchParameterfv"u8); - contextPtr->glPatchParameteri = (delegate*)load( + contextPtr->glPatchParameteri = LoadGLFunction(load, "glPatchParameteri"u8); - contextPtr->glPauseTransformFeedback = (delegate*)load( + contextPtr->glPauseTransformFeedback = LoadGLFunction(load, "glPauseTransformFeedback"u8); - contextPtr->glResumeTransformFeedback = (delegate*)load( + contextPtr->glResumeTransformFeedback = LoadGLFunction(load, "glResumeTransformFeedback"u8); - contextPtr->glUniform1d = (delegate*)load("glUniform1d"u8); - contextPtr->glUniform1dv = (delegate*)load("glUniform1dv"u8); - contextPtr->glUniform2d = (delegate*)load("glUniform2d"u8); - contextPtr->glUniform2dv = (delegate*)load("glUniform2dv"u8); - contextPtr->glUniform3d = (delegate*)load( + contextPtr->glUniform1d = LoadGLFunction(load, "glUniform1d"u8); + contextPtr->glUniform1dv = LoadGLFunction(load, "glUniform1dv"u8); + contextPtr->glUniform2d = LoadGLFunction(load, "glUniform2d"u8); + contextPtr->glUniform2dv = LoadGLFunction(load, "glUniform2dv"u8); + contextPtr->glUniform3d = LoadGLFunction(load, "glUniform3d"u8); - contextPtr->glUniform3dv = (delegate*)load("glUniform3dv"u8); - contextPtr->glUniform4d = (delegate*)load( + contextPtr->glUniform3dv = LoadGLFunction(load, "glUniform3dv"u8); + contextPtr->glUniform4d = LoadGLFunction(load, "glUniform4d"u8); - contextPtr->glUniform4dv = (delegate*)load("glUniform4dv"u8); - contextPtr->glUniformMatrix2dv = (delegate*)load( + contextPtr->glUniform4dv = LoadGLFunction(load, "glUniform4dv"u8); + contextPtr->glUniformMatrix2dv = LoadGLFunction(load, "glUniformMatrix2dv"u8); - contextPtr->glUniformMatrix2x3dv = (delegate*)load( + contextPtr->glUniformMatrix2x3dv = LoadGLFunction(load, "glUniformMatrix2x3dv"u8); - contextPtr->glUniformMatrix2x4dv = (delegate*)load( + contextPtr->glUniformMatrix2x4dv = LoadGLFunction(load, "glUniformMatrix2x4dv"u8); - contextPtr->glUniformMatrix3dv = (delegate*)load( + contextPtr->glUniformMatrix3dv = LoadGLFunction(load, "glUniformMatrix3dv"u8); - contextPtr->glUniformMatrix3x2dv = (delegate*)load( + contextPtr->glUniformMatrix3x2dv = LoadGLFunction(load, "glUniformMatrix3x2dv"u8); - contextPtr->glUniformMatrix3x4dv = (delegate*)load( + contextPtr->glUniformMatrix3x4dv = LoadGLFunction(load, "glUniformMatrix3x4dv"u8); - contextPtr->glUniformMatrix4dv = (delegate*)load( + contextPtr->glUniformMatrix4dv = LoadGLFunction(load, "glUniformMatrix4dv"u8); - contextPtr->glUniformMatrix4x2dv = (delegate*)load( + contextPtr->glUniformMatrix4x2dv = LoadGLFunction(load, "glUniformMatrix4x2dv"u8); - contextPtr->glUniformMatrix4x3dv = (delegate*)load( + contextPtr->glUniformMatrix4x3dv = LoadGLFunction(load, "glUniformMatrix4x3dv"u8); - contextPtr->glUniformSubroutinesuiv = (delegate*)load( + contextPtr->glUniformSubroutinesuiv = LoadGLFunction(load, "glUniformSubroutinesuiv"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.0 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.0 APIs"); return true; } - internal static unsafe bool LoadGLcore41(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore41( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core41) { @@ -918,187 +962,190 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glActiveShaderProgram = (delegate*)load( + contextPtr->glActiveShaderProgram = LoadGLFunction(load, "glActiveShaderProgram"u8); - contextPtr->glBindProgramPipeline = (delegate*)load( + contextPtr->glBindProgramPipeline = LoadGLFunction(load, "glBindProgramPipeline"u8); - contextPtr->glClearDepthf = (delegate*)load("glClearDepthf"u8); - contextPtr->glCreateShaderProgramv = (delegate*)load( + contextPtr->glClearDepthf = LoadGLFunction(load, "glClearDepthf"u8); + contextPtr->glCreateShaderProgramv = LoadGLFunction(load, "glCreateShaderProgramv"u8); - contextPtr->glDeleteProgramPipelines = (delegate*)load( + contextPtr->glDeleteProgramPipelines = LoadGLFunction(load, "glDeleteProgramPipelines"u8); - contextPtr->glDepthRangeArrayv = (delegate*)load( + contextPtr->glDepthRangeArrayv = LoadGLFunction(load, "glDepthRangeArrayv"u8); - contextPtr->glDepthRangeIndexed = (delegate*)load( + contextPtr->glDepthRangeIndexed = LoadGLFunction(load, "glDepthRangeIndexed"u8); - contextPtr->glDepthRangef = (delegate*)load("glDepthRangef"u8); - contextPtr->glGenProgramPipelines = (delegate*)load( + contextPtr->glDepthRangef = LoadGLFunction(load, "glDepthRangef"u8); + contextPtr->glGenProgramPipelines = LoadGLFunction(load, "glGenProgramPipelines"u8); - contextPtr->glGetDoublei_v = (delegate*)load( + contextPtr->glGetDoublei_v = LoadGLFunction(load, "glGetDoublei_v"u8); - contextPtr->glGetFloati_v = (delegate*)load( + contextPtr->glGetFloati_v = LoadGLFunction(load, "glGetFloati_v"u8); - contextPtr->glGetProgramBinary = (delegate*)load( + contextPtr->glGetProgramBinary = LoadGLFunction(load, "glGetProgramBinary"u8); - contextPtr->glGetProgramPipelineInfoLog = (delegate*)load( + contextPtr->glGetProgramPipelineInfoLog = LoadGLFunction(load, "glGetProgramPipelineInfoLog"u8); - contextPtr->glGetProgramPipelineiv = (delegate*)load( + contextPtr->glGetProgramPipelineiv = LoadGLFunction(load, "glGetProgramPipelineiv"u8); - contextPtr->glGetShaderPrecisionFormat = (delegate*)load( + contextPtr->glGetShaderPrecisionFormat = LoadGLFunction(load, "glGetShaderPrecisionFormat"u8); - contextPtr->glGetVertexAttribLdv = (delegate*)load( + contextPtr->glGetVertexAttribLdv = LoadGLFunction(load, "glGetVertexAttribLdv"u8); - contextPtr->glIsProgramPipeline = (delegate*)load("glIsProgramPipeline"u8); - contextPtr->glProgramBinary = (delegate*)load( + contextPtr->glIsProgramPipeline = LoadGLFunction(load, "glIsProgramPipeline"u8); + contextPtr->glProgramBinary = LoadGLFunction(load, "glProgramBinary"u8); - contextPtr->glProgramParameteri = (delegate*)load( + contextPtr->glProgramParameteri = LoadGLFunction(load, "glProgramParameteri"u8); - contextPtr->glProgramUniform1d = (delegate*)load( + contextPtr->glProgramUniform1d = LoadGLFunction(load, "glProgramUniform1d"u8); - contextPtr->glProgramUniform1dv = (delegate*)load( + contextPtr->glProgramUniform1dv = LoadGLFunction(load, "glProgramUniform1dv"u8); - contextPtr->glProgramUniform1f = (delegate*)load( + contextPtr->glProgramUniform1f = LoadGLFunction(load, "glProgramUniform1f"u8); - contextPtr->glProgramUniform1fv = (delegate*)load( + contextPtr->glProgramUniform1fv = LoadGLFunction(load, "glProgramUniform1fv"u8); - contextPtr->glProgramUniform1i = (delegate*)load( + contextPtr->glProgramUniform1i = LoadGLFunction(load, "glProgramUniform1i"u8); - contextPtr->glProgramUniform1iv = (delegate*)load( + contextPtr->glProgramUniform1iv = LoadGLFunction(load, "glProgramUniform1iv"u8); - contextPtr->glProgramUniform1ui = (delegate*)load( + contextPtr->glProgramUniform1ui = LoadGLFunction(load, "glProgramUniform1ui"u8); - contextPtr->glProgramUniform1uiv = (delegate*)load( + contextPtr->glProgramUniform1uiv = LoadGLFunction(load, "glProgramUniform1uiv"u8); - contextPtr->glProgramUniform2d = (delegate*)load( + contextPtr->glProgramUniform2d = LoadGLFunction(load, "glProgramUniform2d"u8); - contextPtr->glProgramUniform2dv = (delegate*)load( + contextPtr->glProgramUniform2dv = LoadGLFunction(load, "glProgramUniform2dv"u8); - contextPtr->glProgramUniform2f = (delegate*)load( + contextPtr->glProgramUniform2f = LoadGLFunction(load, "glProgramUniform2f"u8); - contextPtr->glProgramUniform2fv = (delegate*)load( + contextPtr->glProgramUniform2fv = LoadGLFunction(load, "glProgramUniform2fv"u8); - contextPtr->glProgramUniform2i = (delegate*)load( + contextPtr->glProgramUniform2i = LoadGLFunction(load, "glProgramUniform2i"u8); - contextPtr->glProgramUniform2iv = (delegate*)load( + contextPtr->glProgramUniform2iv = LoadGLFunction(load, "glProgramUniform2iv"u8); - contextPtr->glProgramUniform2ui = (delegate*)load( + contextPtr->glProgramUniform2ui = LoadGLFunction(load, "glProgramUniform2ui"u8); - contextPtr->glProgramUniform2uiv = (delegate*)load( + contextPtr->glProgramUniform2uiv = LoadGLFunction(load, "glProgramUniform2uiv"u8); - contextPtr->glProgramUniform3d = (delegate*)load( + contextPtr->glProgramUniform3d = LoadGLFunction(load, "glProgramUniform3d"u8); - contextPtr->glProgramUniform3dv = (delegate*)load( + contextPtr->glProgramUniform3dv = LoadGLFunction(load, "glProgramUniform3dv"u8); - contextPtr->glProgramUniform3f = (delegate*)load( + contextPtr->glProgramUniform3f = LoadGLFunction(load, "glProgramUniform3f"u8); - contextPtr->glProgramUniform3fv = (delegate*)load( + contextPtr->glProgramUniform3fv = LoadGLFunction(load, "glProgramUniform3fv"u8); - contextPtr->glProgramUniform3i = (delegate*)load( + contextPtr->glProgramUniform3i = LoadGLFunction(load, "glProgramUniform3i"u8); - contextPtr->glProgramUniform3iv = (delegate*)load( + contextPtr->glProgramUniform3iv = LoadGLFunction(load, "glProgramUniform3iv"u8); - contextPtr->glProgramUniform3ui = (delegate*)load( + contextPtr->glProgramUniform3ui = LoadGLFunction(load, "glProgramUniform3ui"u8); - contextPtr->glProgramUniform3uiv = (delegate*)load( + contextPtr->glProgramUniform3uiv = LoadGLFunction(load, "glProgramUniform3uiv"u8); - contextPtr->glProgramUniform4d = (delegate*)load( + contextPtr->glProgramUniform4d = LoadGLFunction(load, "glProgramUniform4d"u8); - contextPtr->glProgramUniform4dv = (delegate*)load( + contextPtr->glProgramUniform4dv = LoadGLFunction(load, "glProgramUniform4dv"u8); - contextPtr->glProgramUniform4f = (delegate*)load( + contextPtr->glProgramUniform4f = LoadGLFunction(load, "glProgramUniform4f"u8); - contextPtr->glProgramUniform4fv = (delegate*)load( + contextPtr->glProgramUniform4fv = LoadGLFunction(load, "glProgramUniform4fv"u8); - contextPtr->glProgramUniform4i = (delegate*)load( + contextPtr->glProgramUniform4i = LoadGLFunction(load, "glProgramUniform4i"u8); - contextPtr->glProgramUniform4iv = (delegate*)load( + contextPtr->glProgramUniform4iv = LoadGLFunction(load, "glProgramUniform4iv"u8); - contextPtr->glProgramUniform4ui = (delegate*)load( + contextPtr->glProgramUniform4ui = LoadGLFunction(load, "glProgramUniform4ui"u8); - contextPtr->glProgramUniform4uiv = (delegate*)load( + contextPtr->glProgramUniform4uiv = LoadGLFunction(load, "glProgramUniform4uiv"u8); - contextPtr->glProgramUniformMatrix2dv = (delegate*)load( + contextPtr->glProgramUniformMatrix2dv = LoadGLFunction(load, "glProgramUniformMatrix2dv"u8); - contextPtr->glProgramUniformMatrix2fv = (delegate*)load( + contextPtr->glProgramUniformMatrix2fv = LoadGLFunction(load, "glProgramUniformMatrix2fv"u8); - contextPtr->glProgramUniformMatrix2x3dv = (delegate*)load( + contextPtr->glProgramUniformMatrix2x3dv = LoadGLFunction(load, "glProgramUniformMatrix2x3dv"u8); - contextPtr->glProgramUniformMatrix2x3fv = (delegate*)load( + contextPtr->glProgramUniformMatrix2x3fv = LoadGLFunction(load, "glProgramUniformMatrix2x3fv"u8); - contextPtr->glProgramUniformMatrix2x4dv = (delegate*)load( + contextPtr->glProgramUniformMatrix2x4dv = LoadGLFunction(load, "glProgramUniformMatrix2x4dv"u8); - contextPtr->glProgramUniformMatrix2x4fv = (delegate*)load( + contextPtr->glProgramUniformMatrix2x4fv = LoadGLFunction(load, "glProgramUniformMatrix2x4fv"u8); - contextPtr->glProgramUniformMatrix3dv = (delegate*)load( + contextPtr->glProgramUniformMatrix3dv = LoadGLFunction(load, "glProgramUniformMatrix3dv"u8); - contextPtr->glProgramUniformMatrix3fv = (delegate*)load( + contextPtr->glProgramUniformMatrix3fv = LoadGLFunction(load, "glProgramUniformMatrix3fv"u8); - contextPtr->glProgramUniformMatrix3x2dv = (delegate*)load( + contextPtr->glProgramUniformMatrix3x2dv = LoadGLFunction(load, "glProgramUniformMatrix3x2dv"u8); - contextPtr->glProgramUniformMatrix3x2fv = (delegate*)load( + contextPtr->glProgramUniformMatrix3x2fv = LoadGLFunction(load, "glProgramUniformMatrix3x2fv"u8); - contextPtr->glProgramUniformMatrix3x4dv = (delegate*)load( + contextPtr->glProgramUniformMatrix3x4dv = LoadGLFunction(load, "glProgramUniformMatrix3x4dv"u8); - contextPtr->glProgramUniformMatrix3x4fv = (delegate*)load( + contextPtr->glProgramUniformMatrix3x4fv = LoadGLFunction(load, "glProgramUniformMatrix3x4fv"u8); - contextPtr->glProgramUniformMatrix4dv = (delegate*)load( + contextPtr->glProgramUniformMatrix4dv = LoadGLFunction(load, "glProgramUniformMatrix4dv"u8); - contextPtr->glProgramUniformMatrix4fv = (delegate*)load( + contextPtr->glProgramUniformMatrix4fv = LoadGLFunction(load, "glProgramUniformMatrix4fv"u8); - contextPtr->glProgramUniformMatrix4x2dv = (delegate*)load( + contextPtr->glProgramUniformMatrix4x2dv = LoadGLFunction(load, "glProgramUniformMatrix4x2dv"u8); - contextPtr->glProgramUniformMatrix4x2fv = (delegate*)load( + contextPtr->glProgramUniformMatrix4x2fv = LoadGLFunction(load, "glProgramUniformMatrix4x2fv"u8); - contextPtr->glProgramUniformMatrix4x3dv = (delegate*)load( + contextPtr->glProgramUniformMatrix4x3dv = LoadGLFunction(load, "glProgramUniformMatrix4x3dv"u8); - contextPtr->glProgramUniformMatrix4x3fv = (delegate*)load( + contextPtr->glProgramUniformMatrix4x3fv = LoadGLFunction(load, "glProgramUniformMatrix4x3fv"u8); - contextPtr->glReleaseShaderCompiler = (delegate*)load( + contextPtr->glReleaseShaderCompiler = LoadGLFunction(load, "glReleaseShaderCompiler"u8); - contextPtr->glScissorArrayv = (delegate*)load( + contextPtr->glScissorArrayv = LoadGLFunction(load, "glScissorArrayv"u8); - contextPtr->glScissorIndexed = (delegate*)load( + contextPtr->glScissorIndexed = LoadGLFunction(load, "glScissorIndexed"u8); - contextPtr->glScissorIndexedv = (delegate*)load( + contextPtr->glScissorIndexedv = LoadGLFunction(load, "glScissorIndexedv"u8); - contextPtr->glShaderBinary = (delegate*)load( + contextPtr->glShaderBinary = LoadGLFunction(load, "glShaderBinary"u8); - contextPtr->glUseProgramStages = (delegate*)load( + contextPtr->glUseProgramStages = LoadGLFunction(load, "glUseProgramStages"u8); - contextPtr->glValidateProgramPipeline = (delegate*)load( + contextPtr->glValidateProgramPipeline = LoadGLFunction(load, "glValidateProgramPipeline"u8); - contextPtr->glVertexAttribL1d = (delegate*)load( + contextPtr->glVertexAttribL1d = LoadGLFunction(load, "glVertexAttribL1d"u8); - contextPtr->glVertexAttribL1dv = (delegate*)load( + contextPtr->glVertexAttribL1dv = LoadGLFunction(load, "glVertexAttribL1dv"u8); - contextPtr->glVertexAttribL2d = (delegate*)load( + contextPtr->glVertexAttribL2d = LoadGLFunction(load, "glVertexAttribL2d"u8); - contextPtr->glVertexAttribL2dv = (delegate*)load( + contextPtr->glVertexAttribL2dv = LoadGLFunction(load, "glVertexAttribL2dv"u8); - contextPtr->glVertexAttribL3d = (delegate*)load( + contextPtr->glVertexAttribL3d = LoadGLFunction(load, "glVertexAttribL3d"u8); - contextPtr->glVertexAttribL3dv = (delegate*)load( + contextPtr->glVertexAttribL3dv = LoadGLFunction(load, "glVertexAttribL3dv"u8); - contextPtr->glVertexAttribL4d = (delegate*)load( + contextPtr->glVertexAttribL4d = LoadGLFunction(load, "glVertexAttribL4d"u8); - contextPtr->glVertexAttribL4dv = (delegate*)load( + contextPtr->glVertexAttribL4dv = LoadGLFunction(load, "glVertexAttribL4dv"u8); - contextPtr->glVertexAttribLPointer = (delegate*)load( + contextPtr->glVertexAttribLPointer = LoadGLFunction(load, "glVertexAttribLPointer"u8); - contextPtr->glViewportArrayv = (delegate*)load( + contextPtr->glViewportArrayv = LoadGLFunction(load, "glViewportArrayv"u8); - contextPtr->glViewportIndexedf = (delegate*)load( + contextPtr->glViewportIndexedf = LoadGLFunction(load, "glViewportIndexedf"u8); - contextPtr->glViewportIndexedfv = (delegate*)load( + contextPtr->glViewportIndexedfv = LoadGLFunction(load, "glViewportIndexedfv"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.1 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.1 APIs"); return true; } - internal static unsafe bool LoadGLcore42(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore42( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core42) { @@ -1108,37 +1155,40 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindImageTexture = (delegate*)load( + contextPtr->glBindImageTexture = LoadGLFunction(load, "glBindImageTexture"u8); - contextPtr->glDrawArraysInstancedBaseInstance = (delegate*)load( + contextPtr->glDrawArraysInstancedBaseInstance = LoadGLFunction(load, "glDrawArraysInstancedBaseInstance"u8); - contextPtr->glDrawElementsInstancedBaseInstance = (delegate*)load( + contextPtr->glDrawElementsInstancedBaseInstance = LoadGLFunction(load, "glDrawElementsInstancedBaseInstance"u8); - contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = (delegate*)load( + contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = LoadGLFunction(load, "glDrawElementsInstancedBaseVertexBaseInstance"u8); - contextPtr->glDrawTransformFeedbackInstanced = (delegate*)load( + contextPtr->glDrawTransformFeedbackInstanced = LoadGLFunction(load, "glDrawTransformFeedbackInstanced"u8); - contextPtr->glDrawTransformFeedbackStreamInstanced = (delegate*)load( + contextPtr->glDrawTransformFeedbackStreamInstanced = LoadGLFunction(load, "glDrawTransformFeedbackStreamInstanced"u8); - contextPtr->glGetActiveAtomicCounterBufferiv = (delegate*)load( + contextPtr->glGetActiveAtomicCounterBufferiv = LoadGLFunction(load, "glGetActiveAtomicCounterBufferiv"u8); - contextPtr->glGetInternalformativ = (delegate*)load( + contextPtr->glGetInternalformativ = LoadGLFunction(load, "glGetInternalformativ"u8); - contextPtr->glMemoryBarrier = (delegate*)load("glMemoryBarrier"u8); - contextPtr->glTexStorage1D = (delegate*)load( + contextPtr->glMemoryBarrier = LoadGLFunction(load, "glMemoryBarrier"u8); + contextPtr->glTexStorage1D = LoadGLFunction(load, "glTexStorage1D"u8); - contextPtr->glTexStorage2D = (delegate*)load( + contextPtr->glTexStorage2D = LoadGLFunction(load, "glTexStorage2D"u8); - contextPtr->glTexStorage3D = (delegate*)load( + contextPtr->glTexStorage3D = LoadGLFunction(load, "glTexStorage3D"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.2 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.2 APIs"); return true; } - internal static unsafe bool LoadGLcore43(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore43( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core43) { @@ -1148,100 +1198,104 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindVertexBuffer = (delegate*)load( + contextPtr->glBindVertexBuffer = LoadGLFunction(load, "glBindVertexBuffer"u8); - contextPtr->glClearBufferData = (delegate*)load( + contextPtr->glClearBufferData = LoadGLFunction(load, "glClearBufferData"u8); - contextPtr->glClearBufferSubData = (delegate*)load( + contextPtr->glClearBufferSubData = LoadGLFunction(load, "glClearBufferSubData"u8); - contextPtr->glCopyImageSubData = (delegate*)load( + contextPtr->glCopyImageSubData = LoadGLFunction(load, "glCopyImageSubData"u8); - contextPtr->glDebugMessageCallback = (delegate*)load( + contextPtr->glDebugMessageCallback = LoadGLFunction(load, "glDebugMessageCallback"u8); - contextPtr->glDebugMessageControl = (delegate*)load( + contextPtr->glDebugMessageControl = LoadGLFunction(load, "glDebugMessageControl"u8); - contextPtr->glDebugMessageInsert = (delegate*)load( + contextPtr->glDebugMessageInsert = LoadGLFunction(load, "glDebugMessageInsert"u8); - contextPtr->glDispatchCompute = (delegate*)load( + contextPtr->glDispatchCompute = LoadGLFunction(load, "glDispatchCompute"u8); - contextPtr->glDispatchComputeIndirect = (delegate*)load( + contextPtr->glDispatchComputeIndirect = LoadGLFunction(load, "glDispatchComputeIndirect"u8); - contextPtr->glFramebufferParameteri = (delegate*)load( + contextPtr->glFramebufferParameteri = LoadGLFunction(load, "glFramebufferParameteri"u8); - contextPtr->glGetDebugMessageLog = (delegate*)load( + contextPtr->glGetDebugMessageLog = LoadGLFunction(load, "glGetDebugMessageLog"u8); - contextPtr->glGetFramebufferParameteriv = (delegate*)load( + contextPtr->glGetFramebufferParameteriv = LoadGLFunction(load, "glGetFramebufferParameteriv"u8); - contextPtr->glGetInternalformati64v = (delegate*)load( + contextPtr->glGetInternalformati64v = LoadGLFunction(load, "glGetInternalformati64v"u8); - contextPtr->glGetObjectLabel = (delegate*)load( + contextPtr->glGetObjectLabel = LoadGLFunction(load, "glGetObjectLabel"u8); - contextPtr->glGetObjectPtrLabel = (delegate*)load( + contextPtr->glGetObjectPtrLabel = LoadGLFunction(load, "glGetObjectPtrLabel"u8); - contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"u8); - contextPtr->glGetProgramInterfaceiv = (delegate*)load( + + // contextPtr->glGetPointerv =LoadGLFunction(load,"glGetPointerv"u8); + contextPtr->glGetProgramInterfaceiv = LoadGLFunction(load, "glGetProgramInterfaceiv"u8); - contextPtr->glGetProgramResourceIndex = (delegate*)load( + contextPtr->glGetProgramResourceIndex = LoadGLFunction(load, "glGetProgramResourceIndex"u8); - contextPtr->glGetProgramResourceLocation = (delegate*)load( + contextPtr->glGetProgramResourceLocation = LoadGLFunction(load, "glGetProgramResourceLocation"u8); - contextPtr->glGetProgramResourceLocationIndex = (delegate*)load( + contextPtr->glGetProgramResourceLocationIndex = LoadGLFunction(load, "glGetProgramResourceLocationIndex"u8); - contextPtr->glGetProgramResourceName = (delegate*)load( + contextPtr->glGetProgramResourceName = LoadGLFunction(load, "glGetProgramResourceName"u8); - contextPtr->glGetProgramResourceiv = (delegate*)load( + contextPtr->glGetProgramResourceiv = LoadGLFunction(load, "glGetProgramResourceiv"u8); - contextPtr->glInvalidateBufferData = (delegate*)load( + contextPtr->glInvalidateBufferData = LoadGLFunction(load, "glInvalidateBufferData"u8); - contextPtr->glInvalidateBufferSubData = (delegate*)load( + contextPtr->glInvalidateBufferSubData = LoadGLFunction(load, "glInvalidateBufferSubData"u8); - contextPtr->glInvalidateFramebuffer = (delegate*)load( + contextPtr->glInvalidateFramebuffer = LoadGLFunction(load, "glInvalidateFramebuffer"u8); - contextPtr->glInvalidateSubFramebuffer = (delegate*)load( + contextPtr->glInvalidateSubFramebuffer = LoadGLFunction(load, "glInvalidateSubFramebuffer"u8); - contextPtr->glInvalidateTexImage = (delegate*)load( + contextPtr->glInvalidateTexImage = LoadGLFunction(load, "glInvalidateTexImage"u8); - contextPtr->glInvalidateTexSubImage = (delegate*)load( + contextPtr->glInvalidateTexSubImage = LoadGLFunction(load, "glInvalidateTexSubImage"u8); - contextPtr->glMultiDrawArraysIndirect = (delegate*)load( + contextPtr->glMultiDrawArraysIndirect = LoadGLFunction(load, "glMultiDrawArraysIndirect"u8); - contextPtr->glMultiDrawElementsIndirect = (delegate*)load( + contextPtr->glMultiDrawElementsIndirect = LoadGLFunction(load, "glMultiDrawElementsIndirect"u8); - contextPtr->glObjectLabel = (delegate*)load( + contextPtr->glObjectLabel = LoadGLFunction(load, "glObjectLabel"u8); - contextPtr->glObjectPtrLabel = (delegate*)load( + contextPtr->glObjectPtrLabel = LoadGLFunction(load, "glObjectPtrLabel"u8); - contextPtr->glPopDebugGroup = (delegate*)load("glPopDebugGroup"u8); - contextPtr->glPushDebugGroup = (delegate*)load( + contextPtr->glPopDebugGroup = LoadGLFunction(load, "glPopDebugGroup"u8); + contextPtr->glPushDebugGroup = LoadGLFunction(load, "glPushDebugGroup"u8); - contextPtr->glShaderStorageBlockBinding = (delegate*)load( + contextPtr->glShaderStorageBlockBinding = LoadGLFunction(load, "glShaderStorageBlockBinding"u8); - contextPtr->glTexBufferRange = (delegate*)load( + contextPtr->glTexBufferRange = LoadGLFunction(load, "glTexBufferRange"u8); - contextPtr->glTexStorage2DMultisample = (delegate*)load( + contextPtr->glTexStorage2DMultisample = LoadGLFunction(load, "glTexStorage2DMultisample"u8); - contextPtr->glTexStorage3DMultisample = (delegate*)load( + contextPtr->glTexStorage3DMultisample = LoadGLFunction(load, "glTexStorage3DMultisample"u8); - contextPtr->glTextureView = (delegate*)load( + contextPtr->glTextureView = LoadGLFunction(load, "glTextureView"u8); - contextPtr->glVertexAttribBinding = (delegate*)load( + contextPtr->glVertexAttribBinding = LoadGLFunction(load, "glVertexAttribBinding"u8); - contextPtr->glVertexAttribFormat = (delegate*)load( + contextPtr->glVertexAttribFormat = LoadGLFunction(load, "glVertexAttribFormat"u8); - contextPtr->glVertexAttribIFormat = (delegate*)load( + contextPtr->glVertexAttribIFormat = LoadGLFunction(load, "glVertexAttribIFormat"u8); - contextPtr->glClearBufferData = (delegate*)load( + contextPtr->glClearBufferData = LoadGLFunction(load, "glClearBufferData"u8); - contextPtr->glVertexBindingDivisor = (delegate*)load( + contextPtr->glVertexBindingDivisor = LoadGLFunction(load, "glVertexBindingDivisor"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.3 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.3 APIs"); return true; } - internal static unsafe bool LoadGLcore44(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore44( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core44) { @@ -1251,32 +1305,35 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindBuffersBase = (delegate*)load( + contextPtr->glBindBuffersBase = LoadGLFunction(load, "glBindBuffersBase"u8); - contextPtr->glBindBuffersRange = (delegate*)load( + contextPtr->glBindBuffersRange = LoadGLFunction(load, "glBindBuffersRange"u8); - contextPtr->glBindImageTextures = (delegate*)load( + contextPtr->glBindImageTextures = LoadGLFunction(load, "glBindImageTextures"u8); - contextPtr->glBindSamplers = (delegate*)load( + contextPtr->glBindSamplers = LoadGLFunction(load, "glBindSamplers"u8); - contextPtr->glBindTextures = (delegate*)load( + contextPtr->glBindTextures = LoadGLFunction(load, "glBindTextures"u8); - contextPtr->glBindVertexBuffers = (delegate*)load( + contextPtr->glBindVertexBuffers = LoadGLFunction(load, "glBindVertexBuffers"u8); - contextPtr->glBufferStorage = (delegate*)load( + contextPtr->glBufferStorage = LoadGLFunction(load, "glBufferStorage"u8); - contextPtr->glClearTexImage = (delegate*)load( + contextPtr->glClearTexImage = LoadGLFunction(load, "glClearTexImage"u8); - contextPtr->glClearTexSubImage = (delegate*)load( + contextPtr->glClearTexSubImage = LoadGLFunction(load, "glClearTexSubImage"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.4 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.4 APIs"); return true; } - internal static unsafe bool LoadGLcore45(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore45( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core45) { @@ -1286,230 +1343,233 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glBindTextureUnit = (delegate*)load( + contextPtr->glBindTextureUnit = LoadGLFunction(load, "glBindTextureUnit"u8); - contextPtr->glBlitNamedFramebuffer = (delegate*)load( + contextPtr->glBlitNamedFramebuffer = LoadGLFunction(load, "glBlitNamedFramebuffer"u8); - contextPtr->glCheckNamedFramebufferStatus = (delegate*)load( + contextPtr->glCheckNamedFramebufferStatus = LoadGLFunction(load, "glCheckNamedFramebufferStatus"u8); - contextPtr->glClearNamedBufferData = (delegate*)load( + contextPtr->glClearNamedBufferData = LoadGLFunction(load, "glClearNamedBufferData"u8); - contextPtr->glClearNamedBufferSubData = (delegate*)load( + contextPtr->glClearNamedBufferSubData = LoadGLFunction(load, "glClearNamedBufferSubData"u8); - contextPtr->glClearNamedFramebufferfi = (delegate*)load( + contextPtr->glClearNamedFramebufferfi = LoadGLFunction(load, "glClearNamedFramebufferfi"u8); - contextPtr->glClearNamedFramebufferfv = (delegate*)load( + contextPtr->glClearNamedFramebufferfv = LoadGLFunction(load, "glClearNamedFramebufferfv"u8); - contextPtr->glClearNamedFramebufferiv = (delegate*)load( + contextPtr->glClearNamedFramebufferiv = LoadGLFunction(load, "glClearNamedFramebufferiv"u8); - contextPtr->glClearNamedFramebufferuiv = (delegate*)load( + contextPtr->glClearNamedFramebufferuiv = LoadGLFunction(load, "glClearNamedFramebufferuiv"u8); - contextPtr->glClipControl = (delegate*)load("glClipControl"u8); - contextPtr->glCompressedTextureSubImage1D = (delegate*)load( + contextPtr->glClipControl = LoadGLFunction(load, "glClipControl"u8); + contextPtr->glCompressedTextureSubImage1D = LoadGLFunction(load, "glCompressedTextureSubImage1D"u8); - contextPtr->glCompressedTextureSubImage2D = (delegate*)load( + contextPtr->glCompressedTextureSubImage2D = LoadGLFunction(load, "glCompressedTextureSubImage2D"u8); - contextPtr->glCompressedTextureSubImage3D = (delegate*)load( + contextPtr->glCompressedTextureSubImage3D = LoadGLFunction(load, "glCompressedTextureSubImage3D"u8); - contextPtr->glCopyNamedBufferSubData = (delegate*)load( + contextPtr->glCopyNamedBufferSubData = LoadGLFunction(load, "glCopyNamedBufferSubData"u8); - contextPtr->glCopyTextureSubImage1D = (delegate*)load( + contextPtr->glCopyTextureSubImage1D = LoadGLFunction(load, "glCopyTextureSubImage1D"u8); - contextPtr->glCopyTextureSubImage2D = (delegate*)load( + contextPtr->glCopyTextureSubImage2D = LoadGLFunction(load, "glCopyTextureSubImage2D"u8); - contextPtr->glCopyTextureSubImage3D = (delegate*)load( + contextPtr->glCopyTextureSubImage3D = LoadGLFunction(load, "glCopyTextureSubImage3D"u8); - contextPtr->glCreateBuffers = (delegate*)load("glCreateBuffers"u8); - contextPtr->glCreateFramebuffers = (delegate*)load( + contextPtr->glCreateBuffers = LoadGLFunction(load, "glCreateBuffers"u8); + contextPtr->glCreateFramebuffers = LoadGLFunction(load, "glCreateFramebuffers"u8); - contextPtr->glCreateProgramPipelines = (delegate*)load( + contextPtr->glCreateProgramPipelines = LoadGLFunction(load, "glCreateProgramPipelines"u8); - contextPtr->glCreateQueries = (delegate*)load( + contextPtr->glCreateQueries = LoadGLFunction(load, "glCreateQueries"u8); - contextPtr->glCreateRenderbuffers = (delegate*)load( + contextPtr->glCreateRenderbuffers = LoadGLFunction(load, "glCreateRenderbuffers"u8); - contextPtr->glCreateSamplers = (delegate*)load( + contextPtr->glCreateSamplers = LoadGLFunction(load, "glCreateSamplers"u8); - contextPtr->glCreateTextures = (delegate*)load( + contextPtr->glCreateTextures = LoadGLFunction(load, "glCreateTextures"u8); - contextPtr->glCreateTransformFeedbacks = (delegate*)load( + contextPtr->glCreateTransformFeedbacks = LoadGLFunction(load, "glCreateTransformFeedbacks"u8); - contextPtr->glCreateVertexArrays = (delegate*)load( + contextPtr->glCreateVertexArrays = LoadGLFunction(load, "glCreateVertexArrays"u8); - contextPtr->glDisableVertexArrayAttrib = (delegate*)load( + contextPtr->glDisableVertexArrayAttrib = LoadGLFunction(load, "glDisableVertexArrayAttrib"u8); - contextPtr->glEnableVertexArrayAttrib = (delegate*)load( + contextPtr->glEnableVertexArrayAttrib = LoadGLFunction(load, "glEnableVertexArrayAttrib"u8); - contextPtr->glFlushMappedNamedBufferRange = (delegate*)load( + contextPtr->glFlushMappedNamedBufferRange = LoadGLFunction(load, "glFlushMappedNamedBufferRange"u8); - contextPtr->glGenerateTextureMipmap = (delegate*)load( + contextPtr->glGenerateTextureMipmap = LoadGLFunction(load, "glGenerateTextureMipmap"u8); - contextPtr->glGetCompressedTextureImage = (delegate*)load( + contextPtr->glGetCompressedTextureImage = LoadGLFunction(load, "glGetCompressedTextureImage"u8); - contextPtr->glGetCompressedTextureSubImage = (delegate*)load( + contextPtr->glGetCompressedTextureSubImage = LoadGLFunction(load, "glGetCompressedTextureSubImage"u8); - contextPtr->glGetGraphicsResetStatus = (delegate*)load( + contextPtr->glGetGraphicsResetStatus = LoadGLFunction(load, "glGetGraphicsResetStatus"u8); - contextPtr->glGetNamedBufferParameteri64v = (delegate*)load( + contextPtr->glGetNamedBufferParameteri64v = LoadGLFunction(load, "glGetNamedBufferParameteri64v"u8); - contextPtr->glGetNamedBufferParameteriv = (delegate*)load( + contextPtr->glGetNamedBufferParameteriv = LoadGLFunction(load, "glGetNamedBufferParameteriv"u8); - contextPtr->glGetNamedBufferPointerv = (delegate*)load( + contextPtr->glGetNamedBufferPointerv = LoadGLFunction(load, "glGetNamedBufferPointerv"u8); - contextPtr->glGetNamedBufferSubData = (delegate*)load( + contextPtr->glGetNamedBufferSubData = LoadGLFunction(load, "glGetNamedBufferSubData"u8); - contextPtr->glGetNamedFramebufferAttachmentParameteriv = (delegate*)load( + contextPtr->glGetNamedFramebufferAttachmentParameteriv = LoadGLFunction(load, "glGetNamedFramebufferAttachmentParameteriv"u8); - contextPtr->glGetNamedFramebufferParameteriv = (delegate*)load( + contextPtr->glGetNamedFramebufferParameteriv = LoadGLFunction(load, "glGetNamedFramebufferParameteriv"u8); - contextPtr->glGetNamedRenderbufferParameteriv = (delegate*)load( + contextPtr->glGetNamedRenderbufferParameteriv = LoadGLFunction(load, "glGetNamedRenderbufferParameteriv"u8); - contextPtr->glGetQueryBufferObjecti64v = (delegate*)load( + contextPtr->glGetQueryBufferObjecti64v = LoadGLFunction(load, "glGetQueryBufferObjecti64v"u8); - contextPtr->glGetQueryBufferObjectiv = (delegate*)load( + contextPtr->glGetQueryBufferObjectiv = LoadGLFunction(load, "glGetQueryBufferObjectiv"u8); - contextPtr->glGetQueryBufferObjectui64v = (delegate*)load( + contextPtr->glGetQueryBufferObjectui64v = LoadGLFunction(load, "glGetQueryBufferObjectui64v"u8); - contextPtr->glGetQueryBufferObjectuiv = (delegate*)load( + contextPtr->glGetQueryBufferObjectuiv = LoadGLFunction(load, "glGetQueryBufferObjectuiv"u8); - contextPtr->glGetTextureImage = (delegate*)load( + contextPtr->glGetTextureImage = LoadGLFunction(load, "glGetTextureImage"u8); - contextPtr->glGetTextureLevelParameterfv = (delegate*)load( + contextPtr->glGetTextureLevelParameterfv = LoadGLFunction(load, "glGetTextureLevelParameterfv"u8); - contextPtr->glGetTextureLevelParameteriv = (delegate*)load( + contextPtr->glGetTextureLevelParameteriv = LoadGLFunction(load, "glGetTextureLevelParameteriv"u8); - contextPtr->glGetTextureParameterIiv = (delegate*)load( + contextPtr->glGetTextureParameterIiv = LoadGLFunction(load, "glGetTextureParameterIiv"u8); - contextPtr->glGetTextureParameterIuiv = (delegate*)load( + contextPtr->glGetTextureParameterIuiv = LoadGLFunction(load, "glGetTextureParameterIuiv"u8); - contextPtr->glGetTextureParameterfv = (delegate*)load( + contextPtr->glGetTextureParameterfv = LoadGLFunction(load, "glGetTextureParameterfv"u8); - contextPtr->glGetTextureParameteriv = (delegate*)load( + contextPtr->glGetTextureParameteriv = LoadGLFunction(load, "glGetTextureParameteriv"u8); - contextPtr->glGetTextureSubImage = (delegate*)load( + contextPtr->glGetTextureSubImage = LoadGLFunction(load, "glGetTextureSubImage"u8); - contextPtr->glGetTransformFeedbacki64_v = (delegate*)load( + contextPtr->glGetTransformFeedbacki64_v = LoadGLFunction(load, "glGetTransformFeedbacki64_v"u8); - contextPtr->glGetTransformFeedbacki_v = (delegate*)load( + contextPtr->glGetTransformFeedbacki_v = LoadGLFunction(load, "glGetTransformFeedbacki_v"u8); - contextPtr->glGetTransformFeedbackiv = (delegate*)load( + contextPtr->glGetTransformFeedbackiv = LoadGLFunction(load, "glGetTransformFeedbackiv"u8); - contextPtr->glGetVertexArrayIndexed64iv = (delegate*)load( + contextPtr->glGetVertexArrayIndexed64iv = LoadGLFunction(load, "glGetVertexArrayIndexed64iv"u8); - contextPtr->glGetVertexArrayIndexediv = (delegate*)load( + contextPtr->glGetVertexArrayIndexediv = LoadGLFunction(load, "glGetVertexArrayIndexediv"u8); - contextPtr->glGetVertexArrayiv = (delegate*)load( + contextPtr->glGetVertexArrayiv = LoadGLFunction(load, "glGetVertexArrayiv"u8); - contextPtr->glGetnCompressedTexImage = (delegate*)load( + contextPtr->glGetnCompressedTexImage = LoadGLFunction(load, "glGetnCompressedTexImage"u8); - contextPtr->glGetnTexImage = (delegate*)load( + contextPtr->glGetnTexImage = LoadGLFunction(load, "glGetnTexImage"u8); - contextPtr->glGetnUniformdv = (delegate*)load( + contextPtr->glGetnUniformdv = LoadGLFunction(load, "glGetnUniformdv"u8); - contextPtr->glGetnUniformfv = (delegate*)load( + contextPtr->glGetnUniformfv = LoadGLFunction(load, "glGetnUniformfv"u8); - contextPtr->glGetnUniformiv = (delegate*)load( + contextPtr->glGetnUniformiv = LoadGLFunction(load, "glGetnUniformiv"u8); - contextPtr->glGetnUniformuiv = (delegate*)load( + contextPtr->glGetnUniformuiv = LoadGLFunction(load, "glGetnUniformuiv"u8); - contextPtr->glInvalidateNamedFramebufferData = (delegate*)load( + contextPtr->glInvalidateNamedFramebufferData = LoadGLFunction(load, "glInvalidateNamedFramebufferData"u8); - contextPtr->glInvalidateNamedFramebufferSubData = (delegate*)load( + contextPtr->glInvalidateNamedFramebufferSubData = LoadGLFunction(load, "glInvalidateNamedFramebufferSubData"u8); - contextPtr->glMapNamedBuffer = (delegate*)load( + contextPtr->glMapNamedBuffer = LoadGLFunction(load, "glMapNamedBuffer"u8); - contextPtr->glMapNamedBufferRange = (delegate*)load( + contextPtr->glMapNamedBufferRange = LoadGLFunction(load, "glMapNamedBufferRange"u8); - contextPtr->glMemoryBarrierByRegion = (delegate*)load( + contextPtr->glMemoryBarrierByRegion = LoadGLFunction(load, "glMemoryBarrierByRegion"u8); - contextPtr->glNamedBufferData = (delegate*)load( + contextPtr->glNamedBufferData = LoadGLFunction(load, "glNamedBufferData"u8); - contextPtr->glNamedBufferStorage = (delegate*)load( + contextPtr->glNamedBufferStorage = LoadGLFunction(load, "glNamedBufferStorage"u8); - contextPtr->glNamedBufferSubData = (delegate*)load( + contextPtr->glNamedBufferSubData = LoadGLFunction(load, "glNamedBufferSubData"u8); - contextPtr->glNamedFramebufferDrawBuffer = (delegate*)load( + contextPtr->glNamedFramebufferDrawBuffer = LoadGLFunction(load, "glNamedFramebufferDrawBuffer"u8); - contextPtr->glNamedFramebufferDrawBuffers = (delegate*)load( + contextPtr->glNamedFramebufferDrawBuffers = LoadGLFunction(load, "glNamedFramebufferDrawBuffers"u8); - contextPtr->glNamedFramebufferParameteri = (delegate*)load( + contextPtr->glNamedFramebufferParameteri = LoadGLFunction(load, "glNamedFramebufferParameteri"u8); - contextPtr->glNamedFramebufferReadBuffer = (delegate*)load( + contextPtr->glNamedFramebufferReadBuffer = LoadGLFunction(load, "glNamedFramebufferReadBuffer"u8); - contextPtr->glNamedFramebufferRenderbuffer = (delegate*)load( + contextPtr->glNamedFramebufferRenderbuffer = LoadGLFunction(load, "glNamedFramebufferRenderbuffer"u8); - contextPtr->glNamedFramebufferTexture = (delegate*)load( + contextPtr->glNamedFramebufferTexture = LoadGLFunction(load, "glNamedFramebufferTexture"u8); - contextPtr->glNamedFramebufferTextureLayer = (delegate*)load( + contextPtr->glNamedFramebufferTextureLayer = LoadGLFunction(load, "glNamedFramebufferTextureLayer"u8); - contextPtr->glNamedRenderbufferStorage = (delegate*)load( + contextPtr->glNamedRenderbufferStorage = LoadGLFunction(load, "glNamedRenderbufferStorage"u8); - contextPtr->glNamedRenderbufferStorageMultisample = (delegate*)load( + contextPtr->glNamedRenderbufferStorageMultisample = LoadGLFunction(load, "glNamedRenderbufferStorageMultisample"u8); - contextPtr->glReadnPixels = (delegate*)load( + contextPtr->glReadnPixels = LoadGLFunction(load, "glReadnPixels"u8); - contextPtr->glTextureBarrier = (delegate*)load("glTextureBarrier"u8); - contextPtr->glTextureBuffer = (delegate*)load( + contextPtr->glTextureBarrier = LoadGLFunction(load, "glTextureBarrier"u8); + contextPtr->glTextureBuffer = LoadGLFunction(load, "glTextureBuffer"u8); - contextPtr->glTextureBufferRange = (delegate*)load( + contextPtr->glTextureBufferRange = LoadGLFunction(load, "glTextureBufferRange"u8); - contextPtr->glTextureParameterIiv = (delegate*)load( + contextPtr->glTextureParameterIiv = LoadGLFunction(load, "glTextureParameterIiv"u8); - contextPtr->glTextureParameterIuiv = (delegate*)load( + contextPtr->glTextureParameterIuiv = LoadGLFunction(load, "glTextureParameterIuiv"u8); - contextPtr->glTextureParameterf = (delegate*)load( + contextPtr->glTextureParameterf = LoadGLFunction(load, "glTextureParameterf"u8); - contextPtr->glTextureParameterfv = (delegate*)load( + contextPtr->glTextureParameterfv = LoadGLFunction(load, "glTextureParameterfv"u8); - contextPtr->glTextureParameteri = (delegate*)load( + contextPtr->glTextureParameteri = LoadGLFunction(load, "glTextureParameteri"u8); - contextPtr->glTextureParameteriv = (delegate*)load( + contextPtr->glTextureParameteriv = LoadGLFunction(load, "glTextureParameteriv"u8); - contextPtr->glTextureStorage1D = (delegate*)load( + contextPtr->glTextureStorage1D = LoadGLFunction(load, "glTextureStorage1D"u8); - contextPtr->glTextureStorage2D = (delegate*)load( + contextPtr->glTextureStorage2D = LoadGLFunction(load, "glTextureStorage2D"u8); - contextPtr->glTextureStorage2DMultisample = (delegate*)load( + contextPtr->glTextureStorage2DMultisample = LoadGLFunction(load, "glTextureStorage2DMultisample"u8); - contextPtr->glTextureStorage3D = (delegate*)load( + contextPtr->glTextureStorage3D = LoadGLFunction(load, "glTextureStorage3D"u8); - contextPtr->glTextureStorage3DMultisample = (delegate*)load( + contextPtr->glTextureStorage3DMultisample = LoadGLFunction(load, "glTextureStorage3DMultisample"u8); - contextPtr->glTextureSubImage1D = (delegate*)load( + contextPtr->glTextureSubImage1D = LoadGLFunction(load, "glTextureSubImage1D"u8); - contextPtr->glTextureSubImage2D = (delegate*)load( + contextPtr->glTextureSubImage2D = LoadGLFunction(load, "glTextureSubImage2D"u8); - contextPtr->glTextureSubImage3D = (delegate*)load( + contextPtr->glTextureSubImage3D = LoadGLFunction(load, "glTextureSubImage3D"u8); - contextPtr->glTransformFeedbackBufferBase = (delegate*)load( + contextPtr->glTransformFeedbackBufferBase = LoadGLFunction(load, "glTransformFeedbackBufferBase"u8); - contextPtr->glTransformFeedbackBufferRange = (delegate*)load( + contextPtr->glTransformFeedbackBufferRange = LoadGLFunction(load, "glTransformFeedbackBufferRange"u8); - contextPtr->glUnmapNamedBuffer = (delegate*)load("glUnmapNamedBuffer"u8); - contextPtr->glVertexArrayAttribBinding = (delegate*)load( + contextPtr->glUnmapNamedBuffer = LoadGLFunction(load, "glUnmapNamedBuffer"u8); + contextPtr->glVertexArrayAttribBinding = LoadGLFunction(load, "glVertexArrayAttribBinding"u8); - contextPtr->glVertexArrayAttribFormat = (delegate*)load( + contextPtr->glVertexArrayAttribFormat = LoadGLFunction(load, "glVertexArrayAttribFormat"u8); - contextPtr->glVertexArrayAttribIFormat = (delegate*)load( + contextPtr->glVertexArrayAttribIFormat = LoadGLFunction(load, "glVertexArrayAttribIFormat"u8); - contextPtr->glVertexArrayAttribLFormat = (delegate*)load( + contextPtr->glVertexArrayAttribLFormat = LoadGLFunction(load, "glVertexArrayAttribLFormat"u8); - contextPtr->glVertexArrayBindingDivisor = (delegate*)load( + contextPtr->glVertexArrayBindingDivisor = LoadGLFunction(load, "glVertexArrayBindingDivisor"u8); - contextPtr->glVertexArrayElementBuffer = (delegate*)load( + contextPtr->glVertexArrayElementBuffer = LoadGLFunction(load, "glVertexArrayElementBuffer"u8); - contextPtr->glVertexArrayVertexBuffer = (delegate*)load( + contextPtr->glVertexArrayVertexBuffer = LoadGLFunction(load, "glVertexArrayVertexBuffer"u8); - contextPtr->glVertexArrayVertexBuffers = (delegate*)load( + contextPtr->glVertexArrayVertexBuffers = LoadGLFunction(load, "glVertexArrayVertexBuffers"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.5 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.5 APIs"); return true; } - internal static unsafe bool LoadGLcore46(OpenglContext* contextPtr, delegate*, IntPtr> load) + internal static unsafe bool LoadGLcore46( + glContextShadow* contextPtr, + delegate*, IntPtr> load + ) { if (!core46) { @@ -1519,20 +1579,33 @@ namespace StgSharp.Graphics.OpenGL #region load - contextPtr->glMultiDrawArraysIndirectCount = (delegate*)load( + contextPtr->glMultiDrawArraysIndirectCount = LoadGLFunction(load, "glMultiDrawArraysIndirectCount"u8); - contextPtr->glMultiDrawElementsIndirectCount = (delegate*)load( + contextPtr->glMultiDrawElementsIndirectCount = LoadGLFunction(load, "glMultiDrawElementsIndirectCount"u8); - contextPtr->glPolygonOffsetClamp = (delegate*)load( + contextPtr->glPolygonOffsetClamp = LoadGLFunction(load, "glPolygonOffsetClamp"u8); - contextPtr->glSpecializeShader = (delegate*)load( + contextPtr->glSpecializeShader = LoadGLFunction(load, "glSpecializeShader"u8); #endregion load - DefaultLog.InternalAppendLog("Successfully load all OpenGL 4.6 APIs"); + DefaultLog.InternalAppendLog("Successfully load OpenGL 4.6 APIs"); return true; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static unsafe IntPtr LoadGLFunction( + delegate*, IntPtr> load, + ReadOnlySpan name + ) + { + IntPtr ptr = load(name); + if (ptr == IntPtr.Zero) { + DefaultLog.InternalAppendLog($"Failed to load proc {System.Text.Encoding.UTF8.GetString(name)}."); + } + return ptr; + } + } } diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs index c41d44e8..75ec6163 100644 --- a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs +++ b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glApiManager" // Project: StgSharp @@ -54,28 +54,6 @@ namespace StgSharp.Graphics.OpenGL private static string glExtensionList; - // -------------------------------------------------------------------------------- - - /// - /// Get the function pointer of given OpenGL api _label - /// - /// - /// ContextName of the OpenGL api - /// - /// - /// The funtion pointer of the api in stream of - /// - public static IntPtr LoadGLfunc(string name) - { - IntPtr ret = GraphicFramework.glfwGetProcAddress(Encoding.UTF8.GetBytes(name)); - if (ret == default) - { - DefaultLog.InternalAppendLog( - $"Cannot load OpenGL api called {name}, this api may not exist or supported."); - return ret; - } - return ret; - } /// /// Load all supported OpenGL APIs and bind them to given . @@ -83,10 +61,12 @@ namespace StgSharp.Graphics.OpenGL /// /// The handle to current OpenGL viewPortDisplay /// - public static unsafe void LoadOpenGLApiTo(IntPtr contextHandle) + public static unsafe void LoadOpenGLApiTo( + IntPtr contextHandle + ) { OpenglContext* context = (OpenglContext*)contextHandle; - if ((IntPtr)context->glGetString != IntPtr.Zero) { + if (context->glGetString != null) { return; } delegate*, IntPtr> loader = &GraphicFramework.glfwGetProcAddress; @@ -96,15 +76,16 @@ namespace StgSharp.Graphics.OpenGL #if DEBUG Console.WriteLine("Cannot load GL."); #endif - throw new Exception("Cannot load gl"); + throw new NotSupportedException("Cannot load gl"); } - context->glGetString = (delegate*)proc; + context->glGetString = (delegate*)proc; string coreVersion; - if (context->glGetString(glVersion) == IntPtr.Zero) { + if (context->glGetString(glVersion) == null) { DefaultLog.InternalWriteLog("Failed to call glGetString", LogType.Error); } - coreVersion = Marshal.PtrToStringAnsi(context->glGetString(glVersion)) ?? string.Empty; + coreVersion = Marshal.PtrToStringAnsi((nint)context->glGetString(glVersion)) ?? + string.Empty; foreach (string branch in glBranch) { @@ -118,25 +99,25 @@ namespace StgSharp.Graphics.OpenGL CheckCoreVersion(majorVersion, minorVersion); - if (LoadGLcore10(context, loader) && - LoadGLcore11(context, loader) && - LoadGLcore12(context, loader) && - LoadGLcore13(context, loader) && - LoadGLcore14(context, loader) && - LoadGLcore15(context, loader) && - LoadGLcore20(context, loader) && - LoadGLcore21(context, loader) && - LoadGLcore30(context, loader) && - LoadGLcore31(context, loader) && - LoadGLcore32(context, loader) && - LoadGLcore33(context, loader) && - LoadGLcore40(context, loader) && - LoadGLcore41(context, loader) && - LoadGLcore42(context, loader) && - LoadGLcore43(context, loader) && - LoadGLcore44(context, loader) && - LoadGLcore45(context, loader) && - LoadGLcore46(context, loader)) { } + 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) @@ -3267,7 +3248,10 @@ namespace StgSharp.Graphics.OpenGL #endregion checkGLextensions } - internal static void CheckCoreVersion(int majorVersion, int minorVersion) + internal static void CheckCoreVersion( + int majorVersion, + int minorVersion + ) { if (majorVersion < 3) { throw new InvalidOperationException( @@ -3433,32 +3417,14 @@ namespace StgSharp.Graphics.OpenGL } } - internal static unsafe string GetExtensions(this OpenglContext context) + internal static unsafe string GetExtensions( + this OpenglContext context + ) { if (context.glGetString == null) { return string.Empty; } - return Marshal.PtrToStringAnsi(context.glGetString(glExtension))!; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static T internalLoadAPI(IntPtr ptr) where T: Delegate - { - try - { - if (ptr == IntPtr.Zero) { - return null; - } - T func = Marshal.GetDelegateForFunctionPointer(ptr); - return func; - } - catch (Exception ex) - { - DefaultLog.InternalWriteLog( - $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", - LogType.Warning); - return default; - } + return Marshal.PtrToStringAnsi((nint)context.glGetString(glExtension))!; } } diff --git a/StgSharp.Common/Graphics/OpenGL/glContext.cs b/StgSharp.Common/Graphics/OpenGL/glContext.cs index 53cb8614..ee76cc8d 100644 --- a/StgSharp.Common/Graphics/OpenGL/glContext.cs +++ b/StgSharp.Common/Graphics/OpenGL/glContext.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glContext" // Project: StgSharp @@ -25,2579 +25,671 @@ // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- -using StgSharp.HighPerformance; -using StgSharp.Internal; -using StgSharp.Internal.Intrinsic; - using System; -using System.Collections.Generic; - -using System.Runtime.InteropServices; -using System.Text; +using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL { - [StructLayout(LayoutKind.Sequential)] - public struct OpenglContext + public unsafe partial struct OpenglContext { - public override bool Equals(object obj) - { - return false; - } - - public override unsafe int GetHashCode() - { - fixed (OpenglContext* sptr = &this) { - return sptr->GetHashCode(); - } - } - - public static bool operator !=(OpenglContext left, OpenglContext right) - { - return !(left == right); - } - - public static bool operator ==(OpenglContext left, OpenglContext right) - { - return left.Equals(right); - } - - #region glapi - - internal unsafe delegate* glAccumxOES; - internal unsafe delegate* glAcquireKeyedMutexWin32EXT; - internal unsafe delegate* glActiveProgramEXT; internal unsafe delegate* glActiveShaderProgram; - internal unsafe delegate* glActiveStencilFaceEXT; internal unsafe delegate* glActiveTexture; - internal unsafe delegate* glActiveTextureARB; - internal unsafe delegate* glActiveVaryingNV; - internal unsafe delegate* glAlphaFragmentOp1ATI; - internal unsafe delegate* glAlphaFragmentOp2ATI; - internal unsafe delegate* glAlphaFragmentOp3ATI; - internal unsafe delegate* glAlphaFuncxOES; - internal unsafe delegate* glAlphaToCoverageDitherControlNV; - internal unsafe delegate* glApplyFramebufferAttachmentCMAAINTEL; - internal unsafe delegate* glApplyTextureEXT; - internal unsafe delegate* glAreProgramsResidentNV; - internal unsafe delegate* glAreTexturesResidentEXT; - internal unsafe delegate* glArrayElementEXT; - internal unsafe delegate* glArrayObjectATI; - internal unsafe delegate* glAsyncCopyBufferSubDataNVX; - internal unsafe delegate* glAsyncCopyImageSubDataNVX; - internal unsafe delegate* glAsyncMarkerSGIX; - internal unsafe delegate* glAttachObjectARB; internal unsafe delegate* glAttachShader; internal unsafe delegate* glBeginConditionalRender; - internal unsafe delegate* glBeginConditionalRenderNV; - internal unsafe delegate* glBeginConditionalRenderNVX; - internal unsafe delegate* glBeginFragmentShaderATI; - internal unsafe delegate* glBeginOcclusionQueryNV; - internal unsafe delegate* glBeginPerfMonitorAMD; - internal unsafe delegate* glBeginPerfQueryINTEL; internal unsafe delegate* glBeginQuery; - internal unsafe delegate* glBeginQueryARB; internal unsafe delegate* glBeginQueryIndexed; internal unsafe delegate* glBeginTransformFeedback; - internal unsafe delegate* glBeginTransformFeedbackEXT; - internal unsafe delegate* glBeginTransformFeedbackNV; - internal unsafe delegate* glBeginVertexShaderEXT; - internal unsafe delegate* glBeginVideoCaptureNV; internal unsafe delegate* glBindAttribLocation; - internal unsafe delegate* glBindAttribLocationARB; internal unsafe delegate* glBindBuffer; - internal unsafe delegate* glBindBufferARB; internal unsafe delegate* glBindBufferBase; - internal unsafe delegate* glBindBufferBaseEXT; - internal unsafe delegate* glBindBufferBaseNV; - internal unsafe delegate* glBindBufferOffsetEXT; - internal unsafe delegate* glBindBufferOffsetNV; - internal unsafe delegate* glBindBufferRange; - internal unsafe delegate* glBindBufferRangeEXT; - internal unsafe delegate* glBindBufferRangeNV; - internal unsafe delegate* glBindBuffersBase; - internal unsafe delegate* glBindBuffersRange; + internal unsafe delegate* glBindBufferRange; + internal unsafe delegate* glBindBuffersBase; + internal unsafe delegate* glBindBuffersRange; internal unsafe delegate* glBindFragDataLocation; - internal unsafe delegate* glBindFragDataLocationEXT; internal unsafe delegate* glBindFragDataLocationIndexed; - internal unsafe delegate* glBindFragmentShaderATI; internal unsafe delegate* glBindFramebuffer; - internal unsafe delegate* glBindFramebufferEXT; - internal unsafe delegate* glBindImageTexture; - internal unsafe delegate* glBindImageTextureEXT; - internal unsafe delegate* glBindImageTextures; - internal unsafe delegate* glBindLightParameterEXT; - internal unsafe delegate* glBindMaterialParameterEXT; - internal unsafe delegate* glBindMultiTextureEXT; - internal unsafe delegate* glBindParameterEXT; - internal unsafe delegate* glBindProgramARB; - internal unsafe delegate* glBindProgramNV; + internal unsafe delegate* glBindImageTexture; + internal unsafe delegate* glBindImageTextures; internal unsafe delegate* glBindProgramPipeline; internal unsafe delegate* glBindRenderbuffer; - internal unsafe delegate* glBindRenderbufferEXT; internal unsafe delegate* glBindSampler; - internal unsafe delegate* glBindSamplers; - internal unsafe delegate* glBindShadingRateImageNV; - internal unsafe delegate* glBindTexGenParameterEXT; + internal unsafe delegate* glBindSamplers; internal unsafe delegate* glBindTexture; - internal unsafe delegate* glBindTextureEXT; + internal unsafe delegate* glBindTextures; internal unsafe delegate* glBindTextureUnit; - internal unsafe delegate* glBindTextureUnitParameterEXT; - internal unsafe delegate* glBindTextures; internal unsafe delegate* glBindTransformFeedback; - internal unsafe delegate* glBindTransformFeedbackNV; internal unsafe delegate* glBindVertexArray; - internal unsafe delegate* glBindVertexArrayAPPLE; - internal unsafe delegate* glBindVertexBuffer; - internal unsafe delegate* glBindVertexBuffers; - internal unsafe delegate* glBindVertexShaderEXT; - internal unsafe delegate* glBindVideoCaptureStreamBufferNV; - internal unsafe delegate* glBindVideoCaptureStreamTextureNV; - internal unsafe delegate* glBinormal3bEXT; - internal unsafe delegate* glBinormal3bvEXT; - internal unsafe delegate* glBinormal3dEXT; - internal unsafe delegate* glBinormal3dvEXT; - internal unsafe delegate* glBinormal3fEXT; - internal unsafe delegate* glBinormal3fvEXT; - internal unsafe delegate* glBinormal3iEXT; - internal unsafe delegate* glBinormal3ivEXT; - internal unsafe delegate* glBinormal3sEXT; - internal unsafe delegate* glBinormal3svEXT; - internal unsafe delegate* glBinormalPointerEXT; - internal unsafe delegate* glBitmapxOES; - internal unsafe delegate* glBlendBarrierKHR; - internal unsafe delegate* glBlendBarrierNV; + internal unsafe delegate* glBindVertexBuffer; + internal unsafe delegate* glBindVertexBuffers; internal unsafe delegate* glBlendColor; - internal unsafe delegate* glBlendColorEXT; - internal unsafe delegate* glBlendColorxOES; internal unsafe delegate* glBlendEquation; - internal unsafe delegate* glBlendEquationEXT; - internal unsafe delegate* glBlendEquationIndexedAMD; - internal unsafe delegate* glBlendEquationSeparate; - internal unsafe delegate* glBlendEquationSeparateEXT; - internal unsafe delegate* glBlendEquationSeparateIndexedAMD; - internal unsafe delegate* glBlendEquationSeparatei; - internal unsafe delegate* glBlendEquationSeparateiARB; internal unsafe delegate* glBlendEquationi; - internal unsafe delegate* glBlendEquationiARB; + internal unsafe delegate* glBlendEquationSeparate; + internal unsafe delegate* glBlendEquationSeparatei; internal unsafe delegate* glBlendFunc; - internal unsafe delegate* glBlendFuncIndexedAMD; - internal unsafe delegate* glBlendFuncSeparate; - internal unsafe delegate* glBlendFuncSeparateEXT; - internal unsafe delegate* glBlendFuncSeparateINGR; - internal unsafe delegate* glBlendFuncSeparateIndexedAMD; - internal unsafe delegate* glBlendFuncSeparatei; - internal unsafe delegate* glBlendFuncSeparateiARB; internal unsafe delegate* glBlendFunci; - internal unsafe delegate* glBlendFunciARB; - internal unsafe delegate* glBlendParameteriNV; + internal unsafe delegate* glBlendFuncSeparate; + internal unsafe delegate* glBlendFuncSeparatei; internal unsafe delegate* glBlitFramebuffer; - internal unsafe delegate* glBlitFramebufferEXT; - internal unsafe delegate* glBlitFramebufferLayerEXT; - internal unsafe delegate* glBlitFramebufferLayersEXT; internal unsafe delegate* glBlitNamedFramebuffer; - internal unsafe delegate* glBufferAddressRangeNV; - internal unsafe delegate* glBufferAttachMemoryNV; - internal unsafe delegate* glBufferData; - internal unsafe delegate* glBufferDataARB; - internal unsafe delegate* glBufferPageCommitmentARB; - internal unsafe delegate* glBufferPageCommitmentMemNV; - internal unsafe delegate* glBufferParameteriAPPLE; - internal unsafe delegate* glBufferStorage; - [Obsolete("Param type uncertain", true)] internal unsafe delegate* glBufferStorageExternalEXT; - internal unsafe delegate* glBufferStorageMemEXT; - internal unsafe delegate* glBufferSubData; - internal unsafe delegate* glBufferSubDataARB; - internal unsafe delegate* glCallCommandListNV; + internal unsafe delegate* glBufferData; + internal unsafe delegate* glBufferStorage; + internal unsafe delegate* glBufferSubData; internal unsafe delegate* glCheckFramebufferStatus; - internal unsafe delegate* glCheckFramebufferStatusEXT; internal unsafe delegate* glCheckNamedFramebufferStatus; - internal unsafe delegate* glCheckNamedFramebufferStatusEXT; internal unsafe delegate* glClampColor; - internal unsafe delegate* glClampColorARB; internal unsafe delegate* glClear; - internal unsafe delegate* glClearAccumxOES; - internal unsafe delegate* glClearBufferData; - internal unsafe delegate* glClearBufferSubData; + internal unsafe delegate* glClearBufferData; internal unsafe delegate* glClearBufferfi; internal unsafe delegate* glClearBufferfv; internal unsafe delegate* glClearBufferiv; + internal unsafe delegate* glClearBufferSubData; internal unsafe delegate* glClearBufferuiv; internal unsafe delegate* glClearColor; - internal unsafe delegate* glClearColorIiEXT; - internal unsafe delegate* glClearColorIuiEXT; - internal unsafe delegate* glClearColorxOES; internal unsafe delegate* glClearDepth; - internal unsafe delegate* glClearDepthdNV; internal unsafe delegate* glClearDepthf; - internal unsafe delegate* glClearDepthfOES; - internal unsafe delegate* glClearDepthxOES; - internal unsafe delegate* glClearNamedBufferData; - internal unsafe delegate* glClearNamedBufferDataEXT; - internal unsafe delegate* glClearNamedBufferSubData; - internal unsafe delegate* glClearNamedBufferSubDataEXT; + 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* glClientActiveTextureARB; - internal unsafe delegate* glClientActiveVertexStreamATI; - internal unsafe delegate* glClientAttribDefaultEXT; - internal unsafe delegate* glClientWaitSemaphoreui64NVX; - internal unsafe delegate* glClientWaitSync; + internal unsafe delegate* glClearTexImage; + internal unsafe delegate* glClearTexSubImage; + internal unsafe delegate* glClientWaitSync; internal unsafe delegate* glClipControl; - internal unsafe delegate* glClipPlanefOES; - internal unsafe delegate* glClipPlanexOES; - internal unsafe delegate* glColor3fVertex3fSUN; - internal unsafe delegate* glColor3fVertex3fvSUN; - internal unsafe delegate* glColor3hNV; - internal unsafe delegate* glColor3hvNV; - internal unsafe delegate* glColor3xOES; - internal unsafe delegate* glColor3xvOES; - internal unsafe delegate* glColor4fNormal3fVertex3fSUN; - internal unsafe delegate* glColor4fNormal3fVertex3fvSUN; - internal unsafe delegate* glColor4hNV; - internal unsafe delegate* glColor4hvNV; - internal unsafe delegate* glColor4ubVertex2fSUN; - internal unsafe delegate* glColor4ubVertex2fvSUN; - internal unsafe delegate* glColor4ubVertex3fSUN; - internal unsafe delegate* glColor4ubVertex3fvSUN; - internal unsafe delegate* glColor4xOES; - internal unsafe delegate* glColor4xvOES; - internal unsafe delegate* glColorFormatNV; - internal unsafe delegate* glColorFragmentOp1ATI; - internal unsafe delegate* glColorFragmentOp2ATI; - internal unsafe delegate* glColorFragmentOp3ATI; - internal unsafe delegate* glColorMask; - internal unsafe delegate* glColorMaskIndexedEXT; - internal unsafe delegate* glColorMaski; - internal unsafe delegate* glColorPointerEXT; - internal unsafe delegate* glColorPointerListIBM; - internal unsafe delegate* glColorPointervINTEL; - internal unsafe delegate* glColorSubTableEXT; - internal unsafe delegate* glColorTableEXT; - internal unsafe delegate* glColorTableParameterfvSGI; - internal unsafe delegate* glColorTableParameterivSGI; - internal unsafe delegate* glColorTableSGI; - internal unsafe delegate* glCombinerInputNV; - internal unsafe delegate* glCombinerOutputNV; - internal unsafe delegate* glCombinerParameterfNV; - internal unsafe delegate* glCombinerParameterfvNV; - internal unsafe delegate* glCombinerParameteriNV; - internal unsafe delegate* glCombinerParameterivNV; - internal unsafe delegate* glCombinerStageParameterfvNV; - internal unsafe delegate* glCommandListSegmentsNV; - internal unsafe delegate* glCompileCommandListNV; + internal unsafe delegate* glColorMask; + internal unsafe delegate* glColorMaski; internal unsafe delegate* glCompileShader; - internal unsafe delegate* glCompileShaderARB; - internal unsafe delegate* glCompileShaderIncludeARB; - internal unsafe delegate* glCompressedMultiTexImage1DEXT; - internal unsafe delegate* glCompressedMultiTexImage2DEXT; - internal unsafe delegate* glCompressedMultiTexImage3DEXT; - internal unsafe delegate* glCompressedMultiTexSubImage1DEXT; - internal unsafe delegate* glCompressedMultiTexSubImage2DEXT; - internal unsafe delegate* glCompressedMultiTexSubImage3DEXT; - internal unsafe delegate* glCompressedTexImage1D; - internal unsafe delegate* glCompressedTexImage1DARB; - internal unsafe delegate* glCompressedTexImage2D; - internal unsafe delegate* glCompressedTexImage2DARB; - internal unsafe delegate* glCompressedTexImage3D; - internal unsafe delegate* glCompressedTexImage3DARB; - internal unsafe delegate* glCompressedTexSubImage1D; - internal unsafe delegate* glCompressedTexSubImage1DARB; - internal unsafe delegate* glCompressedTexSubImage2D; - internal unsafe delegate* glCompressedTexSubImage2DARB; - internal unsafe delegate* glCompressedTexSubImage3D; - internal unsafe delegate* glCompressedTexSubImage3DARB; - internal unsafe delegate* glCompressedTextureImage1DEXT; - internal unsafe delegate* glCompressedTextureImage2DEXT; - internal unsafe delegate* glCompressedTextureImage3DEXT; - internal unsafe delegate* glCompressedTextureSubImage1D; - internal unsafe delegate* glCompressedTextureSubImage1DEXT; - internal unsafe delegate* glCompressedTextureSubImage2D; - internal unsafe delegate* glCompressedTextureSubImage2DEXT; - internal unsafe delegate* glCompressedTextureSubImage3D; - internal unsafe delegate* glCompressedTextureSubImage3DEXT; - internal unsafe delegate* glConservativeRasterParameterfNV; - internal unsafe delegate* glConservativeRasterParameteriNV; - internal unsafe delegate* glConvolutionFilter1DEXT; - internal unsafe delegate* glConvolutionFilter2DEXT; - internal unsafe delegate* glConvolutionParameterfEXT; - internal unsafe delegate* glConvolutionParameterfvEXT; - internal unsafe delegate* glConvolutionParameteriEXT; - internal unsafe delegate* glConvolutionParameterivEXT; - internal unsafe delegate* glConvolutionParameterxOES; - internal unsafe delegate* glConvolutionParameterxvOES; - internal unsafe delegate* glCopyBufferSubData; - internal unsafe delegate* glCopyColorSubTableEXT; - internal unsafe delegate* glCopyColorTableSGI; - internal unsafe delegate* glCopyConvolutionFilter1DEXT; - internal unsafe delegate* glCopyConvolutionFilter2DEXT; - internal unsafe delegate* glCopyImageSubData; - internal unsafe delegate* glCopyImageSubDataNV; - internal unsafe delegate* glCopyMultiTexImage1DEXT; - internal unsafe delegate* glCopyMultiTexImage2DEXT; - internal unsafe delegate* glCopyMultiTexSubImage1DEXT; - internal unsafe delegate* glCopyMultiTexSubImage2DEXT; - internal unsafe delegate* glCopyMultiTexSubImage3DEXT; - internal unsafe delegate* glCopyNamedBufferSubData; - internal unsafe delegate* glCopyPathNV; - internal unsafe delegate* glCopyTexImage1D; - internal unsafe delegate* glCopyTexImage1DEXT; - internal unsafe delegate* glCopyTexImage2D; - internal unsafe delegate* glCopyTexImage2DEXT; - internal unsafe delegate* glCopyTexSubImage1D; - internal unsafe delegate* glCopyTexSubImage1DEXT; - internal unsafe delegate* glCopyTexSubImage2D; - internal unsafe delegate* glCopyTexSubImage2DEXT; - internal unsafe delegate* glCopyTexSubImage3D; - internal unsafe delegate* glCopyTexSubImage3DEXT; - internal unsafe delegate* glCopyTextureImage1DEXT; - internal unsafe delegate* glCopyTextureImage2DEXT; - internal unsafe delegate* glCopyTextureSubImage1D; - internal unsafe delegate* glCopyTextureSubImage1DEXT; - internal unsafe delegate* glCopyTextureSubImage2D; - internal unsafe delegate* glCopyTextureSubImage2DEXT; - internal unsafe delegate* glCopyTextureSubImage3D; - internal unsafe delegate* glCopyTextureSubImage3DEXT; - internal unsafe delegate* glCoverFillPathInstancedNV; - internal unsafe delegate* glCoverFillPathNV; - internal unsafe delegate* glCoverStrokePathInstancedNV; - internal unsafe delegate* glCoverStrokePathNV; - internal unsafe delegate* glCoverageModulationNV; - internal unsafe delegate* glCoverageModulationTableNV; - internal unsafe delegate* glCreateBuffers; - internal unsafe delegate* glCreateCommandListsNV; - internal unsafe delegate* glCreateFramebuffers; - internal unsafe delegate* glCreateMemoryObjectsEXT; - internal unsafe delegate* glCreatePerfQueryINTEL; + 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* glCreateProgramObjectARB; - internal unsafe delegate* glCreateProgramPipelines; - internal unsafe delegate* glCreateProgressFenceNVX; - internal unsafe delegate* glCreateQueries; - internal unsafe delegate* glCreateRenderbuffers; - internal unsafe delegate* glCreateSamplers; - internal unsafe delegate* glCreateSemaphoresNV; + internal unsafe delegate* glCreateProgramPipelines; + internal unsafe delegate* glCreateQueries; + internal unsafe delegate* glCreateRenderbuffers; + internal unsafe delegate* glCreateSamplers; internal unsafe delegate* glCreateShader; - internal unsafe delegate* glCreateShaderObjectARB; - internal unsafe delegate* glCreateShaderProgramEXT; - internal unsafe delegate* glCreateShaderProgramv; - internal unsafe delegate* glCreateStatesNV; - internal unsafe delegate* glCreateSyncFromCLeventARB; - internal unsafe delegate* glCreateTextures; - internal unsafe delegate* glCreateTransformFeedbacks; - internal unsafe delegate* glCreateVertexArrays; + internal unsafe delegate* glCreateShaderProgramv; + internal unsafe delegate* glCreateTextures; + internal unsafe delegate* glCreateTransformFeedbacks; + internal unsafe delegate* glCreateVertexArrays; internal unsafe delegate* glCullFace; - internal unsafe delegate* glCullParameterdvEXT; - internal unsafe delegate* glCullParameterfvEXT; - internal unsafe delegate* glCurrentPaletteMatrixARB; - internal unsafe delegate* glDebugMessageCallback; - internal unsafe delegate* glDebugMessageCallbackAMD; - internal unsafe delegate* glDebugMessageCallbackARB; - internal unsafe delegate* glDebugMessageControl; - internal unsafe delegate* glDebugMessageControlARB; - internal unsafe delegate* glDebugMessageEnableAMD; - internal unsafe delegate* glDebugMessageInsert; - internal unsafe delegate* glDebugMessageInsertAMD; - internal unsafe delegate* glDebugMessageInsertARB; - internal unsafe delegate* glDeformSGIX; - internal unsafe delegate* glDeformationMap3dSGIX; - internal unsafe delegate* glDeformationMap3fSGIX; - internal unsafe delegate* glDeleteAsyncMarkersSGIX; + internal unsafe delegate* glDebugMessageCallback; + internal unsafe delegate* glDebugMessageControl; + internal unsafe delegate* glDebugMessageInsert; internal unsafe delegate* glDeleteBuffers; - internal unsafe delegate* glDeleteBuffersARB; - internal unsafe delegate* glDeleteCommandListsNV; - internal unsafe delegate* glDeleteFencesAPPLE; - internal unsafe delegate* glDeleteFencesNV; - internal unsafe delegate* glDeleteFragmentShaderATI; - internal unsafe delegate* glDeleteFramebuffers; - internal unsafe delegate* glDeleteFramebuffersEXT; - internal unsafe delegate* glDeleteMemoryObjectsEXT; - internal unsafe delegate* glDeleteNamedStringARB; - internal unsafe delegate* glDeleteNamesAMD; - internal unsafe delegate* glDeleteObjectARB; - internal unsafe delegate* glDeleteOcclusionQueriesNV; - internal unsafe delegate* glDeletePathsNV; - internal unsafe delegate* glDeletePerfMonitorsAMD; - internal unsafe delegate* glDeletePerfQueryINTEL; + internal unsafe delegate* glDeleteFramebuffers; internal unsafe delegate* glDeleteProgram; - internal unsafe delegate* glDeleteProgramPipelines; - internal unsafe delegate* glDeleteProgramsARB; - internal unsafe delegate* glDeleteProgramsNV; - internal unsafe delegate* glDeleteQueries; - internal unsafe delegate* glDeleteQueriesARB; - internal unsafe delegate* glDeleteQueryResourceTagNV; - internal unsafe delegate* glDeleteRenderbuffers; - internal unsafe delegate* glDeleteRenderbuffersEXT; - internal unsafe delegate* glDeleteSamplers; - internal unsafe delegate* glDeleteSemaphoresEXT; + internal unsafe delegate* glDeleteProgramPipelines; + internal unsafe delegate* glDeleteQueries; + internal unsafe delegate* glDeleteRenderbuffers; + internal unsafe delegate* glDeleteSamplers; internal unsafe delegate* glDeleteShader; - internal unsafe delegate* glDeleteStatesNV; - internal unsafe delegate* glDeleteSync; - internal unsafe delegate* glDeleteTextures; - internal unsafe delegate* glDeleteTexturesEXT; - internal unsafe delegate* glDeleteTransformFeedbacks; - internal unsafe delegate* glDeleteTransformFeedbacksNV; + internal unsafe delegate* glDeleteSync; + internal unsafe delegate* glDeleteTextures; + internal unsafe delegate* glDeleteTransformFeedbacks; internal unsafe delegate* glDeleteVertexArrays; - internal unsafe delegate* glDeleteVertexArraysAPPLE; - internal unsafe delegate* glDeleteVertexShaderEXT; - internal unsafe delegate* glDepthBoundsEXT; - internal unsafe delegate* glDepthBoundsdNV; internal unsafe delegate* glDepthFunc; - internal unsafe delegate* glDepthMask; + internal unsafe delegate* glDepthMask; internal unsafe delegate* glDepthRange; - internal unsafe delegate* glDepthRangeArraydvNV; - internal unsafe delegate* glDepthRangeArrayv; - internal unsafe delegate* glDepthRangeIndexed; - internal unsafe delegate* glDepthRangeIndexeddNV; - internal unsafe delegate* glDepthRangedNV; + internal unsafe delegate* glDepthRangeArrayv; internal unsafe delegate* glDepthRangef; - internal unsafe delegate* glDepthRangefOES; - internal unsafe delegate* glDepthRangexOES; - internal unsafe delegate* glDetachObjectARB; + internal unsafe delegate* glDepthRangeIndexed; internal unsafe delegate* glDetachShader; - internal unsafe delegate* glDetailTexFuncSGIS; internal unsafe delegate* glDisable; - internal unsafe delegate* glDisableClientStateIndexedEXT; - internal unsafe delegate* glDisableClientStateiEXT; - internal unsafe delegate* glDisableIndexedEXT; - internal unsafe delegate* glDisableVariantClientStateEXT; - internal unsafe delegate* glDisableVertexArrayAttrib; - internal unsafe delegate* glDisableVertexArrayAttribEXT; - internal unsafe delegate* glDisableVertexArrayEXT; - internal unsafe delegate* glDisableVertexAttribAPPLE; - internal unsafe delegate* glDisableVertexAttribArray; - internal unsafe delegate* glDisableVertexAttribArrayARB; internal unsafe delegate* glDisablei; + internal unsafe delegate* glDisableVertexArrayAttrib; + internal unsafe delegate* glDisableVertexAttribArray; internal unsafe delegate* glDispatchCompute; - internal unsafe delegate* glDispatchComputeGroupSizeARB; - internal unsafe delegate* glDispatchComputeIndirect; - internal unsafe delegate* glDrawArrays; - internal unsafe delegate* glDrawArraysEXT; - internal unsafe delegate* glDrawArraysIndirect; - internal unsafe delegate* glDrawArraysInstanced; - internal unsafe delegate* glDrawArraysInstancedARB; - internal unsafe delegate* glDrawArraysInstancedBaseInstance; - internal unsafe delegate* glDrawArraysInstancedEXT; + 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* glDrawBuffersARB; - internal unsafe delegate* glDrawBuffersATI; - internal unsafe delegate* glDrawCommandsAddressNV; - internal unsafe delegate* glDrawCommandsNV; - internal unsafe delegate* glDrawCommandsStatesAddressNV; - internal unsafe delegate* glDrawCommandsStatesNV; - internal unsafe delegate* glDrawElementArrayAPPLE; - internal unsafe delegate* glDrawElementArrayATI; - internal unsafe delegate* glDrawElements; - internal unsafe delegate* glDrawElementsBaseVertex; - internal unsafe delegate* glDrawElementsIndirect; - internal unsafe delegate* glDrawElementsInstanced; - internal unsafe delegate* glDrawElementsInstancedARB; - internal unsafe delegate* glDrawElementsInstancedBaseInstance; - internal unsafe delegate* glDrawElementsInstancedBaseVertex; - internal unsafe delegate* glDrawElementsInstancedBaseVertexBaseInstance; - internal unsafe delegate* glDrawElementsInstancedEXT; - internal unsafe delegate* glDrawMeshArraysSUN; - internal unsafe delegate* glDrawMeshTasksIndirectNV; - internal unsafe delegate* glDrawMeshTasksNV; - internal unsafe delegate* glDrawRangeElementArrayAPPLE; - internal unsafe delegate* glDrawRangeElementArrayATI; - internal unsafe delegate* glDrawRangeElements; - internal unsafe delegate* glDrawRangeElementsBaseVertex; - internal unsafe delegate* glDrawRangeElementsEXT; - internal unsafe delegate* glDrawTextureNV; + 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* glDrawTransformFeedbackNV; + internal unsafe delegate* glDrawTransformFeedbackInstanced; internal unsafe delegate* glDrawTransformFeedbackStream; - internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; - internal unsafe delegate* glDrawVkImageNV; - internal unsafe delegate* glEGLImageTargetTexStorageEXT; - internal unsafe delegate* glEGLImageTargetTextureStorageEXT; - internal unsafe delegate* glEdgeFlagFormatNV; - internal unsafe delegate* glEdgeFlagPointerEXT; - internal unsafe delegate* glEdgeFlagPointerListIBM; - internal unsafe delegate* glElementPointerAPPLE; - internal unsafe delegate* glElementPointerATI; + internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; internal unsafe delegate* glEnable; - internal unsafe delegate* glEnableClientStateIndexedEXT; - internal unsafe delegate* glEnableClientStateiEXT; - internal unsafe delegate* glEnableIndexedEXT; - internal unsafe delegate* glEnableVariantClientStateEXT; - internal unsafe delegate* glEnableVertexArrayAttrib; - internal unsafe delegate* glEnableVertexArrayAttribEXT; - internal unsafe delegate* glEnableVertexArrayEXT; - internal unsafe delegate* glEnableVertexAttribAPPLE; - internal unsafe delegate* glEnableVertexAttribArray; - internal unsafe delegate* glEnableVertexAttribArrayARB; internal unsafe delegate* glEnablei; + internal unsafe delegate* glEnableVertexArrayAttrib; + internal unsafe delegate* glEnableVertexAttribArray; internal unsafe delegate* glEndConditionalRender; - internal unsafe delegate* glEndConditionalRenderNV; - internal unsafe delegate* glEndConditionalRenderNVX; - internal unsafe delegate* glEndFragmentShaderATI; - internal unsafe delegate* glEndOcclusionQueryNV; - internal unsafe delegate* glEndPerfMonitorAMD; - internal unsafe delegate* glEndPerfQueryINTEL; internal unsafe delegate* glEndQuery; - internal unsafe delegate* glEndQueryARB; internal unsafe delegate* glEndQueryIndexed; internal unsafe delegate* glEndTransformFeedback; - internal unsafe delegate* glEndTransformFeedbackEXT; - internal unsafe delegate* glEndTransformFeedbackNV; - internal unsafe delegate* glEndVertexShaderEXT; - internal unsafe delegate* glEndVideoCaptureNV; - internal unsafe delegate* glEvalCoord1xOES; - internal unsafe delegate* glEvalCoord1xvOES; - internal unsafe delegate* glEvalCoord2xOES; - internal unsafe delegate* glEvalCoord2xvOES; - internal unsafe delegate* glEvalMapsNV; - internal unsafe delegate* glEvaluateDepthValuesARB; - internal unsafe delegate* glExecuteProgramNV; - internal unsafe delegate* glExtractComponentEXT; - internal unsafe delegate* glFeedbackBufferxOES; - internal unsafe delegate* glFenceSync; - internal unsafe delegate* glFinalCombinerInputNV; + internal unsafe delegate* glFenceSync; internal unsafe delegate* glFinish; - internal unsafe delegate* glFinishAsyncSGIX; - internal unsafe delegate* glFinishFenceAPPLE; - internal unsafe delegate* glFinishFenceNV; - internal unsafe delegate* glFinishObjectAPPLE; - internal unsafe delegate* glFinishTextureSUNX; internal unsafe delegate* glFlush; - internal unsafe delegate* glFlushMappedBufferRange; - internal unsafe delegate* glFlushMappedBufferRangeAPPLE; - internal unsafe delegate* glFlushMappedNamedBufferRange; - internal unsafe delegate* glFlushMappedNamedBufferRangeEXT; - internal unsafe delegate* glFlushPixelDataRangeNV; - internal unsafe delegate* glFlushRasterSGIX; - internal unsafe delegate* glFlushStaticDataIBM; - internal unsafe delegate* glFlushVertexArrayRangeAPPLE; - internal unsafe delegate* glFlushVertexArrayRangeNV; - internal unsafe delegate* glFogCoordFormatNV; - internal unsafe delegate* glFogCoordPointerEXT; - internal unsafe delegate* glFogCoordPointerListIBM; - internal unsafe delegate* glFogCoorddEXT; - internal unsafe delegate* glFogCoorddvEXT; - internal unsafe delegate* glFogCoordfEXT; - internal unsafe delegate* glFogCoordfvEXT; - internal unsafe delegate* glFogCoordhNV; - internal unsafe delegate* glFogCoordhvNV; - internal unsafe delegate* glFogFuncSGIS; - internal unsafe delegate* glFogxOES; - internal unsafe delegate* glFogxvOES; - internal unsafe delegate* glFragmentColorMaterialSGIX; - internal unsafe delegate* glFragmentCoverageColorNV; - internal unsafe delegate* glFragmentLightModelfSGIX; - internal unsafe delegate* glFragmentLightModelfvSGIX; - internal unsafe delegate* glFragmentLightModeliSGIX; - internal unsafe delegate* glFragmentLightModelivSGIX; - internal unsafe delegate* glFragmentLightfSGIX; - internal unsafe delegate* glFragmentLightfvSGIX; - internal unsafe delegate* glFragmentLightiSGIX; - internal unsafe delegate* glFragmentLightivSGIX; - internal unsafe delegate* glFragmentMaterialfSGIX; - internal unsafe delegate* glFragmentMaterialfvSGIX; - internal unsafe delegate* glFragmentMaterialiSGIX; - internal unsafe delegate* glFragmentMaterialivSGIX; - internal unsafe delegate* glFrameTerminatorGREMEDY; - internal unsafe delegate* glFrameZoomSGIX; - internal unsafe delegate* glFramebufferDrawBufferEXT; - internal unsafe delegate* glFramebufferDrawBuffersEXT; - internal unsafe delegate* glFramebufferFetchBarrierEXT; + internal unsafe delegate* glFlushMappedBufferRange; + internal unsafe delegate* glFlushMappedNamedBufferRange; internal unsafe delegate* glFramebufferParameteri; - internal unsafe delegate* glFramebufferParameteriMESA; - internal unsafe delegate* glFramebufferReadBufferEXT; internal unsafe delegate* glFramebufferRenderbuffer; - internal unsafe delegate* glFramebufferRenderbufferEXT; - internal unsafe delegate* glFramebufferSampleLocationsfvARB; - internal unsafe delegate* glFramebufferSampleLocationsfvNV; - internal unsafe delegate* glFramebufferSamplePositionsfvAMD; internal unsafe delegate* glFramebufferTexture; internal unsafe delegate* glFramebufferTexture1D; - internal unsafe delegate* glFramebufferTexture1DEXT; internal unsafe delegate* glFramebufferTexture2D; - internal unsafe delegate* glFramebufferTexture2DEXT; internal unsafe delegate* glFramebufferTexture3D; - internal unsafe delegate* glFramebufferTexture3DEXT; - internal unsafe delegate* glFramebufferTextureARB; - internal unsafe delegate* glFramebufferTextureEXT; - internal unsafe delegate* glFramebufferTextureFaceARB; - internal unsafe delegate* glFramebufferTextureFaceEXT; internal unsafe delegate* glFramebufferTextureLayer; - internal unsafe delegate* glFramebufferTextureLayerARB; - internal unsafe delegate* glFramebufferTextureLayerEXT; - internal unsafe delegate* glFramebufferTextureMultiviewOVR; - internal unsafe delegate* glFreeObjectBufferATI; internal unsafe delegate* glFrontFace; - internal unsafe delegate* glFrustumfOES; - internal unsafe delegate* glFrustumxOES; - internal unsafe delegate* glGenAsyncMarkersSGIX; internal unsafe delegate* glGenBuffers; - internal unsafe delegate* glGenBuffersARB; - internal unsafe delegate* glGenFencesAPPLE; - internal unsafe delegate* glGenFencesNV; - internal unsafe delegate* glGenFragmentShadersATI; - internal unsafe delegate* glGenFramebuffers; - internal unsafe delegate* glGenFramebuffersEXT; - internal unsafe delegate* glGenNamesAMD; - internal unsafe delegate* glGenOcclusionQueriesNV; - internal unsafe delegate* glGenPathsNV; - internal unsafe delegate* glGenPerfMonitorsAMD; - internal unsafe delegate* glGenProgramPipelines; - internal unsafe delegate* glGenProgramsARB; - internal unsafe delegate* glGenProgramsNV; - internal unsafe delegate* glGenQueries; - internal unsafe delegate* glGenQueriesARB; - internal unsafe delegate* glGenQueryResourceTagNV; - internal unsafe delegate* glGenRenderbuffers; - internal unsafe delegate* glGenRenderbuffersEXT; - internal unsafe delegate* glGenSamplers; - internal unsafe delegate* glGenSemaphoresEXT; - internal unsafe delegate* glGenSymbolsEXT; - internal unsafe delegate* glGenTextures; - internal unsafe delegate* glGenTexturesEXT; - internal unsafe delegate* glGenTransformFeedbacks; - internal unsafe delegate* glGenTransformFeedbacksNV; - internal unsafe delegate* glGenVertexArrays; - internal unsafe delegate* glGenVertexArraysAPPLE; - internal unsafe delegate* glGenVertexShadersEXT; internal unsafe delegate* glGenerateMipmap; - internal unsafe delegate* glGenerateMipmapEXT; - internal unsafe delegate* glGenerateMultiTexMipmapEXT; internal unsafe delegate* glGenerateTextureMipmap; - internal unsafe delegate* glGenerateTextureMipmapEXT; + 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* glGetActiveAtomicCounterBufferiv; - internal unsafe delegate* glGetActiveAttrib; - internal unsafe delegate* glGetActiveAttribARB; - internal unsafe delegate* glGetActiveSubroutineName; - internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveAttrib; + internal unsafe delegate* glGetActiveSubroutineName; internal unsafe delegate* glGetActiveSubroutineUniformiv; - internal unsafe delegate* glGetActiveUniform; - internal unsafe delegate* glGetActiveUniformARB; - internal unsafe delegate* glGetActiveUniformBlockName; + internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveUniform; internal unsafe delegate* glGetActiveUniformBlockiv; - internal unsafe delegate* glGetActiveUniformName; - internal unsafe delegate* glGetActiveUniformsiv; - internal unsafe delegate* glGetActiveVaryingNV; - internal unsafe delegate* glGetArrayObjectfvATI; - internal unsafe delegate* glGetArrayObjectivATI; - internal unsafe delegate* glGetAttachedObjectsARB; - internal unsafe delegate* glGetAttachedShaders; + internal unsafe delegate* glGetActiveUniformBlockName; + internal unsafe delegate* glGetActiveUniformName; + internal unsafe delegate* glGetActiveUniformsiv; + internal unsafe delegate* glGetAttachedShaders; internal unsafe delegate* glGetAttribLocation; - internal unsafe delegate* glGetAttribLocationARB; - internal unsafe delegate* glGetBooleanIndexedvEXT; - internal unsafe delegate* glGetBooleani_v; - internal unsafe delegate* glGetBooleanv; - internal unsafe delegate* glGetBufferParameteri64v; + internal unsafe delegate* glGetBooleani_v; + internal unsafe delegate* glGetBooleanv; + internal unsafe delegate* glGetBufferParameteri64v; internal unsafe delegate* glGetBufferParameteriv; - internal unsafe delegate* glGetBufferParameterivARB; - internal unsafe delegate* glGetBufferParameterui64vNV; - internal unsafe delegate* glGetBufferPointerv; - internal unsafe delegate* glGetBufferPointervARB; - internal unsafe delegate* glGetBufferSubData; - internal unsafe delegate* glGetBufferSubDataARB; - internal unsafe delegate* glGetClipPlanefOES; - internal unsafe delegate* glGetClipPlanexOES; - internal unsafe delegate* glGetColorTableEXT; - internal unsafe delegate* glGetColorTableParameterfvEXT; - internal unsafe delegate* glGetColorTableParameterfvSGI; - internal unsafe delegate* glGetColorTableParameterivEXT; - internal unsafe delegate* glGetColorTableParameterivSGI; - internal unsafe delegate* glGetColorTableSGI; - internal unsafe delegate* glGetCombinerInputParameterfvNV; - internal unsafe delegate* glGetCombinerInputParameterivNV; - internal unsafe delegate* glGetCombinerOutputParameterfvNV; - internal unsafe delegate* glGetCombinerOutputParameterivNV; - internal unsafe delegate* glGetCombinerStageParameterfvNV; - internal unsafe delegate* glGetCommandHeaderNV; - internal unsafe delegate* glGetCompressedMultiTexImageEXT; - internal unsafe delegate* glGetCompressedTexImage; - internal unsafe delegate* glGetCompressedTexImageARB; - internal unsafe delegate* glGetCompressedTextureImage; - internal unsafe delegate* glGetCompressedTextureImageEXT; - internal unsafe delegate* glGetCompressedTextureSubImage; - internal unsafe delegate* glGetConvolutionFilterEXT; - internal unsafe delegate* glGetConvolutionParameterfvEXT; - internal unsafe delegate* glGetConvolutionParameterivEXT; - internal unsafe delegate* glGetConvolutionParameterxvOES; - internal unsafe delegate* glGetCoverageModulationTableNV; - internal unsafe delegate* glGetDebugMessageLog; - internal unsafe delegate* glGetDebugMessageLogAMD; - internal unsafe delegate* glGetDebugMessageLogARB; - internal unsafe delegate* glGetDetailTexFuncSGIS; - internal unsafe delegate* glGetDoubleIndexedvEXT; + 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* glGetDoublei_vEXT; internal unsafe delegate* glGetDoublev; internal unsafe delegate* glGetError; - internal unsafe delegate* glGetFenceivNV; - internal unsafe delegate* glGetFinalCombinerInputParameterfvNV; - internal unsafe delegate* glGetFinalCombinerInputParameterivNV; - internal unsafe delegate* glGetFirstPerfQueryIdINTEL; - internal unsafe delegate* glGetFixedvOES; - internal unsafe delegate* glGetFloatIndexedvEXT; internal unsafe delegate* glGetFloati_v; - internal unsafe delegate* glGetFloati_vEXT; internal unsafe delegate* glGetFloatv; - internal unsafe delegate* glGetFogFuncSGIS; internal unsafe delegate* glGetFragDataIndex; internal unsafe delegate* glGetFragDataLocation; - internal unsafe delegate* glGetFragDataLocationEXT; - internal unsafe delegate* glGetFragmentLightfvSGIX; - internal unsafe delegate* glGetFragmentLightivSGIX; - internal unsafe delegate* glGetFragmentMaterialfvSGIX; - internal unsafe delegate* glGetFragmentMaterialivSGIX; internal unsafe delegate* glGetFramebufferAttachmentParameteriv; - internal unsafe delegate* glGetFramebufferAttachmentParameterivEXT; - internal unsafe delegate* glGetFramebufferParameterfvAMD; internal unsafe delegate* glGetFramebufferParameteriv; - internal unsafe delegate* glGetFramebufferParameterivEXT; - internal unsafe delegate* glGetFramebufferParameterivMESA; internal unsafe delegate* glGetGraphicsResetStatus; - internal unsafe delegate* glGetGraphicsResetStatusARB; - internal unsafe delegate* glGetHandleARB; - internal unsafe delegate* glGetHistogramEXT; - internal unsafe delegate* glGetHistogramParameterfvEXT; - internal unsafe delegate* glGetHistogramParameterivEXT; - internal unsafe delegate* glGetHistogramParameterxvOES; - internal unsafe delegate* glGetImageHandleARB; - internal unsafe delegate* glGetImageHandleNV; - internal unsafe delegate* glGetImageTransformParameterfvHP; - internal unsafe delegate* glGetImageTransformParameterivHP; - internal unsafe delegate* glGetInfoLogARB; - internal unsafe delegate* glGetInstrumentsSGIX; - internal unsafe delegate* glGetInteger64i_v; - internal unsafe delegate* glGetInteger64v; - internal unsafe delegate* glGetIntegerIndexedvEXT; + internal unsafe delegate* glGetInteger64i_v; + internal unsafe delegate* glGetInteger64v; internal unsafe delegate* glGetIntegeri_v; - internal unsafe delegate* glGetIntegerui64i_vNV; - internal unsafe delegate* glGetIntegerui64vNV; internal unsafe delegate* glGetIntegerv; - internal unsafe delegate* glGetInternalformatSampleivNV; - internal unsafe delegate* glGetInternalformati64v; - internal unsafe delegate* glGetInternalformativ; - internal unsafe delegate* glGetInvariantBooleanvEXT; - internal unsafe delegate* glGetInvariantFloatvEXT; - internal unsafe delegate* glGetInvariantIntegervEXT; - internal unsafe delegate* glGetLightxOES; - internal unsafe delegate* glGetListParameterfvSGIX; - internal unsafe delegate* glGetListParameterivSGIX; - internal unsafe delegate* glGetLocalConstantBooleanvEXT; - internal unsafe delegate* glGetLocalConstantFloatvEXT; - internal unsafe delegate* glGetLocalConstantIntegervEXT; - internal unsafe delegate* glGetMapAttribParameterfvNV; - internal unsafe delegate* glGetMapAttribParameterivNV; - internal unsafe delegate* glGetMapControlPointsNV; - internal unsafe delegate* glGetMapParameterfvNV; - internal unsafe delegate* glGetMapParameterivNV; - internal unsafe delegate* glGetMapxvOES; - internal unsafe delegate* glGetMaterialxOES; - internal unsafe delegate* glGetMemoryObjectDetachedResourcesuivNV; - internal unsafe delegate* glGetMemoryObjectParameterivEXT; - internal unsafe delegate* glGetMinmaxEXT; - internal unsafe delegate* glGetMinmaxParameterfvEXT; - internal unsafe delegate* glGetMinmaxParameterivEXT; - internal unsafe delegate* glGetMultiTexEnvfvEXT; - internal unsafe delegate* glGetMultiTexEnvivEXT; - internal unsafe delegate* glGetMultiTexGendvEXT; - internal unsafe delegate* glGetMultiTexGenfvEXT; - internal unsafe delegate* glGetMultiTexGenivEXT; - internal unsafe delegate* glGetMultiTexImageEXT; - internal unsafe delegate* glGetMultiTexLevelParameterfvEXT; - internal unsafe delegate* glGetMultiTexLevelParameterivEXT; - internal unsafe delegate* glGetMultiTexParameterIivEXT; - internal unsafe delegate* glGetMultiTexParameterIuivEXT; - internal unsafe delegate* glGetMultiTexParameterfvEXT; - internal unsafe delegate* glGetMultiTexParameterivEXT; + internal unsafe delegate* glGetInternalformati64v; + internal unsafe delegate* glGetInternalformativ; internal unsafe delegate* glGetMultisamplefv; - internal unsafe delegate* glGetMultisamplefvNV; - internal unsafe delegate* glGetNamedBufferParameteri64v; + internal unsafe delegate* glGetNamedBufferParameteri64v; internal unsafe delegate* glGetNamedBufferParameteriv; - internal unsafe delegate* glGetNamedBufferParameterivEXT; - internal unsafe delegate* glGetNamedBufferParameterui64vNV; - internal unsafe delegate* glGetNamedBufferPointerv; - internal unsafe delegate* glGetNamedBufferPointervEXT; - internal unsafe delegate* glGetNamedBufferSubData; - internal unsafe delegate* glGetNamedBufferSubDataEXT; + internal unsafe delegate* glGetNamedBufferPointerv; + internal unsafe delegate* glGetNamedBufferSubData; internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; - internal unsafe delegate* glGetNamedFramebufferAttachmentParameterivEXT; - internal unsafe delegate* glGetNamedFramebufferParameterfvAMD; internal unsafe delegate* glGetNamedFramebufferParameteriv; - internal unsafe delegate* glGetNamedFramebufferParameterivEXT; - internal unsafe delegate* glGetNamedProgramLocalParameterIivEXT; - internal unsafe delegate* glGetNamedProgramLocalParameterIuivEXT; - internal unsafe delegate* glGetNamedProgramLocalParameterdvEXT; - internal unsafe delegate* glGetNamedProgramLocalParameterfvEXT; - internal unsafe delegate* glGetNamedProgramStringEXT; - internal unsafe delegate* glGetNamedProgramivEXT; internal unsafe delegate* glGetNamedRenderbufferParameteriv; - internal unsafe delegate* glGetNamedRenderbufferParameterivEXT; - internal unsafe delegate* glGetNamedStringARB; - internal unsafe delegate* glGetNamedStringivARB; - internal unsafe delegate* glGetNextPerfQueryIdINTEL; - internal unsafe delegate* glGetObjectBufferfvATI; - internal unsafe delegate* glGetObjectBufferivATI; - internal unsafe delegate* glGetObjectLabel; - internal unsafe delegate* glGetObjectLabelEXT; - internal unsafe delegate* glGetObjectParameterfvARB; - internal unsafe delegate* glGetObjectParameterivAPPLE; - internal unsafe delegate* glGetObjectParameterivARB; - internal unsafe delegate* glGetObjectPtrLabel; - internal unsafe delegate* glGetOcclusionQueryivNV; - internal unsafe delegate* glGetOcclusionQueryuivNV; - internal unsafe delegate* glGetPathCommandsNV; - internal unsafe delegate* glGetPathCoordsNV; - internal unsafe delegate* glGetPathDashArrayNV; - internal unsafe delegate* glGetPathLengthNV; - internal unsafe delegate* glGetPathMetricRangeNV; - internal unsafe delegate* glGetPathMetricsNV; - internal unsafe delegate* glGetPathParameterfvNV; - internal unsafe delegate* glGetPathParameterivNV; - internal unsafe delegate* glGetPathSpacingNV; - internal unsafe delegate* glGetPerfCounterInfoINTEL; - internal unsafe delegate* glGetPerfMonitorCounterDataAMD; - internal unsafe delegate* glGetPerfMonitorCounterInfoAMD; - internal unsafe delegate* glGetPerfMonitorCounterStringAMD; - internal unsafe delegate* glGetPerfMonitorCountersAMD; - internal unsafe delegate* glGetPerfMonitorGroupStringAMD; - internal unsafe delegate* glGetPerfMonitorGroupsAMD; - internal unsafe delegate* glGetPerfQueryDataINTEL; - internal unsafe delegate* glGetPerfQueryIdByNameINTEL; - internal unsafe delegate* glGetPerfQueryInfoINTEL; - internal unsafe delegate* glGetPixelMapxv; - internal unsafe delegate* glGetPixelTexGenParameterfvSGIS; - internal unsafe delegate* glGetPixelTexGenParameterivSGIS; - internal unsafe delegate* glGetPixelTransformParameterfvEXT; - internal unsafe delegate* glGetPixelTransformParameterivEXT; - internal unsafe delegate* glGetPointerIndexedvEXT; - internal unsafe delegate* glGetPointeri_vEXT; - internal unsafe delegate* glGetPointerv; - internal unsafe delegate* glGetPointervEXT; - internal unsafe delegate* glGetProgramBinary; - internal unsafe delegate* glGetProgramEnvParameterIivNV; - internal unsafe delegate* glGetProgramEnvParameterIuivNV; - internal unsafe delegate* glGetProgramEnvParameterdvARB; - internal unsafe delegate* glGetProgramEnvParameterfvARB; - internal unsafe delegate* glGetProgramInfoLog; + 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* glGetObjectLabel; + internal unsafe delegate* glGetObjectPtrLabel; + internal unsafe delegate* glGetPointerv; + internal unsafe delegate* glGetProgramBinary; + internal unsafe delegate* glGetProgramInfoLog; internal unsafe delegate* glGetProgramInterfaceiv; - internal unsafe delegate* glGetProgramLocalParameterIivNV; - internal unsafe delegate* glGetProgramLocalParameterIuivNV; - internal unsafe delegate* glGetProgramLocalParameterdvARB; - internal unsafe delegate* glGetProgramLocalParameterfvARB; - internal unsafe delegate* glGetProgramNamedParameterdvNV; - internal unsafe delegate* glGetProgramNamedParameterfvNV; - internal unsafe delegate* glGetProgramParameterdvNV; - internal unsafe delegate* glGetProgramParameterfvNV; - internal unsafe delegate* glGetProgramPipelineInfoLog; + internal unsafe delegate* glGetProgramiv; + internal unsafe delegate* glGetProgramPipelineInfoLog; internal unsafe delegate* glGetProgramPipelineiv; internal unsafe delegate* glGetProgramResourceIndex; + internal unsafe delegate* glGetProgramResourceiv; internal unsafe delegate* glGetProgramResourceLocation; internal unsafe delegate* glGetProgramResourceLocationIndex; - internal unsafe delegate* glGetProgramResourceName; - internal unsafe delegate* glGetProgramResourcefvNV; - internal unsafe delegate* glGetProgramResourceiv; + internal unsafe delegate* glGetProgramResourceName; internal unsafe delegate* glGetProgramStageiv; - internal unsafe delegate* glGetProgramStringARB; - internal unsafe delegate* glGetProgramStringNV; - internal unsafe delegate* glGetProgramSubroutineParameteruivNV; - internal unsafe delegate* glGetProgramiv; - internal unsafe delegate* glGetProgramivARB; - internal unsafe delegate* glGetProgramivNV; - internal unsafe delegate* glGetQueryBufferObjecti64v; - internal unsafe delegate* glGetQueryBufferObjectiv; - internal unsafe delegate* glGetQueryBufferObjectui64v; - internal unsafe delegate* glGetQueryBufferObjectuiv; + 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* glGetQueryObjecti64vEXT; - internal unsafe delegate* glGetQueryObjectiv; - internal unsafe delegate* glGetQueryObjectivARB; - internal unsafe delegate* glGetQueryObjectui64v; - internal unsafe delegate* glGetQueryObjectui64vEXT; - internal unsafe delegate* glGetQueryObjectuiv; - internal unsafe delegate* glGetQueryObjectuivARB; internal unsafe delegate* glGetQueryiv; - internal unsafe delegate* glGetQueryivARB; + internal unsafe delegate* glGetQueryObjecti64v; + internal unsafe delegate* glGetQueryObjectiv; + internal unsafe delegate* glGetQueryObjectui64v; + internal unsafe delegate* glGetQueryObjectuiv; internal unsafe delegate* glGetRenderbufferParameteriv; - internal unsafe delegate* glGetRenderbufferParameterivEXT; + internal unsafe delegate* glGetSamplerParameterfv; internal unsafe delegate* glGetSamplerParameterIiv; internal unsafe delegate* glGetSamplerParameterIuiv; - internal unsafe delegate* glGetSamplerParameterfv; internal unsafe delegate* glGetSamplerParameteriv; - internal unsafe delegate* glGetSemaphoreParameterivNV; - internal unsafe delegate* glGetSemaphoreParameterui64vEXT; - internal unsafe delegate* glGetSeparableFilterEXT; - internal unsafe delegate* glGetShaderInfoLog; - internal unsafe delegate* glGetShaderPrecisionFormat; - internal unsafe delegate* glGetShaderSource; - internal unsafe delegate* glGetShaderSourceARB; + internal unsafe delegate* glGetShaderInfoLog; internal unsafe delegate* glGetShaderiv; - internal unsafe delegate* glGetShadingRateImagePaletteNV; - internal unsafe delegate* glGetShadingRateSampleLocationivNV; - internal unsafe delegate* glGetSharpenTexFuncSGIS; - internal unsafe delegate* glGetStageIndexNV; - internal unsafe delegate* glGetString; + internal unsafe delegate* glGetShaderPrecisionFormat; + internal unsafe delegate* glGetShaderSource; + internal unsafe delegate* glGetString; internal unsafe delegate* glGetStringi; internal unsafe delegate* glGetSubroutineIndex; internal unsafe delegate* glGetSubroutineUniformLocation; - internal unsafe delegate* glGetSynciv; - internal unsafe delegate* glGetTexBumpParameterfvATI; - internal unsafe delegate* glGetTexBumpParameterivATI; - internal unsafe delegate* glGetTexEnvxvOES; - internal unsafe delegate* glGetTexFilterFuncSGIS; - internal unsafe delegate* glGetTexGenxvOES; - internal unsafe delegate* glGetTexImage; + internal unsafe delegate* glGetSynciv; + internal unsafe delegate* glGetTexImage; internal unsafe delegate* glGetTexLevelParameterfv; internal unsafe delegate* glGetTexLevelParameteriv; - internal unsafe delegate* glGetTexLevelParameterxvOES; - internal unsafe delegate* glGetTexParameterIiv; - internal unsafe delegate* glGetTexParameterIivEXT; - internal unsafe delegate* glGetTexParameterIuiv; - internal unsafe delegate* glGetTexParameterIuivEXT; - internal unsafe delegate* glGetTexParameterPointervAPPLE; internal unsafe delegate* glGetTexParameterfv; + internal unsafe delegate* glGetTexParameterIiv; + internal unsafe delegate* glGetTexParameterIuiv; internal unsafe delegate* glGetTexParameteriv; - internal unsafe delegate* glGetTexParameterxvOES; - internal unsafe delegate* glGetTextureHandleARB; - internal unsafe delegate* glGetTextureHandleNV; - internal unsafe delegate* glGetTextureImage; - internal unsafe delegate* glGetTextureImageEXT; + internal unsafe delegate* glGetTextureImage; internal unsafe delegate* glGetTextureLevelParameterfv; - internal unsafe delegate* glGetTextureLevelParameterfvEXT; internal unsafe delegate* glGetTextureLevelParameteriv; - internal unsafe delegate* glGetTextureLevelParameterivEXT; - internal unsafe delegate* glGetTextureParameterIiv; - internal unsafe delegate* glGetTextureParameterIivEXT; - internal unsafe delegate* glGetTextureParameterIuiv; - internal unsafe delegate* glGetTextureParameterIuivEXT; internal unsafe delegate* glGetTextureParameterfv; - internal unsafe delegate* glGetTextureParameterfvEXT; + internal unsafe delegate* glGetTextureParameterIiv; + internal unsafe delegate* glGetTextureParameterIuiv; internal unsafe delegate* glGetTextureParameteriv; - internal unsafe delegate* glGetTextureParameterivEXT; - internal unsafe delegate* glGetTextureSamplerHandleARB; - internal unsafe delegate* glGetTextureSamplerHandleNV; - internal unsafe delegate* glGetTextureSubImage; - internal unsafe delegate* glGetTrackMatrixivNV; - internal unsafe delegate* glGetTransformFeedbackVarying; - internal unsafe delegate* glGetTransformFeedbackVaryingEXT; - internal unsafe delegate* glGetTransformFeedbackVaryingNV; - internal unsafe delegate* glGetTransformFeedbacki64_v; + internal unsafe delegate* glGetTextureSubImage; internal unsafe delegate* glGetTransformFeedbacki_v; + internal unsafe delegate* glGetTransformFeedbacki64_v; internal unsafe delegate* glGetTransformFeedbackiv; + internal unsafe delegate* glGetTransformFeedbackVarying; internal unsafe delegate* glGetUniformBlockIndex; - internal unsafe delegate* glGetUniformBufferSizeEXT; - internal unsafe delegate* glGetUniformIndices; - internal unsafe delegate* glGetUniformLocation; - internal unsafe delegate* glGetUniformLocationARB; - internal unsafe delegate* glGetUniformOffsetEXT; - internal unsafe delegate* glGetUniformSubroutineuiv; internal unsafe delegate* glGetUniformdv; internal unsafe delegate* glGetUniformfv; - internal unsafe delegate* glGetUniformfvARB; - internal unsafe delegate* glGetUniformi64vARB; - internal unsafe delegate* glGetUniformi64vNV; + internal unsafe delegate* glGetUniformIndices; internal unsafe delegate* glGetUniformiv; - internal unsafe delegate* glGetUniformivARB; - internal unsafe delegate* glGetUniformui64vARB; - internal unsafe delegate* glGetUniformui64vNV; + internal unsafe delegate* glGetUniformLocation; + internal unsafe delegate* glGetUniformSubroutineuiv; internal unsafe delegate* glGetUniformuiv; - internal unsafe delegate* glGetUniformuivEXT; - internal unsafe delegate* glGetUnsignedBytei_vEXT; - internal unsafe delegate* glGetUnsignedBytevEXT; - internal unsafe delegate* glGetVariantArrayObjectfvATI; - internal unsafe delegate* glGetVariantArrayObjectivATI; - internal unsafe delegate* glGetVariantBooleanvEXT; - internal unsafe delegate* glGetVariantFloatvEXT; - internal unsafe delegate* glGetVariantIntegervEXT; - internal unsafe delegate* glGetVariantPointervEXT; - internal unsafe delegate* glGetVaryingLocationNV; - internal unsafe delegate* glGetVertexArrayIndexed64iv; + internal unsafe delegate* glGetVertexArrayIndexed64iv; internal unsafe delegate* glGetVertexArrayIndexediv; - internal unsafe delegate* glGetVertexArrayIntegeri_vEXT; - internal unsafe delegate* glGetVertexArrayIntegervEXT; - internal unsafe delegate* glGetVertexArrayPointeri_vEXT; - internal unsafe delegate* glGetVertexArrayPointervEXT; internal unsafe delegate* glGetVertexArrayiv; - internal unsafe delegate* glGetVertexAttribArrayObjectfvATI; - internal unsafe delegate* glGetVertexAttribArrayObjectivATI; - internal unsafe delegate* glGetVertexAttribIiv; - internal unsafe delegate* glGetVertexAttribIivEXT; - internal unsafe delegate* glGetVertexAttribIuiv; - internal unsafe delegate* glGetVertexAttribIuivEXT; - internal unsafe delegate* glGetVertexAttribLdv; - internal unsafe delegate* glGetVertexAttribLdvEXT; - internal unsafe delegate* glGetVertexAttribLi64vNV; - internal unsafe delegate* glGetVertexAttribLui64vARB; - internal unsafe delegate* glGetVertexAttribLui64vNV; - internal unsafe delegate* glGetVertexAttribPointerv; - internal unsafe delegate* glGetVertexAttribPointervARB; - internal unsafe delegate* glGetVertexAttribPointervNV; internal unsafe delegate* glGetVertexAttribdv; - internal unsafe delegate* glGetVertexAttribdvARB; - internal unsafe delegate* glGetVertexAttribdvNV; internal unsafe delegate* glGetVertexAttribfv; - internal unsafe delegate* glGetVertexAttribfvARB; - internal unsafe delegate* glGetVertexAttribfvNV; + internal unsafe delegate* glGetVertexAttribIiv; + internal unsafe delegate* glGetVertexAttribIuiv; internal unsafe delegate* glGetVertexAttribiv; - internal unsafe delegate* glGetVertexAttribivARB; - internal unsafe delegate* glGetVertexAttribivNV; - internal unsafe delegate* glGetVideoCaptureStreamdvNV; - internal unsafe delegate* glGetVideoCaptureStreamfvNV; - internal unsafe delegate* glGetVideoCaptureStreamivNV; - internal unsafe delegate* glGetVideoCaptureivNV; - internal unsafe delegate* glGetVideoi64vNV; - internal unsafe delegate* glGetVideoivNV; - internal unsafe delegate* glGetVideoui64vNV; - internal unsafe delegate* glGetVideouivNV; - internal unsafe delegate* glGetVkProcAddrNV; - internal unsafe delegate* glGetnCompressedTexImage; - internal unsafe delegate* glGetnCompressedTexImageARB; - internal unsafe delegate* glGetnTexImage; - internal unsafe delegate* glGetnTexImageARB; - internal unsafe delegate* glGetnUniformdv; - internal unsafe delegate* glGetnUniformdvARB; - internal unsafe delegate* glGetnUniformfv; - internal unsafe delegate* glGetnUniformfvARB; - internal unsafe delegate* glGetnUniformi64vARB; - internal unsafe delegate* glGetnUniformiv; - internal unsafe delegate* glGetnUniformivARB; - internal unsafe delegate* glGetnUniformui64vARB; - internal unsafe delegate* glGetnUniformuiv; - internal unsafe delegate* glGetnUniformuivARB; - internal unsafe delegate* glGlobalAlphaFactorbSUN; - internal unsafe delegate* glGlobalAlphaFactordSUN; - internal unsafe delegate* glGlobalAlphaFactorfSUN; - internal unsafe delegate* glGlobalAlphaFactoriSUN; - internal unsafe delegate* glGlobalAlphaFactorsSUN; - internal unsafe delegate* glGlobalAlphaFactorubSUN; - internal unsafe delegate* glGlobalAlphaFactoruiSUN; - internal unsafe delegate* glGlobalAlphaFactorusSUN; + internal unsafe delegate* glGetVertexAttribLdv; + internal unsafe delegate* glGetVertexAttribPointerv; internal unsafe delegate* glHint; - internal unsafe delegate* glHintPGI; - internal unsafe delegate* glHistogramEXT; - internal unsafe delegate* glIglooInterfaceSGIX; - internal unsafe delegate* glImageTransformParameterfHP; - internal unsafe delegate* glImageTransformParameterfvHP; - internal unsafe delegate* glImageTransformParameteriHP; - internal unsafe delegate* glImageTransformParameterivHP; - internal unsafe delegate* glImportMemoryFdEXT; - internal unsafe delegate* glImportMemoryWin32HandleEXT; - internal unsafe delegate* glImportMemoryWin32NameEXT; - internal unsafe delegate* glImportSemaphoreFdEXT; - internal unsafe delegate* glImportSemaphoreWin32HandleEXT; - internal unsafe delegate* glImportSemaphoreWin32NameEXT; - internal unsafe delegate* glImportSyncEXT; - internal unsafe delegate* glIndexFormatNV; - internal unsafe delegate* glIndexFuncEXT; - internal unsafe delegate* glIndexMaterialEXT; - internal unsafe delegate* glIndexPointerEXT; - internal unsafe delegate* glIndexPointerListIBM; - internal unsafe delegate* glIndexxOES; - internal unsafe delegate* glIndexxvOES; - internal unsafe delegate* glInsertComponentEXT; - internal unsafe delegate* glInsertEventMarkerEXT; - internal unsafe delegate* glInstrumentsBufferSGIX; - internal unsafe delegate* glInterpolatePathsNV; 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* 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* glIsAsyncMarkerSGIX; - internal unsafe delegate* glIsBuffer; - internal unsafe delegate* glIsBufferARB; - internal unsafe delegate* glIsBufferResidentNV; - internal unsafe delegate* glIsCommandListNV; - internal unsafe delegate* glIsEnabled; - internal unsafe delegate* glIsEnabledIndexedEXT; - internal unsafe delegate* glIsEnabledi; - internal unsafe delegate* glIsFenceAPPLE; - internal unsafe delegate* glIsFenceNV; - internal unsafe delegate* glIsFramebuffer; - internal unsafe delegate* glIsFramebufferEXT; - internal unsafe delegate* glIsImageHandleResidentARB; - internal unsafe delegate* glIsImageHandleResidentNV; - internal unsafe delegate* glIsMemoryObjectEXT; - internal unsafe delegate* glIsNameAMD; - internal unsafe delegate* glIsNamedBufferResidentNV; - internal unsafe delegate* glIsNamedStringARB; - internal unsafe delegate* glIsObjectBufferATI; - internal unsafe delegate* glIsOcclusionQueryNV; - internal unsafe delegate* glIsPathNV; - internal unsafe delegate* glIsPointInFillPathNV; - internal unsafe delegate* glIsPointInStrokePathNV; - internal unsafe delegate* glIsProgram; - internal unsafe delegate* glIsProgramARB; - internal unsafe delegate* glIsProgramNV; - internal unsafe delegate* glIsProgramPipeline; - internal unsafe delegate* glIsQuery; - internal unsafe delegate* glIsQueryARB; - internal unsafe delegate* glIsRenderbuffer; - internal unsafe delegate* glIsRenderbufferEXT; - internal unsafe delegate* glIsSampler; - internal unsafe delegate* glIsSemaphoreEXT; - internal unsafe delegate* glIsShader; - internal unsafe delegate* glIsStateNV; - internal unsafe delegate* glIsSync; - internal unsafe delegate* glIsTexture; - internal unsafe delegate* glIsTextureEXT; - internal unsafe delegate* glIsTextureHandleResidentARB; - internal unsafe delegate* glIsTextureHandleResidentNV; - internal unsafe delegate* glIsTransformFeedback; - internal unsafe delegate* glIsTransformFeedbackNV; - internal unsafe delegate* glIsVariantEnabledEXT; - internal unsafe delegate* glIsVertexArray; - internal unsafe delegate* glIsVertexArrayAPPLE; - internal unsafe delegate* glIsVertexAttribEnabledAPPLE; - internal unsafe delegate* glLGPUCopyImageSubDataNVX; - internal unsafe delegate* glLGPUInterlockNVX; - internal unsafe delegate* glLGPUNamedBufferSubDataNVX; - internal unsafe delegate* glLabelObjectEXT; - internal unsafe delegate* glLightEnviSGIX; - internal unsafe delegate* glLightModelxOES; - internal unsafe delegate* glLightModelxvOES; - internal unsafe delegate* glLightxOES; - internal unsafe delegate* glLightxvOES; + 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* glLineWidthxOES; internal unsafe delegate* glLinkProgram; - internal unsafe delegate* glLinkProgramARB; - internal unsafe delegate* glListDrawCommandsStatesClientNV; - internal unsafe delegate* glListParameterfSGIX; - internal unsafe delegate* glListParameterfvSGIX; - internal unsafe delegate* glListParameteriSGIX; - internal unsafe delegate* glListParameterivSGIX; - internal unsafe delegate* glLoadIdentityDeformationMapSGIX; - internal unsafe delegate* glLoadMatrixxOES; - internal unsafe delegate* glLoadProgramNV; - internal unsafe delegate* glLoadTransposeMatrixdARB; - internal unsafe delegate* glLoadTransposeMatrixfARB; - internal unsafe delegate* glLoadTransposeMatrixxOES; - internal unsafe delegate* glLockArraysEXT; internal unsafe delegate* glLogicOp; - internal unsafe delegate* glMakeBufferNonResidentNV; - internal unsafe delegate* glMakeBufferResidentNV; - internal unsafe delegate* glMakeImageHandleNonResidentARB; - internal unsafe delegate* glMakeImageHandleNonResidentNV; - internal unsafe delegate* glMakeImageHandleResidentARB; - internal unsafe delegate* glMakeImageHandleResidentNV; - internal unsafe delegate* glMakeNamedBufferNonResidentNV; - internal unsafe delegate* glMakeNamedBufferResidentNV; - internal unsafe delegate* glMakeTextureHandleNonResidentARB; - internal unsafe delegate* glMakeTextureHandleNonResidentNV; - internal unsafe delegate* glMakeTextureHandleResidentARB; - internal unsafe delegate* glMakeTextureHandleResidentNV; - internal unsafe delegate* glMap1xOES; - internal unsafe delegate* glMap2xOES; internal unsafe delegate* glMapBuffer; - internal unsafe delegate* glMapBufferARB; - internal unsafe delegate* glMapBufferRange; - internal unsafe delegate* glMapControlPointsNV; - internal unsafe delegate* glMapGrid1xOES; - internal unsafe delegate* glMapGrid2xOES; + internal unsafe delegate* glMapBufferRange; internal unsafe delegate* glMapNamedBuffer; - internal unsafe delegate* glMapNamedBufferEXT; - internal unsafe delegate* glMapNamedBufferRange; - internal unsafe delegate* glMapNamedBufferRangeEXT; - internal unsafe delegate* glMapObjectBufferATI; - internal unsafe delegate* glMapParameterfvNV; - internal unsafe delegate* glMapParameterivNV; - internal unsafe delegate* glMapTexture2DINTEL; - internal unsafe delegate* glMapVertexAttrib1dAPPLE; - internal unsafe delegate* glMapVertexAttrib1fAPPLE; - internal unsafe delegate* glMapVertexAttrib2dAPPLE; - internal unsafe delegate* glMapVertexAttrib2fAPPLE; - internal unsafe delegate* glMaterialxOES; - internal unsafe delegate* glMaterialxvOES; - internal unsafe delegate* glMatrixFrustumEXT; - internal unsafe delegate* glMatrixIndexPointerARB; - internal unsafe delegate* glMatrixIndexubvARB; - internal unsafe delegate* glMatrixIndexuivARB; - internal unsafe delegate* glMatrixIndexusvARB; - internal unsafe delegate* glMatrixLoad3x2fNV; - internal unsafe delegate* glMatrixLoad3x3fNV; - internal unsafe delegate* glMatrixLoadIdentityEXT; - internal unsafe delegate* glMatrixLoadTranspose3x3fNV; - internal unsafe delegate* glMatrixLoadTransposedEXT; - internal unsafe delegate* glMatrixLoadTransposefEXT; - internal unsafe delegate* glMatrixLoaddEXT; - internal unsafe delegate* glMatrixLoadfEXT; - internal unsafe delegate* glMatrixMult3x2fNV; - internal unsafe delegate* glMatrixMult3x3fNV; - internal unsafe delegate* glMatrixMultTranspose3x3fNV; - internal unsafe delegate* glMatrixMultTransposedEXT; - internal unsafe delegate* glMatrixMultTransposefEXT; - internal unsafe delegate* glMatrixMultdEXT; - internal unsafe delegate* glMatrixMultfEXT; - internal unsafe delegate* glMatrixOrthoEXT; - internal unsafe delegate* glMatrixPopEXT; - internal unsafe delegate* glMatrixPushEXT; - internal unsafe delegate* glMatrixRotatedEXT; - internal unsafe delegate* glMatrixRotatefEXT; - internal unsafe delegate* glMatrixScaledEXT; - internal unsafe delegate* glMatrixScalefEXT; - internal unsafe delegate* glMatrixTranslatedEXT; - internal unsafe delegate* glMatrixTranslatefEXT; - internal unsafe delegate* glMaxShaderCompilerThreadsARB; - internal unsafe delegate* glMaxShaderCompilerThreadsKHR; + internal unsafe delegate* glMapNamedBufferRange; internal unsafe delegate* glMemoryBarrier; internal unsafe delegate* glMemoryBarrierByRegion; - internal unsafe delegate* glMemoryBarrierEXT; - internal unsafe delegate* glMemoryObjectParameterivEXT; internal unsafe delegate* glMinSampleShading; - internal unsafe delegate* glMinSampleShadingARB; - internal unsafe delegate* glMinmaxEXT; - internal unsafe delegate* glMultMatrixxOES; - internal unsafe delegate* glMultTransposeMatrixdARB; - internal unsafe delegate* glMultTransposeMatrixfARB; - internal unsafe delegate* glMultTransposeMatrixxOES; - internal unsafe delegate* glMultiDrawArrays; - internal unsafe delegate* glMultiDrawArraysEXT; - internal unsafe delegate* glMultiDrawArraysIndirect; - internal unsafe delegate* glMultiDrawArraysIndirectAMD; - internal unsafe delegate* glMultiDrawArraysIndirectBindlessCountNV; - internal unsafe delegate* glMultiDrawArraysIndirectBindlessNV; - internal unsafe delegate* glMultiDrawArraysIndirectCount; - internal unsafe delegate* glMultiDrawArraysIndirectCountARB; - internal unsafe delegate* glMultiDrawElementArrayAPPLE; - internal unsafe delegate* glMultiDrawElements; - internal unsafe delegate* glMultiDrawElementsBaseVertex; - internal unsafe delegate* glMultiDrawElementsEXT; - internal unsafe delegate* glMultiDrawElementsIndirect; - internal unsafe delegate* glMultiDrawElementsIndirectAMD; - internal unsafe delegate* glMultiDrawElementsIndirectBindlessCountNV; - internal unsafe delegate* glMultiDrawElementsIndirectBindlessNV; - internal unsafe delegate* glMultiDrawElementsIndirectCount; - internal unsafe delegate* glMultiDrawElementsIndirectCountARB; - internal unsafe delegate* glMultiDrawMeshTasksIndirectCountNV; - internal unsafe delegate* glMultiDrawMeshTasksIndirectNV; - internal unsafe delegate* glMultiDrawRangeElementArrayAPPLE; - internal unsafe delegate* glMultiModeDrawArraysIBM; - internal unsafe delegate* glMultiModeDrawElementsIBM; - internal unsafe delegate* glMultiTexBufferEXT; - internal unsafe delegate* glMultiTexCoord1bOES; - internal unsafe delegate* glMultiTexCoord1bvOES; - internal unsafe delegate* glMultiTexCoord1dARB; - internal unsafe delegate* glMultiTexCoord1dvARB; - internal unsafe delegate* glMultiTexCoord1fARB; - internal unsafe delegate* glMultiTexCoord1fvARB; - internal unsafe delegate* glMultiTexCoord1hNV; - internal unsafe delegate* glMultiTexCoord1hvNV; - internal unsafe delegate* glMultiTexCoord1iARB; - internal unsafe delegate* glMultiTexCoord1ivARB; - internal unsafe delegate* glMultiTexCoord1sARB; - internal unsafe delegate* glMultiTexCoord1svARB; - internal unsafe delegate* glMultiTexCoord1xOES; - internal unsafe delegate* glMultiTexCoord1xvOES; - internal unsafe delegate* glMultiTexCoord2bOES; - internal unsafe delegate* glMultiTexCoord2bvOES; - internal unsafe delegate* glMultiTexCoord2dARB; - internal unsafe delegate* glMultiTexCoord2dvARB; - internal unsafe delegate* glMultiTexCoord2fARB; - internal unsafe delegate* glMultiTexCoord2fvARB; - internal unsafe delegate* glMultiTexCoord2hNV; - internal unsafe delegate* glMultiTexCoord2hvNV; - internal unsafe delegate* glMultiTexCoord2iARB; - internal unsafe delegate* glMultiTexCoord2ivARB; - internal unsafe delegate* glMultiTexCoord2sARB; - internal unsafe delegate* glMultiTexCoord2svARB; - internal unsafe delegate* glMultiTexCoord2xOES; - internal unsafe delegate* glMultiTexCoord2xvOES; - internal unsafe delegate* glMultiTexCoord3bOES; - internal unsafe delegate* glMultiTexCoord3bvOES; - internal unsafe delegate* glMultiTexCoord3dARB; - internal unsafe delegate* glMultiTexCoord3dvARB; - internal unsafe delegate* glMultiTexCoord3fARB; - internal unsafe delegate* glMultiTexCoord3fvARB; - internal unsafe delegate* glMultiTexCoord3hNV; - internal unsafe delegate* glMultiTexCoord3hvNV; - internal unsafe delegate* glMultiTexCoord3iARB; - internal unsafe delegate* glMultiTexCoord3ivARB; - internal unsafe delegate* glMultiTexCoord3sARB; - internal unsafe delegate* glMultiTexCoord3svARB; - internal unsafe delegate* glMultiTexCoord3xOES; - internal unsafe delegate* glMultiTexCoord3xvOES; - internal unsafe delegate* glMultiTexCoord4bOES; - internal unsafe delegate* glMultiTexCoord4bvOES; - internal unsafe delegate* glMultiTexCoord4dARB; - internal unsafe delegate* glMultiTexCoord4dvARB; - internal unsafe delegate* glMultiTexCoord4fARB; - internal unsafe delegate* glMultiTexCoord4fvARB; - internal unsafe delegate* glMultiTexCoord4hNV; - internal unsafe delegate* glMultiTexCoord4hvNV; - internal unsafe delegate* glMultiTexCoord4iARB; - internal unsafe delegate* glMultiTexCoord4ivARB; - internal unsafe delegate* glMultiTexCoord4sARB; - internal unsafe delegate* glMultiTexCoord4svARB; - internal unsafe delegate* glMultiTexCoord4xOES; - internal unsafe delegate* glMultiTexCoord4xvOES; - internal unsafe delegate* glMultiTexCoordPointerEXT; - internal unsafe delegate* glMultiTexEnvfEXT; - internal unsafe delegate* glMultiTexEnvfvEXT; - internal unsafe delegate* glMultiTexEnviEXT; - internal unsafe delegate* glMultiTexEnvivEXT; - internal unsafe delegate* glMultiTexGendEXT; - internal unsafe delegate* glMultiTexGendvEXT; - internal unsafe delegate* glMultiTexGenfEXT; - internal unsafe delegate* glMultiTexGenfvEXT; - internal unsafe delegate* glMultiTexGeniEXT; - internal unsafe delegate* glMultiTexGenivEXT; - internal unsafe delegate* glMultiTexImage1DEXT; - internal unsafe delegate* glMultiTexImage2DEXT; - internal unsafe delegate* glMultiTexImage3DEXT; - internal unsafe delegate* glMultiTexParameterIivEXT; - internal unsafe delegate* glMultiTexParameterIuivEXT; - internal unsafe delegate* glMultiTexParameterfEXT; - internal unsafe delegate* glMultiTexParameterfvEXT; - internal unsafe delegate* glMultiTexParameteriEXT; - internal unsafe delegate* glMultiTexParameterivEXT; - internal unsafe delegate* glMultiTexRenderbufferEXT; - internal unsafe delegate* glMultiTexSubImage1DEXT; - internal unsafe delegate* glMultiTexSubImage2DEXT; - internal unsafe delegate* glMultiTexSubImage3DEXT; - internal unsafe delegate* glMulticastBarrierNV; - internal unsafe delegate* glMulticastBlitFramebufferNV; - internal unsafe delegate* glMulticastBufferSubDataNV; - internal unsafe delegate* glMulticastCopyBufferSubDataNV; - internal unsafe delegate* glMulticastCopyImageSubDataNV; - internal unsafe delegate* glMulticastFramebufferSampleLocationsfvNV; - internal unsafe delegate* glMulticastGetQueryObjecti64vNV; - internal unsafe delegate* glMulticastGetQueryObjectivNV; - internal unsafe delegate* glMulticastGetQueryObjectui64vNV; - internal unsafe delegate* glMulticastGetQueryObjectuivNV; - internal unsafe delegate* glMulticastScissorArrayvNVX; - internal unsafe delegate* glMulticastViewportArrayvNVX; - internal unsafe delegate* glMulticastViewportPositionWScaleNVX; - internal unsafe delegate* glMulticastWaitSyncNV; - internal unsafe delegate* glNamedBufferAttachMemoryNV; - internal unsafe delegate* glNamedBufferData; - internal unsafe delegate* glNamedBufferDataEXT; - internal unsafe delegate* glNamedBufferPageCommitmentARB; - internal unsafe delegate* glNamedBufferPageCommitmentEXT; - internal unsafe delegate* glNamedBufferPageCommitmentMemNV; - internal unsafe delegate* glNamedBufferStorage; - internal unsafe delegate* glNamedBufferStorageEXT; - [Obsolete("Param type uncertain", true)] internal unsafe delegate* glNamedBufferStorageExternalEXT; - internal unsafe delegate* glNamedBufferStorageMemEXT; - internal unsafe delegate* glNamedBufferSubData; - internal unsafe delegate* glNamedBufferSubDataEXT; - internal unsafe delegate* glNamedCopyBufferSubDataEXT; + 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* glNamedFramebufferDrawBuffers; internal unsafe delegate* glNamedFramebufferParameteri; - internal unsafe delegate* glNamedFramebufferParameteriEXT; internal unsafe delegate* glNamedFramebufferReadBuffer; internal unsafe delegate* glNamedFramebufferRenderbuffer; - internal unsafe delegate* glNamedFramebufferRenderbufferEXT; - internal unsafe delegate* glNamedFramebufferSampleLocationsfvARB; - internal unsafe delegate* glNamedFramebufferSampleLocationsfvNV; - internal unsafe delegate* glNamedFramebufferSamplePositionsfvAMD; internal unsafe delegate* glNamedFramebufferTexture; - internal unsafe delegate* glNamedFramebufferTexture1DEXT; - internal unsafe delegate* glNamedFramebufferTexture2DEXT; - internal unsafe delegate* glNamedFramebufferTexture3DEXT; - internal unsafe delegate* glNamedFramebufferTextureEXT; - internal unsafe delegate* glNamedFramebufferTextureFaceEXT; internal unsafe delegate* glNamedFramebufferTextureLayer; - internal unsafe delegate* glNamedFramebufferTextureLayerEXT; - internal unsafe delegate* glNamedProgramLocalParameter4dEXT; - internal unsafe delegate* glNamedProgramLocalParameter4dvEXT; - internal unsafe delegate* glNamedProgramLocalParameter4fEXT; - internal unsafe delegate* glNamedProgramLocalParameter4fvEXT; - internal unsafe delegate* glNamedProgramLocalParameterI4iEXT; - internal unsafe delegate* glNamedProgramLocalParameterI4ivEXT; - internal unsafe delegate* glNamedProgramLocalParameterI4uiEXT; - internal unsafe delegate* glNamedProgramLocalParameterI4uivEXT; - internal unsafe delegate* glNamedProgramLocalParameters4fvEXT; - internal unsafe delegate* glNamedProgramLocalParametersI4ivEXT; - internal unsafe delegate* glNamedProgramLocalParametersI4uivEXT; - internal unsafe delegate* glNamedProgramStringEXT; - internal unsafe delegate* glNamedRenderbufferStorage; - internal unsafe delegate* glNamedRenderbufferStorageEXT; - internal unsafe delegate* glNamedRenderbufferStorageMultisample; - internal unsafe delegate* glNamedRenderbufferStorageMultisampleAdvancedAMD; - internal unsafe delegate* glNamedRenderbufferStorageMultisampleCoverageEXT; - internal unsafe delegate* glNamedRenderbufferStorageMultisampleEXT; - internal unsafe delegate* glNamedStringARB; - internal unsafe delegate* glNewObjectBufferATI; - internal unsafe delegate* glNormal3fVertex3fSUN; - internal unsafe delegate* glNormal3fVertex3fvSUN; - internal unsafe delegate* glNormal3hNV; - internal unsafe delegate* glNormal3hvNV; - internal unsafe delegate* glNormal3xOES; - internal unsafe delegate* glNormal3xvOES; - internal unsafe delegate* glNormalFormatNV; - internal unsafe delegate* glNormalPointerEXT; - internal unsafe delegate* glNormalPointerListIBM; - internal unsafe delegate* glNormalPointervINTEL; - internal unsafe delegate* glNormalStream3bATI; - internal unsafe delegate* glNormalStream3bvATI; - internal unsafe delegate* glNormalStream3dATI; - internal unsafe delegate* glNormalStream3dvATI; - internal unsafe delegate* glNormalStream3fATI; - internal unsafe delegate* glNormalStream3fvATI; - internal unsafe delegate* glNormalStream3iATI; - internal unsafe delegate* glNormalStream3ivATI; - internal unsafe delegate* glNormalStream3sATI; - internal unsafe delegate* glNormalStream3svATI; - internal unsafe delegate* glObjectLabel; - internal unsafe delegate* glObjectPtrLabel; - internal unsafe delegate* glObjectPurgeableAPPLE; - internal unsafe delegate* glObjectUnpurgeableAPPLE; - internal unsafe delegate* glOrthofOES; - internal unsafe delegate* glOrthoxOES; - internal unsafe delegate* glPNTrianglesfATI; - internal unsafe delegate* glPNTrianglesiATI; - internal unsafe delegate* glPassTexCoordATI; - internal unsafe delegate* glPassThroughxOES; + 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* glPathCommandsNV; - internal unsafe delegate* glPathCoordsNV; - internal unsafe delegate* glPathCoverDepthFuncNV; - internal unsafe delegate* glPathDashArrayNV; - internal unsafe delegate* glPathGlyphIndexArrayNV; - internal unsafe delegate* glPathGlyphIndexRangeNV; - internal unsafe delegate* glPathGlyphRangeNV; - internal unsafe delegate* glPathGlyphsNV; - internal unsafe delegate* glPathMemoryGlyphIndexArrayNV; - internal unsafe delegate* glPathParameterfNV; - internal unsafe delegate* glPathParameterfvNV; - internal unsafe delegate* glPathParameteriNV; - internal unsafe delegate* glPathParameterivNV; - internal unsafe delegate* glPathStencilDepthOffsetNV; - internal unsafe delegate* glPathStencilFuncNV; - internal unsafe delegate* glPathStringNV; - internal unsafe delegate* glPathSubCommandsNV; - internal unsafe delegate* glPathSubCoordsNV; internal unsafe delegate* glPauseTransformFeedback; - internal unsafe delegate* glPauseTransformFeedbackNV; - internal unsafe delegate* glPixelDataRangeNV; - internal unsafe delegate* glPixelMapx; internal unsafe delegate* glPixelStoref; internal unsafe delegate* glPixelStorei; - internal unsafe delegate* glPixelStorex; - internal unsafe delegate* glPixelTexGenParameterfSGIS; - internal unsafe delegate* glPixelTexGenParameterfvSGIS; - internal unsafe delegate* glPixelTexGenParameteriSGIS; - internal unsafe delegate* glPixelTexGenParameterivSGIS; - internal unsafe delegate* glPixelTexGenSGIX; - internal unsafe delegate* glPixelTransferxOES; - internal unsafe delegate* glPixelTransformParameterfEXT; - internal unsafe delegate* glPixelTransformParameterfvEXT; - internal unsafe delegate* glPixelTransformParameteriEXT; - internal unsafe delegate* glPixelTransformParameterivEXT; - internal unsafe delegate* glPixelZoomxOES; - internal unsafe delegate* glPointAlongPathNV; internal unsafe delegate* glPointParameterf; - internal unsafe delegate* glPointParameterfARB; - internal unsafe delegate* glPointParameterfEXT; - internal unsafe delegate* glPointParameterfSGIS; internal unsafe delegate* glPointParameterfv; - internal unsafe delegate* glPointParameterfvARB; - internal unsafe delegate* glPointParameterfvEXT; - internal unsafe delegate* glPointParameterfvSGIS; internal unsafe delegate* glPointParameteri; - internal unsafe delegate* glPointParameteriNV; internal unsafe delegate* glPointParameteriv; - internal unsafe delegate* glPointParameterivNV; - internal unsafe delegate* glPointParameterxvOES; internal unsafe delegate* glPointSize; - internal unsafe delegate* glPointSizexOES; - internal unsafe delegate* glPollAsyncSGIX; - internal unsafe delegate* glPollInstrumentsSGIX; internal unsafe delegate* glPolygonMode; internal unsafe delegate* glPolygonOffset; internal unsafe delegate* glPolygonOffsetClamp; - internal unsafe delegate* glPolygonOffsetClampEXT; - internal unsafe delegate* glPolygonOffsetEXT; - internal unsafe delegate* glPolygonOffsetxOES; internal unsafe delegate* glPopDebugGroup; - internal unsafe delegate* glPopGroupMarkerEXT; - internal unsafe delegate* glPresentFrameDualFillNV; - internal unsafe delegate* glPresentFrameKeyedNV; - internal unsafe delegate* glPrimitiveBoundingBoxARB; internal unsafe delegate* glPrimitiveRestartIndex; - internal unsafe delegate* glPrimitiveRestartIndexNV; - internal unsafe delegate* glPrimitiveRestartNV; - internal unsafe delegate* glPrioritizeTexturesEXT; - internal unsafe delegate* glPrioritizeTexturesxOES; - internal unsafe delegate* glProgramBinary; - internal unsafe delegate* glProgramBufferParametersIivNV; - internal unsafe delegate* glProgramBufferParametersIuivNV; - internal unsafe delegate* glProgramBufferParametersfvNV; - internal unsafe delegate* glProgramEnvParameter4dARB; - internal unsafe delegate* glProgramEnvParameter4dvARB; - internal unsafe delegate* glProgramEnvParameter4fARB; - internal unsafe delegate* glProgramEnvParameter4fvARB; - internal unsafe delegate* glProgramEnvParameterI4iNV; - internal unsafe delegate* glProgramEnvParameterI4ivNV; - internal unsafe delegate* glProgramEnvParameterI4uiNV; - internal unsafe delegate* glProgramEnvParameterI4uivNV; - internal unsafe delegate* glProgramEnvParameters4fvEXT; - internal unsafe delegate* glProgramEnvParametersI4ivNV; - internal unsafe delegate* glProgramEnvParametersI4uivNV; - internal unsafe delegate* glProgramLocalParameter4dARB; - internal unsafe delegate* glProgramLocalParameter4dvARB; - internal unsafe delegate* glProgramLocalParameter4fARB; - internal unsafe delegate* glProgramLocalParameter4fvARB; - internal unsafe delegate* glProgramLocalParameterI4iNV; - internal unsafe delegate* glProgramLocalParameterI4ivNV; - internal unsafe delegate* glProgramLocalParameterI4uiNV; - internal unsafe delegate* glProgramLocalParameterI4uivNV; - internal unsafe delegate* glProgramLocalParameters4fvEXT; - internal unsafe delegate* glProgramLocalParametersI4ivNV; - internal unsafe delegate* glProgramLocalParametersI4uivNV; - internal unsafe delegate* glProgramNamedParameter4dNV; - internal unsafe delegate* glProgramNamedParameter4dvNV; - internal unsafe delegate* glProgramNamedParameter4fNV; - internal unsafe delegate* glProgramNamedParameter4fvNV; - internal unsafe delegate* glProgramParameter4dNV; - internal unsafe delegate* glProgramParameter4dvNV; - internal unsafe delegate* glProgramParameter4fNV; - internal unsafe delegate* glProgramParameter4fvNV; + internal unsafe delegate* glProgramBinary; internal unsafe delegate* glProgramParameteri; - internal unsafe delegate* glProgramParameteriARB; - internal unsafe delegate* glProgramParameteriEXT; - internal unsafe delegate* glProgramParameters4dvNV; - internal unsafe delegate* glProgramParameters4fvNV; - internal unsafe delegate* glProgramPathFragmentInputGenNV; - internal unsafe delegate* glProgramStringARB; - internal unsafe delegate* glProgramSubroutineParametersuivNV; internal unsafe delegate* glProgramUniform1d; - internal unsafe delegate* glProgramUniform1dEXT; - internal unsafe delegate* glProgramUniform1dv; - internal unsafe delegate* glProgramUniform1dvEXT; + internal unsafe delegate* glProgramUniform1dv; internal unsafe delegate* glProgramUniform1f; - internal unsafe delegate* glProgramUniform1fEXT; - internal unsafe delegate* glProgramUniform1fv; - internal unsafe delegate* glProgramUniform1fvEXT; + internal unsafe delegate* glProgramUniform1fv; internal unsafe delegate* glProgramUniform1i; - internal unsafe delegate* glProgramUniform1i64ARB; - internal unsafe delegate* glProgramUniform1i64NV; - internal unsafe delegate* glProgramUniform1i64vARB; - internal unsafe delegate* glProgramUniform1i64vNV; - internal unsafe delegate* glProgramUniform1iEXT; - internal unsafe delegate* glProgramUniform1iv; - internal unsafe delegate* glProgramUniform1ivEXT; + internal unsafe delegate* glProgramUniform1iv; internal unsafe delegate* glProgramUniform1ui; - internal unsafe delegate* glProgramUniform1ui64ARB; - internal unsafe delegate* glProgramUniform1ui64NV; - internal unsafe delegate* glProgramUniform1ui64vARB; - internal unsafe delegate* glProgramUniform1ui64vNV; - internal unsafe delegate* glProgramUniform1uiEXT; - internal unsafe delegate* glProgramUniform1uiv; - internal unsafe delegate* glProgramUniform1uivEXT; + internal unsafe delegate* glProgramUniform1uiv; internal unsafe delegate* glProgramUniform2d; - internal unsafe delegate* glProgramUniform2dEXT; - internal unsafe delegate* glProgramUniform2dv; - internal unsafe delegate* glProgramUniform2dvEXT; + internal unsafe delegate* glProgramUniform2dv; internal unsafe delegate* glProgramUniform2f; - internal unsafe delegate* glProgramUniform2fEXT; - internal unsafe delegate* glProgramUniform2fv; - internal unsafe delegate* glProgramUniform2fvEXT; + internal unsafe delegate* glProgramUniform2fv; internal unsafe delegate* glProgramUniform2i; - internal unsafe delegate* glProgramUniform2i64ARB; - internal unsafe delegate* glProgramUniform2i64NV; - internal unsafe delegate* glProgramUniform2i64vARB; - internal unsafe delegate* glProgramUniform2i64vNV; - internal unsafe delegate* glProgramUniform2iEXT; - internal unsafe delegate* glProgramUniform2iv; - internal unsafe delegate* glProgramUniform2ivEXT; + internal unsafe delegate* glProgramUniform2iv; internal unsafe delegate* glProgramUniform2ui; - internal unsafe delegate* glProgramUniform2ui64ARB; - internal unsafe delegate* glProgramUniform2ui64NV; - internal unsafe delegate* glProgramUniform2ui64vARB; - internal unsafe delegate* glProgramUniform2ui64vNV; - internal unsafe delegate* glProgramUniform2uiEXT; - internal unsafe delegate* glProgramUniform2uiv; - internal unsafe delegate* glProgramUniform2uivEXT; + internal unsafe delegate* glProgramUniform2uiv; internal unsafe delegate* glProgramUniform3d; - internal unsafe delegate* glProgramUniform3dEXT; - internal unsafe delegate* glProgramUniform3dv; - internal unsafe delegate* glProgramUniform3dvEXT; + internal unsafe delegate* glProgramUniform3dv; internal unsafe delegate* glProgramUniform3f; - internal unsafe delegate* glProgramUniform3fEXT; - internal unsafe delegate* glProgramUniform3fv; - internal unsafe delegate* glProgramUniform3fvEXT; + internal unsafe delegate* glProgramUniform3fv; internal unsafe delegate* glProgramUniform3i; - internal unsafe delegate* glProgramUniform3i64ARB; - internal unsafe delegate* glProgramUniform3i64NV; - internal unsafe delegate* glProgramUniform3i64vARB; - internal unsafe delegate* glProgramUniform3i64vNV; - internal unsafe delegate* glProgramUniform3iEXT; - internal unsafe delegate* glProgramUniform3iv; - internal unsafe delegate* glProgramUniform3ivEXT; + internal unsafe delegate* glProgramUniform3iv; internal unsafe delegate* glProgramUniform3ui; - internal unsafe delegate* glProgramUniform3ui64ARB; - internal unsafe delegate* glProgramUniform3ui64NV; - internal unsafe delegate* glProgramUniform3ui64vARB; - internal unsafe delegate* glProgramUniform3ui64vNV; - internal unsafe delegate* glProgramUniform3uiEXT; - internal unsafe delegate* glProgramUniform3uiv; - internal unsafe delegate* glProgramUniform3uivEXT; + internal unsafe delegate* glProgramUniform3uiv; internal unsafe delegate* glProgramUniform4d; - internal unsafe delegate* glProgramUniform4dEXT; - internal unsafe delegate* glProgramUniform4dv; - internal unsafe delegate* glProgramUniform4dvEXT; + internal unsafe delegate* glProgramUniform4dv; internal unsafe delegate* glProgramUniform4f; - internal unsafe delegate* glProgramUniform4fEXT; - internal unsafe delegate* glProgramUniform4fv; - internal unsafe delegate* glProgramUniform4fvEXT; + internal unsafe delegate* glProgramUniform4fv; internal unsafe delegate* glProgramUniform4i; - internal unsafe delegate* glProgramUniform4i64ARB; - internal unsafe delegate* glProgramUniform4i64NV; - internal unsafe delegate* glProgramUniform4i64vARB; - internal unsafe delegate* glProgramUniform4i64vNV; - internal unsafe delegate* glProgramUniform4iEXT; - internal unsafe delegate* glProgramUniform4iv; - internal unsafe delegate* glProgramUniform4ivEXT; + internal unsafe delegate* glProgramUniform4iv; internal unsafe delegate* glProgramUniform4ui; - internal unsafe delegate* glProgramUniform4ui64ARB; - internal unsafe delegate* glProgramUniform4ui64NV; - internal unsafe delegate* glProgramUniform4ui64vARB; - internal unsafe delegate* glProgramUniform4ui64vNV; - internal unsafe delegate* glProgramUniform4uiEXT; - internal unsafe delegate* glProgramUniform4uiv; - internal unsafe delegate* glProgramUniform4uivEXT; - internal unsafe delegate* glProgramUniformHandleui64ARB; - internal unsafe delegate* glProgramUniformHandleui64NV; - internal unsafe delegate* glProgramUniformHandleui64vARB; - internal unsafe delegate* glProgramUniformHandleui64vNV; - internal unsafe delegate* glProgramUniformMatrix2dv; - internal unsafe delegate* glProgramUniformMatrix2dvEXT; - internal unsafe delegate* glProgramUniformMatrix2fv; - internal unsafe delegate* glProgramUniformMatrix2fvEXT; - internal unsafe delegate* glProgramUniformMatrix2x3dv; - internal unsafe delegate* glProgramUniformMatrix2x3dvEXT; - internal unsafe delegate* glProgramUniformMatrix2x3fv; - internal unsafe delegate* glProgramUniformMatrix2x3fvEXT; - internal unsafe delegate* glProgramUniformMatrix2x4dv; - internal unsafe delegate* glProgramUniformMatrix2x4dvEXT; - internal unsafe delegate* glProgramUniformMatrix2x4fv; - internal unsafe delegate* glProgramUniformMatrix2x4fvEXT; - internal unsafe delegate* glProgramUniformMatrix3dv; - internal unsafe delegate* glProgramUniformMatrix3dvEXT; - internal unsafe delegate* glProgramUniformMatrix3fv; - internal unsafe delegate* glProgramUniformMatrix3fvEXT; - internal unsafe delegate* glProgramUniformMatrix3x2dv; - internal unsafe delegate* glProgramUniformMatrix3x2dvEXT; - internal unsafe delegate* glProgramUniformMatrix3x2fv; - internal unsafe delegate* glProgramUniformMatrix3x2fvEXT; - internal unsafe delegate* glProgramUniformMatrix3x4dv; - internal unsafe delegate* glProgramUniformMatrix3x4dvEXT; - internal unsafe delegate* glProgramUniformMatrix3x4fv; - internal unsafe delegate* glProgramUniformMatrix3x4fvEXT; - internal unsafe delegate* glProgramUniformMatrix4dv; - internal unsafe delegate* glProgramUniformMatrix4dvEXT; - internal unsafe delegate* glProgramUniformMatrix4fv; - internal unsafe delegate* glProgramUniformMatrix4fvEXT; - internal unsafe delegate* glProgramUniformMatrix4x2dv; - internal unsafe delegate* glProgramUniformMatrix4x2dvEXT; - internal unsafe delegate* glProgramUniformMatrix4x2fv; - internal unsafe delegate* glProgramUniformMatrix4x2fvEXT; - internal unsafe delegate* glProgramUniformMatrix4x3dv; - internal unsafe delegate* glProgramUniformMatrix4x3dvEXT; - internal unsafe delegate* glProgramUniformMatrix4x3fv; - internal unsafe delegate* glProgramUniformMatrix4x3fvEXT; - internal unsafe delegate* glProgramUniformui64NV; - internal unsafe delegate* glProgramUniformui64vNV; - internal unsafe delegate* glProgramVertexLimitNV; + 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* glProvokingVertexEXT; - internal unsafe delegate* glPushClientAttribDefaultEXT; - internal unsafe delegate* glPushDebugGroup; - internal unsafe delegate* glPushGroupMarkerEXT; + internal unsafe delegate* glPushDebugGroup; internal unsafe delegate* glQueryCounter; - internal unsafe delegate* glQueryMatrixxOES; - internal unsafe delegate* glQueryObjectParameteruiAMD; - internal unsafe delegate* glQueryResourceNV; - internal unsafe delegate* glQueryResourceTagNV; - internal unsafe delegate* glRasterPos2xOES; - internal unsafe delegate* glRasterPos2xvOES; - internal unsafe delegate* glRasterPos3xOES; - internal unsafe delegate* glRasterPos3xvOES; - internal unsafe delegate* glRasterPos4xOES; - internal unsafe delegate* glRasterPos4xvOES; - internal unsafe delegate* glRasterSamplesEXT; internal unsafe delegate* glReadBuffer; - internal unsafe delegate* glReadInstrumentsSGIX; - internal unsafe delegate* glReadPixels; - internal unsafe delegate* glReadnPixels; - internal unsafe delegate* glReadnPixelsARB; - internal unsafe delegate* glRectxOES; - internal unsafe delegate* glRectxvOES; - internal unsafe delegate* glReferencePlaneSGIX; - internal unsafe delegate* glReleaseKeyedMutexWin32EXT; + internal unsafe delegate* glReadnPixels; + internal unsafe delegate* glReadPixels; internal unsafe delegate* glReleaseShaderCompiler; - internal unsafe delegate* glRenderGpuMaskNV; internal unsafe delegate* glRenderbufferStorage; - internal unsafe delegate* glRenderbufferStorageEXT; - internal unsafe delegate* glRenderbufferStorageMultisample; - internal unsafe delegate* glRenderbufferStorageMultisampleAdvancedAMD; - internal unsafe delegate* glRenderbufferStorageMultisampleCoverageNV; - internal unsafe delegate* glRenderbufferStorageMultisampleEXT; - internal unsafe delegate* glReplacementCodePointerSUN; - internal unsafe delegate* glReplacementCodeubSUN; - internal unsafe delegate* glReplacementCodeubvSUN; - internal unsafe delegate* glReplacementCodeuiColor3fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiColor3fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuiVertex3fSUN; - internal unsafe delegate* glReplacementCodeuiVertex3fvSUN; - internal unsafe delegate* glReplacementCodeuivSUN; - internal unsafe delegate* glReplacementCodeusSUN; - internal unsafe delegate* glReplacementCodeusvSUN; - internal unsafe delegate* glRequestResidentProgramsNV; - internal unsafe delegate* glResetHistogramEXT; - internal unsafe delegate* glResetMemoryObjectParameterNV; - internal unsafe delegate* glResetMinmaxEXT; - internal unsafe delegate* glResizeBuffersMESA; - internal unsafe delegate* glResolveDepthValuesNV; + internal unsafe delegate* glRenderbufferStorageMultisample; internal unsafe delegate* glResumeTransformFeedback; - internal unsafe delegate* glResumeTransformFeedbackNV; - internal unsafe delegate* glRotatexOES; - internal unsafe delegate* glSampleCoverage; - internal unsafe delegate* glSampleCoverageARB; - internal unsafe delegate* glSampleMapATI; - internal unsafe delegate* glSampleMaskEXT; - internal unsafe delegate* glSampleMaskIndexedNV; - internal unsafe delegate* glSampleMaskSGIS; + internal unsafe delegate* glSampleCoverage; internal unsafe delegate* glSampleMaski; - internal unsafe delegate* glSamplePatternEXT; - internal unsafe delegate* glSamplePatternSGIS; - internal unsafe delegate* glSamplerParameterIiv; - internal unsafe delegate* glSamplerParameterIuiv; internal unsafe delegate* glSamplerParameterf; internal unsafe delegate* glSamplerParameterfv; internal unsafe delegate* glSamplerParameteri; + internal unsafe delegate* glSamplerParameterIiv; + internal unsafe delegate* glSamplerParameterIuiv; internal unsafe delegate* glSamplerParameteriv; - internal unsafe delegate* glScalexOES; - internal unsafe delegate* glScissor; - internal unsafe delegate* glScissorArrayv; - internal unsafe delegate* glScissorExclusiveArrayvNV; - internal unsafe delegate* glScissorExclusiveNV; - internal unsafe delegate* glScissorIndexed; + internal unsafe delegate* glScissor; + internal unsafe delegate* glScissorArrayv; + internal unsafe delegate* glScissorIndexed; internal unsafe delegate* glScissorIndexedv; - internal unsafe delegate* glSecondaryColor3bEXT; - internal unsafe delegate* glSecondaryColor3bvEXT; - internal unsafe delegate* glSecondaryColor3dEXT; - internal unsafe delegate* glSecondaryColor3dvEXT; - internal unsafe delegate* glSecondaryColor3fEXT; - internal unsafe delegate* glSecondaryColor3fvEXT; - internal unsafe delegate* glSecondaryColor3hNV; - internal unsafe delegate* glSecondaryColor3hvNV; - internal unsafe delegate* glSecondaryColor3iEXT; - internal unsafe delegate* glSecondaryColor3ivEXT; - internal unsafe delegate* glSecondaryColor3sEXT; - internal unsafe delegate* glSecondaryColor3svEXT; - internal unsafe delegate* glSecondaryColor3ubEXT; - internal unsafe delegate* glSecondaryColor3ubvEXT; - internal unsafe delegate* glSecondaryColor3uiEXT; - internal unsafe delegate* glSecondaryColor3uivEXT; - internal unsafe delegate* glSecondaryColor3usEXT; - internal unsafe delegate* glSecondaryColor3usvEXT; - internal unsafe delegate* glSecondaryColorFormatNV; - internal unsafe delegate* glSecondaryColorPointerEXT; - internal unsafe delegate* glSecondaryColorPointerListIBM; - internal unsafe delegate* glSelectPerfMonitorCountersAMD; - internal unsafe delegate* glSemaphoreParameterivNV; - internal unsafe delegate* glSemaphoreParameterui64vEXT; - internal unsafe delegate* glSeparableFilter2DEXT; - internal unsafe delegate* glSetFenceAPPLE; - internal unsafe delegate* glSetFenceNV; - internal unsafe delegate* glSetFragmentShaderConstantATI; - internal unsafe delegate* glSetInvariantEXT; - internal unsafe delegate* glSetLocalConstantEXT; - internal unsafe delegate* glSetMultisamplefvAMD; - internal unsafe delegate* glShaderBinary; - internal unsafe delegate* glShaderOp1EXT; - internal unsafe delegate* glShaderOp2EXT; - internal unsafe delegate* glShaderOp3EXT; - internal unsafe delegate* unmanaged[Stdcall] glShaderSource; - internal unsafe delegate* glShaderSourceARB; + internal unsafe delegate* glShaderBinary; + internal unsafe delegate* glShaderSource; internal unsafe delegate* glShaderStorageBlockBinding; - internal unsafe delegate* glShadingRateImageBarrierNV; - internal unsafe delegate* glShadingRateImagePaletteNV; - internal unsafe delegate* glShadingRateSampleOrderCustomNV; - internal unsafe delegate* glShadingRateSampleOrderNV; - internal unsafe delegate* glSharpenTexFuncSGIS; - internal unsafe delegate* glSignalSemaphoreEXT; - internal unsafe delegate* glSignalSemaphoreui64NVX; - internal unsafe delegate* glSignalVkFenceNV; - internal unsafe delegate* glSignalVkSemaphoreNV; internal unsafe delegate* glSpecializeShader; - internal unsafe delegate* glSpecializeShaderARB; - internal unsafe delegate* glSpriteParameterfSGIX; - internal unsafe delegate* glSpriteParameterfvSGIX; - internal unsafe delegate* glSpriteParameteriSGIX; - internal unsafe delegate* glSpriteParameterivSGIX; - internal unsafe delegate* glStartInstrumentsSGIX; - internal unsafe delegate* glStateCaptureNV; - internal unsafe delegate* glStencilClearTagEXT; - internal unsafe delegate* glStencilFillPathInstancedNV; - internal unsafe delegate* glStencilFillPathNV; internal unsafe delegate* glStencilFunc; internal unsafe delegate* glStencilFuncSeparate; - internal unsafe delegate* glStencilFuncSeparateATI; internal unsafe delegate* glStencilMask; internal unsafe delegate* glStencilMaskSeparate; internal unsafe delegate* glStencilOp; internal unsafe delegate* glStencilOpSeparate; - internal unsafe delegate* glStencilOpSeparateATI; - internal unsafe delegate* glStencilOpValueAMD; - internal unsafe delegate* glStencilStrokePathInstancedNV; - internal unsafe delegate* glStencilStrokePathNV; - internal unsafe delegate* glStencilThenCoverFillPathInstancedNV; - internal unsafe delegate* glStencilThenCoverFillPathNV; - internal unsafe delegate* glStencilThenCoverStrokePathInstancedNV; - internal unsafe delegate* glStencilThenCoverStrokePathNV; - internal unsafe delegate* glStopInstrumentsSGIX; - internal unsafe delegate* glStringMarkerGREMEDY; - internal unsafe delegate* glSubpixelPrecisionBiasNV; - internal unsafe delegate* glSwizzleEXT; - internal unsafe delegate* glSyncTextureINTEL; - internal unsafe delegate* glTagSampleBufferSGIX; - internal unsafe delegate* glTangent3bEXT; - internal unsafe delegate* glTangent3bvEXT; - internal unsafe delegate* glTangent3dEXT; - internal unsafe delegate* glTangent3dvEXT; - internal unsafe delegate* glTangent3fEXT; - internal unsafe delegate* glTangent3fvEXT; - internal unsafe delegate* glTangent3iEXT; - internal unsafe delegate* glTangent3ivEXT; - internal unsafe delegate* glTangent3sEXT; - internal unsafe delegate* glTangent3svEXT; - internal unsafe delegate* glTangentPointerEXT; - internal unsafe delegate* glTbufferMask3DFX; - internal unsafe delegate* glTessellationFactorAMD; - internal unsafe delegate* glTessellationModeAMD; - internal unsafe delegate* glTestFenceAPPLE; - internal unsafe delegate* glTestFenceNV; - internal unsafe delegate* glTestObjectAPPLE; - internal unsafe delegate* glTexAttachMemoryNV; internal unsafe delegate* glTexBuffer; - internal unsafe delegate* glTexBufferARB; - internal unsafe delegate* glTexBufferEXT; - internal unsafe delegate* glTexBufferRange; - internal unsafe delegate* glTexBumpParameterfvATI; - internal unsafe delegate* glTexBumpParameterivATI; - internal unsafe delegate* glTexCoord1bOES; - internal unsafe delegate* glTexCoord1bvOES; - internal unsafe delegate* glTexCoord1hNV; - internal unsafe delegate* glTexCoord1hvNV; - internal unsafe delegate* glTexCoord1xOES; - internal unsafe delegate* glTexCoord1xvOES; - internal unsafe delegate* glTexCoord2bOES; - internal unsafe delegate* glTexCoord2bvOES; - internal unsafe delegate* glTexCoord2fColor3fVertex3fSUN; - internal unsafe delegate* glTexCoord2fColor3fVertex3fvSUN; - internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fSUN; - internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fvSUN; - internal unsafe delegate* glTexCoord2fColor4ubVertex3fSUN; - internal unsafe delegate* glTexCoord2fColor4ubVertex3fvSUN; - internal unsafe delegate* glTexCoord2fNormal3fVertex3fSUN; - internal unsafe delegate* glTexCoord2fNormal3fVertex3fvSUN; - internal unsafe delegate* glTexCoord2fVertex3fSUN; - internal unsafe delegate* glTexCoord2fVertex3fvSUN; - internal unsafe delegate* glTexCoord2hNV; - internal unsafe delegate* glTexCoord2hvNV; - internal unsafe delegate* glTexCoord2xOES; - internal unsafe delegate* glTexCoord2xvOES; - internal unsafe delegate* glTexCoord3bOES; - internal unsafe delegate* glTexCoord3bvOES; - internal unsafe delegate* glTexCoord3hNV; - internal unsafe delegate* glTexCoord3hvNV; - internal unsafe delegate* glTexCoord3xOES; - internal unsafe delegate* glTexCoord3xvOES; - internal unsafe delegate* glTexCoord4bOES; - internal unsafe delegate* glTexCoord4bvOES; - internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fSUN; - internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fvSUN; - internal unsafe delegate* glTexCoord4fVertex4fSUN; - internal unsafe delegate* glTexCoord4fVertex4fvSUN; - internal unsafe delegate* glTexCoord4hNV; - internal unsafe delegate* glTexCoord4hvNV; - internal unsafe delegate* glTexCoord4xOES; - internal unsafe delegate* glTexCoord4xvOES; - internal unsafe delegate* glTexCoordFormatNV; - internal unsafe delegate* glTexCoordPointerEXT; - internal unsafe delegate* glTexCoordPointerListIBM; - internal unsafe delegate* glTexCoordPointervINTEL; - internal unsafe delegate* glTexEnvxOES; - internal unsafe delegate* glTexEnvxvOES; - internal unsafe delegate* glTexFilterFuncSGIS; - internal unsafe delegate* glTexGenxOES; - internal unsafe delegate* glTexGenxvOES; - internal unsafe delegate* glTexImage1D; - internal unsafe delegate* glTexImage2D; - internal unsafe delegate* glTexImage2DMultisample; - internal unsafe delegate* glTexImage2DMultisampleCoverageNV; - internal unsafe delegate* glTexImage3D; - internal unsafe delegate* glTexImage3DEXT; - internal unsafe delegate* glTexImage3DMultisample; - internal unsafe delegate* glTexImage3DMultisampleCoverageNV; - internal unsafe delegate* glTexImage4DSGIS; - internal unsafe delegate* glTexPageCommitmentARB; - internal unsafe delegate* glTexPageCommitmentMemNV; - internal unsafe delegate* glTexParameterIiv; - internal unsafe delegate* glTexParameterIivEXT; - internal unsafe delegate* glTexParameterIuiv; - internal unsafe delegate* glTexParameterIuivEXT; + 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* glTexParameterf; internal unsafe delegate* glTexParameterfv; internal unsafe delegate* glTexParameteri; + internal unsafe delegate* glTexParameterIiv; + internal unsafe delegate* glTexParameterIuiv; internal unsafe delegate* glTexParameteriv; - internal unsafe delegate* glTexParameterxOES; - internal unsafe delegate* glTexParameterxvOES; - internal unsafe delegate* glTexRenderbufferNV; - internal unsafe delegate* glTexStorage1D; - internal unsafe delegate* glTexStorage1DEXT; - internal unsafe delegate* glTexStorage2D; - internal unsafe delegate* glTexStorage2DEXT; - internal unsafe delegate* glTexStorage2DMultisample; - internal unsafe delegate* glTexStorage3D; - internal unsafe delegate* glTexStorage3DEXT; - internal unsafe delegate* glTexStorage3DMultisample; - internal unsafe delegate* glTexStorageMem1DEXT; - internal unsafe delegate* glTexStorageMem2DEXT; - internal unsafe delegate* glTexStorageMem2DMultisampleEXT; - internal unsafe delegate* glTexStorageMem3DEXT; - internal unsafe delegate* glTexStorageMem3DMultisampleEXT; - internal unsafe delegate* glTexStorageSparseAMD; - internal unsafe delegate* glTexSubImage1D; - internal unsafe delegate* glTexSubImage1DEXT; - internal unsafe delegate* glTexSubImage2D; - internal unsafe delegate* glTexSubImage2DEXT; - internal unsafe delegate* glTexSubImage3D; - internal unsafe delegate* glTexSubImage3DEXT; - internal unsafe delegate* glTexSubImage4DSGIS; - internal unsafe delegate* glTextureAttachMemoryNV; + 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* glTextureBarrierNV; internal unsafe delegate* glTextureBuffer; - internal unsafe delegate* glTextureBufferEXT; - internal unsafe delegate* glTextureBufferRange; - internal unsafe delegate* glTextureBufferRangeEXT; - internal unsafe delegate* glTextureColorMaskSGIS; - internal unsafe delegate* glTextureImage1DEXT; - internal unsafe delegate* glTextureImage2DEXT; - internal unsafe delegate* glTextureImage2DMultisampleCoverageNV; - internal unsafe delegate* glTextureImage2DMultisampleNV; - internal unsafe delegate* glTextureImage3DEXT; - internal unsafe delegate* glTextureImage3DMultisampleCoverageNV; - internal unsafe delegate* glTextureImage3DMultisampleNV; - internal unsafe delegate* glTextureLightEXT; - internal unsafe delegate* glTextureMaterialEXT; - internal unsafe delegate* glTextureNormalEXT; - internal unsafe delegate* glTexturePageCommitmentEXT; - internal unsafe delegate* glTexturePageCommitmentMemNV; - internal unsafe delegate* glTextureParameterIiv; - internal unsafe delegate* glTextureParameterIivEXT; - internal unsafe delegate* glTextureParameterIuiv; - internal unsafe delegate* glTextureParameterIuivEXT; + internal unsafe delegate* glTextureBufferRange; internal unsafe delegate* glTextureParameterf; - internal unsafe delegate* glTextureParameterfEXT; internal unsafe delegate* glTextureParameterfv; - internal unsafe delegate* glTextureParameterfvEXT; internal unsafe delegate* glTextureParameteri; - internal unsafe delegate* glTextureParameteriEXT; + internal unsafe delegate* glTextureParameterIiv; + internal unsafe delegate* glTextureParameterIuiv; internal unsafe delegate* glTextureParameteriv; - internal unsafe delegate* glTextureParameterivEXT; - internal unsafe delegate* glTextureRangeAPPLE; - internal unsafe delegate* glTextureRenderbufferEXT; - internal unsafe delegate* glTextureStorage1D; - internal unsafe delegate* glTextureStorage1DEXT; - internal unsafe delegate* glTextureStorage2D; - internal unsafe delegate* glTextureStorage2DEXT; - internal unsafe delegate* glTextureStorage2DMultisample; - internal unsafe delegate* glTextureStorage2DMultisampleEXT; - internal unsafe delegate* glTextureStorage3D; - internal unsafe delegate* glTextureStorage3DEXT; - internal unsafe delegate* glTextureStorage3DMultisample; - internal unsafe delegate* glTextureStorage3DMultisampleEXT; - internal unsafe delegate* glTextureStorageMem1DEXT; - internal unsafe delegate* glTextureStorageMem2DEXT; - internal unsafe delegate* glTextureStorageMem2DMultisampleEXT; - internal unsafe delegate* glTextureStorageMem3DEXT; - internal unsafe delegate* glTextureStorageMem3DMultisampleEXT; - internal unsafe delegate* glTextureStorageSparseAMD; - internal unsafe delegate* glTextureSubImage1D; - internal unsafe delegate* glTextureSubImage1DEXT; - internal unsafe delegate* glTextureSubImage2D; - internal unsafe delegate* glTextureSubImage2DEXT; - internal unsafe delegate* glTextureSubImage3D; - internal unsafe delegate* glTextureSubImage3DEXT; + 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* glTrackMatrixNV; - internal unsafe delegate* glTransformFeedbackAttribsNV; internal unsafe delegate* glTransformFeedbackBufferBase; - internal unsafe delegate* glTransformFeedbackBufferRange; - internal unsafe delegate* glTransformFeedbackStreamAttribsNV; - internal unsafe delegate* glTransformFeedbackVaryings; - internal unsafe delegate* glTransformFeedbackVaryingsEXT; - internal unsafe delegate* glTransformFeedbackVaryingsNV; - internal unsafe delegate* glTransformPathNV; - internal unsafe delegate* glTranslatexOES; + internal unsafe delegate* glTransformFeedbackBufferRange; + internal unsafe delegate* glTransformFeedbackVaryings; internal unsafe delegate* glUniform1d; - internal unsafe delegate* glUniform1dv; + internal unsafe delegate* glUniform1dv; internal unsafe delegate* glUniform1f; - internal unsafe delegate* glUniform1fARB; - internal unsafe delegate* glUniform1fv; - internal unsafe delegate* glUniform1fvARB; + internal unsafe delegate* glUniform1fv; internal unsafe delegate* glUniform1i; - internal unsafe delegate* glUniform1i64ARB; - internal unsafe delegate* glUniform1i64NV; - internal unsafe delegate* glUniform1i64vARB; - internal unsafe delegate* glUniform1i64vNV; - internal unsafe delegate* glUniform1iARB; - internal unsafe delegate* glUniform1iv; - internal unsafe delegate* glUniform1ivARB; + internal unsafe delegate* glUniform1iv; internal unsafe delegate* glUniform1ui; - internal unsafe delegate* glUniform1ui64ARB; - internal unsafe delegate* glUniform1ui64NV; - internal unsafe delegate* glUniform1ui64vARB; - internal unsafe delegate* glUniform1ui64vNV; - internal unsafe delegate* glUniform1uiEXT; - internal unsafe delegate* glUniform1uiv; - internal unsafe delegate* glUniform1uivEXT; + internal unsafe delegate* glUniform1uiv; internal unsafe delegate* glUniform2d; - internal unsafe delegate* glUniform2dv; + internal unsafe delegate* glUniform2dv; internal unsafe delegate* glUniform2f; - internal unsafe delegate* glUniform2fARB; - internal unsafe delegate* glUniform2fv; - internal unsafe delegate* glUniform2fvARB; + internal unsafe delegate* glUniform2fv; internal unsafe delegate* glUniform2i; - internal unsafe delegate* glUniform2i64ARB; - internal unsafe delegate* glUniform2i64NV; - internal unsafe delegate* glUniform2i64vARB; - internal unsafe delegate* glUniform2i64vNV; - internal unsafe delegate* glUniform2iARB; - internal unsafe delegate* glUniform2iv; - internal unsafe delegate* glUniform2ivARB; + internal unsafe delegate* glUniform2iv; internal unsafe delegate* glUniform2ui; - internal unsafe delegate* glUniform2ui64ARB; - internal unsafe delegate* glUniform2ui64NV; - internal unsafe delegate* glUniform2ui64vARB; - internal unsafe delegate* glUniform2ui64vNV; - internal unsafe delegate* glUniform2uiEXT; - internal unsafe delegate* glUniform2uiv; - internal unsafe delegate* glUniform2uivEXT; + internal unsafe delegate* glUniform2uiv; internal unsafe delegate* glUniform3d; - internal unsafe delegate* glUniform3dv; + internal unsafe delegate* glUniform3dv; internal unsafe delegate* glUniform3f; - internal unsafe delegate* glUniform3fARB; - internal unsafe delegate* glUniform3fv; - internal unsafe delegate* glUniform3fvARB; + internal unsafe delegate* glUniform3fv; internal unsafe delegate* glUniform3i; - internal unsafe delegate* glUniform3i64ARB; - internal unsafe delegate* glUniform3i64NV; - internal unsafe delegate* glUniform3i64vARB; - internal unsafe delegate* glUniform3i64vNV; - internal unsafe delegate* glUniform3iARB; - internal unsafe delegate* glUniform3iv; - internal unsafe delegate* glUniform3ivARB; + internal unsafe delegate* glUniform3iv; internal unsafe delegate* glUniform3ui; - internal unsafe delegate* glUniform3ui64ARB; - internal unsafe delegate* glUniform3ui64NV; - internal unsafe delegate* glUniform3ui64vARB; - internal unsafe delegate* glUniform3ui64vNV; - internal unsafe delegate* glUniform3uiEXT; - internal unsafe delegate* glUniform3uiv; - internal unsafe delegate* glUniform3uivEXT; + internal unsafe delegate* glUniform3uiv; internal unsafe delegate* glUniform4d; - internal unsafe delegate* glUniform4dv; + internal unsafe delegate* glUniform4dv; internal unsafe delegate* glUniform4f; - internal unsafe delegate* glUniform4fARB; - internal unsafe delegate* glUniform4fv; - internal unsafe delegate* glUniform4fvARB; + internal unsafe delegate* glUniform4fv; internal unsafe delegate* glUniform4i; - internal unsafe delegate* glUniform4i64ARB; - internal unsafe delegate* glUniform4i64NV; - internal unsafe delegate* glUniform4i64vARB; - internal unsafe delegate* glUniform4i64vNV; - internal unsafe delegate* glUniform4iARB; - internal unsafe delegate* glUniform4iv; - internal unsafe delegate* glUniform4ivARB; + internal unsafe delegate* glUniform4iv; internal unsafe delegate* glUniform4ui; - internal unsafe delegate* glUniform4ui64ARB; - internal unsafe delegate* glUniform4ui64NV; - internal unsafe delegate* glUniform4ui64vARB; - internal unsafe delegate* glUniform4ui64vNV; - internal unsafe delegate* glUniform4uiEXT; - internal unsafe delegate* glUniform4uiv; - internal unsafe delegate* glUniform4uivEXT; + internal unsafe delegate* glUniform4uiv; internal unsafe delegate* glUniformBlockBinding; - internal unsafe delegate* glUniformBufferEXT; - internal unsafe delegate* glUniformHandleui64ARB; - internal unsafe delegate* glUniformHandleui64NV; - internal unsafe delegate* glUniformHandleui64vARB; - internal unsafe delegate* glUniformHandleui64vNV; - internal unsafe delegate* glUniformMatrix2dv; - internal unsafe delegate* glUniformMatrix2fv; - internal unsafe delegate* glUniformMatrix2fvARB; - 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* glUniformMatrix3fvARB; - 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* glUniformMatrix4fvARB; - internal unsafe delegate* glUniformMatrix4x2dv; - internal unsafe delegate* glUniformMatrix4x2fv; - internal unsafe delegate* glUniformMatrix4x3dv; - internal unsafe delegate* glUniformMatrix4x3fv; - internal unsafe delegate* glUniformSubroutinesuiv; - internal unsafe delegate* glUniformui64NV; - internal unsafe delegate* glUniformui64vNV; - internal unsafe delegate* glUnlockArraysEXT; - internal unsafe delegate* glUnmapBuffer; - internal unsafe delegate* glUnmapBufferARB; - internal unsafe delegate* glUnmapNamedBuffer; - internal unsafe delegate* glUnmapNamedBufferEXT; - internal unsafe delegate* glUnmapObjectBufferATI; - internal unsafe delegate* glUnmapTexture2DINTEL; - internal unsafe delegate* glUpdateObjectBufferATI; - internal unsafe delegate* glUploadGpuMaskNVX; + 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* glUseProgramObjectARB; internal unsafe delegate* glUseProgramStages; - internal unsafe delegate* glUseShaderProgramEXT; - internal unsafe delegate* glVDPAUFiniNV; - internal unsafe delegate* glVDPAUGetSurfaceivNV; - internal unsafe delegate* glVDPAUInitNV; - internal unsafe delegate* glVDPAUIsSurfaceNV; - internal unsafe delegate* glVDPAUMapSurfacesNV; - internal unsafe delegate* glVDPAURegisterOutputSurfaceNV; - internal unsafe delegate* glVDPAURegisterVideoSurfaceNV; - internal unsafe delegate* glVDPAURegisterVideoSurfaceWithPictureStructureNV; - internal unsafe delegate* glVDPAUSurfaceAccessNV; - internal unsafe delegate* glVDPAUUnmapSurfacesNV; - internal unsafe delegate* glVDPAUUnregisterSurfaceNV; internal unsafe delegate* glValidateProgram; - internal unsafe delegate* glValidateProgramARB; internal unsafe delegate* glValidateProgramPipeline; - internal unsafe delegate* glVariantArrayObjectATI; - internal unsafe delegate* glVariantPointerEXT; - internal unsafe delegate* glVariantbvEXT; - internal unsafe delegate* glVariantdvEXT; - internal unsafe delegate* glVariantfvEXT; - internal unsafe delegate* glVariantivEXT; - internal unsafe delegate* glVariantsvEXT; - internal unsafe delegate* glVariantubvEXT; - internal unsafe delegate* glVariantuivEXT; - internal unsafe delegate* glVariantusvEXT; - internal unsafe delegate* glVertex2bOES; - internal unsafe delegate* glVertex2bvOES; - internal unsafe delegate* glVertex2hNV; - internal unsafe delegate* glVertex2hvNV; - internal unsafe delegate* glVertex2xOES; - internal unsafe delegate* glVertex2xvOES; - internal unsafe delegate* glVertex3bOES; - internal unsafe delegate* glVertex3bvOES; - internal unsafe delegate* glVertex3hNV; - internal unsafe delegate* glVertex3hvNV; - internal unsafe delegate* glVertex3xOES; - internal unsafe delegate* glVertex3xvOES; - internal unsafe delegate* glVertex4bOES; - internal unsafe delegate* glVertex4bvOES; - internal unsafe delegate* glVertex4hNV; - internal unsafe delegate* glVertex4hvNV; - internal unsafe delegate* glVertex4xOES; - internal unsafe delegate* glVertex4xvOES; internal unsafe delegate* glVertexArrayAttribBinding; - internal unsafe delegate* glVertexArrayAttribFormat; + internal unsafe delegate* glVertexArrayAttribFormat; internal unsafe delegate* glVertexArrayAttribIFormat; internal unsafe delegate* glVertexArrayAttribLFormat; - internal unsafe delegate* glVertexArrayBindVertexBufferEXT; internal unsafe delegate* glVertexArrayBindingDivisor; - internal unsafe delegate* glVertexArrayColorOffsetEXT; - internal unsafe delegate* glVertexArrayEdgeFlagOffsetEXT; internal unsafe delegate* glVertexArrayElementBuffer; - internal unsafe delegate* glVertexArrayFogCoordOffsetEXT; - internal unsafe delegate* glVertexArrayIndexOffsetEXT; - internal unsafe delegate* glVertexArrayMultiTexCoordOffsetEXT; - internal unsafe delegate* glVertexArrayNormalOffsetEXT; - internal unsafe delegate* glVertexArrayParameteriAPPLE; - internal unsafe delegate* glVertexArrayRangeAPPLE; - internal unsafe delegate* glVertexArrayRangeNV; - internal unsafe delegate* glVertexArraySecondaryColorOffsetEXT; - internal unsafe delegate* glVertexArrayTexCoordOffsetEXT; - internal unsafe delegate* glVertexArrayVertexAttribBindingEXT; - internal unsafe delegate* glVertexArrayVertexAttribDivisorEXT; - internal unsafe delegate* glVertexArrayVertexAttribFormatEXT; - internal unsafe delegate* glVertexArrayVertexAttribIFormatEXT; - internal unsafe delegate* glVertexArrayVertexAttribIOffsetEXT; - internal unsafe delegate* glVertexArrayVertexAttribLFormatEXT; - internal unsafe delegate* glVertexArrayVertexAttribLOffsetEXT; - internal unsafe delegate* glVertexArrayVertexAttribOffsetEXT; - internal unsafe delegate* glVertexArrayVertexBindingDivisorEXT; - internal unsafe delegate* glVertexArrayVertexBuffer; - internal unsafe delegate* glVertexArrayVertexBuffers; - internal unsafe delegate* glVertexArrayVertexOffsetEXT; + internal unsafe delegate* glVertexArrayVertexBuffer; + internal unsafe delegate* glVertexArrayVertexBuffers; internal unsafe delegate* glVertexAttrib1d; - internal unsafe delegate* glVertexAttrib1dARB; - internal unsafe delegate* glVertexAttrib1dNV; internal unsafe delegate* glVertexAttrib1dv; - internal unsafe delegate* glVertexAttrib1dvARB; - internal unsafe delegate* glVertexAttrib1dvNV; internal unsafe delegate* glVertexAttrib1f; - internal unsafe delegate* glVertexAttrib1fARB; - internal unsafe delegate* glVertexAttrib1fNV; internal unsafe delegate* glVertexAttrib1fv; - internal unsafe delegate* glVertexAttrib1fvARB; - internal unsafe delegate* glVertexAttrib1fvNV; - internal unsafe delegate* glVertexAttrib1hNV; - internal unsafe delegate* glVertexAttrib1hvNV; internal unsafe delegate* glVertexAttrib1s; - internal unsafe delegate* glVertexAttrib1sARB; - internal unsafe delegate* glVertexAttrib1sNV; internal unsafe delegate* glVertexAttrib1sv; - internal unsafe delegate* glVertexAttrib1svARB; - internal unsafe delegate* glVertexAttrib1svNV; internal unsafe delegate* glVertexAttrib2d; - internal unsafe delegate* glVertexAttrib2dARB; - internal unsafe delegate* glVertexAttrib2dNV; internal unsafe delegate* glVertexAttrib2dv; - internal unsafe delegate* glVertexAttrib2dvARB; - internal unsafe delegate* glVertexAttrib2dvNV; internal unsafe delegate* glVertexAttrib2f; - internal unsafe delegate* glVertexAttrib2fARB; - internal unsafe delegate* glVertexAttrib2fNV; internal unsafe delegate* glVertexAttrib2fv; - internal unsafe delegate* glVertexAttrib2fvARB; - internal unsafe delegate* glVertexAttrib2fvNV; - internal unsafe delegate* glVertexAttrib2hNV; - internal unsafe delegate* glVertexAttrib2hvNV; internal unsafe delegate* glVertexAttrib2s; - internal unsafe delegate* glVertexAttrib2sARB; - internal unsafe delegate* glVertexAttrib2sNV; internal unsafe delegate* glVertexAttrib2sv; - internal unsafe delegate* glVertexAttrib2svARB; - internal unsafe delegate* glVertexAttrib2svNV; internal unsafe delegate* glVertexAttrib3d; - internal unsafe delegate* glVertexAttrib3dARB; - internal unsafe delegate* glVertexAttrib3dNV; internal unsafe delegate* glVertexAttrib3dv; - internal unsafe delegate* glVertexAttrib3dvARB; - internal unsafe delegate* glVertexAttrib3dvNV; internal unsafe delegate* glVertexAttrib3f; - internal unsafe delegate* glVertexAttrib3fARB; - internal unsafe delegate* glVertexAttrib3fNV; internal unsafe delegate* glVertexAttrib3fv; - internal unsafe delegate* glVertexAttrib3fvARB; - internal unsafe delegate* glVertexAttrib3fvNV; - internal unsafe delegate* glVertexAttrib3hNV; - internal unsafe delegate* glVertexAttrib3hvNV; internal unsafe delegate* glVertexAttrib3s; - internal unsafe delegate* glVertexAttrib3sARB; - internal unsafe delegate* glVertexAttrib3sNV; internal unsafe delegate* glVertexAttrib3sv; - internal unsafe delegate* glVertexAttrib3svARB; - internal unsafe delegate* glVertexAttrib3svNV; - internal unsafe delegate* glVertexAttrib4Nbv; - internal unsafe delegate* glVertexAttrib4NbvARB; - internal unsafe delegate* glVertexAttrib4Niv; - internal unsafe delegate* glVertexAttrib4NivARB; - internal unsafe delegate* glVertexAttrib4Nsv; - internal unsafe delegate* glVertexAttrib4NsvARB; - internal unsafe delegate* glVertexAttrib4Nub; - internal unsafe delegate* glVertexAttrib4NubARB; - internal unsafe delegate* glVertexAttrib4Nubv; - internal unsafe delegate* glVertexAttrib4NubvARB; - internal unsafe delegate* glVertexAttrib4Nuiv; - internal unsafe delegate* glVertexAttrib4NuivARB; - internal unsafe delegate* glVertexAttrib4Nusv; - internal unsafe delegate* glVertexAttrib4NusvARB; internal unsafe delegate* glVertexAttrib4bv; - internal unsafe delegate* glVertexAttrib4bvARB; internal unsafe delegate* glVertexAttrib4d; - internal unsafe delegate* glVertexAttrib4dARB; - internal unsafe delegate* glVertexAttrib4dNV; internal unsafe delegate* glVertexAttrib4dv; - internal unsafe delegate* glVertexAttrib4dvARB; - internal unsafe delegate* glVertexAttrib4dvNV; internal unsafe delegate* glVertexAttrib4f; - internal unsafe delegate* glVertexAttrib4fARB; - internal unsafe delegate* glVertexAttrib4fNV; internal unsafe delegate* glVertexAttrib4fv; - internal unsafe delegate* glVertexAttrib4fvARB; - internal unsafe delegate* glVertexAttrib4fvNV; - internal unsafe delegate* glVertexAttrib4hNV; - internal unsafe delegate* glVertexAttrib4hvNV; internal unsafe delegate* glVertexAttrib4iv; - internal unsafe delegate* glVertexAttrib4ivARB; + 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* glVertexAttrib4s; - internal unsafe delegate* glVertexAttrib4sARB; - internal unsafe delegate* glVertexAttrib4sNV; internal unsafe delegate* glVertexAttrib4sv; - internal unsafe delegate* glVertexAttrib4svARB; - internal unsafe delegate* glVertexAttrib4svNV; - internal unsafe delegate* glVertexAttrib4ubNV; internal unsafe delegate* glVertexAttrib4ubv; - internal unsafe delegate* glVertexAttrib4ubvARB; - internal unsafe delegate* glVertexAttrib4ubvNV; internal unsafe delegate* glVertexAttrib4uiv; - internal unsafe delegate* glVertexAttrib4uivARB; internal unsafe delegate* glVertexAttrib4usv; - internal unsafe delegate* glVertexAttrib4usvARB; - internal unsafe delegate* glVertexAttribArrayObjectATI; internal unsafe delegate* glVertexAttribBinding; internal unsafe delegate* glVertexAttribDivisor; - internal unsafe delegate* glVertexAttribDivisorARB; - internal unsafe delegate* glVertexAttribFormat; - internal unsafe delegate* glVertexAttribFormatNV; + internal unsafe delegate* glVertexAttribFormat; internal unsafe delegate* glVertexAttribI1i; - internal unsafe delegate* glVertexAttribI1iEXT; internal unsafe delegate* glVertexAttribI1iv; - internal unsafe delegate* glVertexAttribI1ivEXT; internal unsafe delegate* glVertexAttribI1ui; - internal unsafe delegate* glVertexAttribI1uiEXT; internal unsafe delegate* glVertexAttribI1uiv; - internal unsafe delegate* glVertexAttribI1uivEXT; internal unsafe delegate* glVertexAttribI2i; - internal unsafe delegate* glVertexAttribI2iEXT; internal unsafe delegate* glVertexAttribI2iv; - internal unsafe delegate* glVertexAttribI2ivEXT; internal unsafe delegate* glVertexAttribI2ui; - internal unsafe delegate* glVertexAttribI2uiEXT; internal unsafe delegate* glVertexAttribI2uiv; - internal unsafe delegate* glVertexAttribI2uivEXT; internal unsafe delegate* glVertexAttribI3i; - internal unsafe delegate* glVertexAttribI3iEXT; internal unsafe delegate* glVertexAttribI3iv; - internal unsafe delegate* glVertexAttribI3ivEXT; internal unsafe delegate* glVertexAttribI3ui; - internal unsafe delegate* glVertexAttribI3uiEXT; internal unsafe delegate* glVertexAttribI3uiv; - internal unsafe delegate* glVertexAttribI3uivEXT; internal unsafe delegate* glVertexAttribI4bv; - internal unsafe delegate* glVertexAttribI4bvEXT; internal unsafe delegate* glVertexAttribI4i; - internal unsafe delegate* glVertexAttribI4iEXT; internal unsafe delegate* glVertexAttribI4iv; - internal unsafe delegate* glVertexAttribI4ivEXT; internal unsafe delegate* glVertexAttribI4sv; - internal unsafe delegate* glVertexAttribI4svEXT; internal unsafe delegate* glVertexAttribI4ubv; - internal unsafe delegate* glVertexAttribI4ubvEXT; internal unsafe delegate* glVertexAttribI4ui; - internal unsafe delegate* glVertexAttribI4uiEXT; internal unsafe delegate* glVertexAttribI4uiv; - internal unsafe delegate* glVertexAttribI4uivEXT; internal unsafe delegate* glVertexAttribI4usv; - internal unsafe delegate* glVertexAttribI4usvEXT; internal unsafe delegate* glVertexAttribIFormat; - internal unsafe delegate* glVertexAttribIFormatNV; - internal unsafe delegate* glVertexAttribIPointer; - internal unsafe delegate* glVertexAttribIPointerEXT; + internal unsafe delegate* glVertexAttribIPointer; internal unsafe delegate* glVertexAttribL1d; - internal unsafe delegate* glVertexAttribL1dEXT; internal unsafe delegate* glVertexAttribL1dv; - internal unsafe delegate* glVertexAttribL1dvEXT; - internal unsafe delegate* glVertexAttribL1i64NV; - internal unsafe delegate* glVertexAttribL1i64vNV; - internal unsafe delegate* glVertexAttribL1ui64ARB; - internal unsafe delegate* glVertexAttribL1ui64NV; - internal unsafe delegate* glVertexAttribL1ui64vARB; - internal unsafe delegate* glVertexAttribL1ui64vNV; internal unsafe delegate* glVertexAttribL2d; - internal unsafe delegate* glVertexAttribL2dEXT; internal unsafe delegate* glVertexAttribL2dv; - internal unsafe delegate* glVertexAttribL2dvEXT; - internal unsafe delegate* glVertexAttribL2i64NV; - internal unsafe delegate* glVertexAttribL2i64vNV; - internal unsafe delegate* glVertexAttribL2ui64NV; - internal unsafe delegate* glVertexAttribL2ui64vNV; internal unsafe delegate* glVertexAttribL3d; - internal unsafe delegate* glVertexAttribL3dEXT; internal unsafe delegate* glVertexAttribL3dv; - internal unsafe delegate* glVertexAttribL3dvEXT; - internal unsafe delegate* glVertexAttribL3i64NV; - internal unsafe delegate* glVertexAttribL3i64vNV; - internal unsafe delegate* glVertexAttribL3ui64NV; - internal unsafe delegate* glVertexAttribL3ui64vNV; internal unsafe delegate* glVertexAttribL4d; - internal unsafe delegate* glVertexAttribL4dEXT; internal unsafe delegate* glVertexAttribL4dv; - internal unsafe delegate* glVertexAttribL4dvEXT; - internal unsafe delegate* glVertexAttribL4i64NV; - internal unsafe delegate* glVertexAttribL4i64vNV; - internal unsafe delegate* glVertexAttribL4ui64NV; - internal unsafe delegate* glVertexAttribL4ui64vNV; internal unsafe delegate* glVertexAttribLFormat; - internal unsafe delegate* glVertexAttribLFormatNV; - internal unsafe delegate* glVertexAttribLPointer; - internal unsafe delegate* glVertexAttribLPointerEXT; - 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* glVertexAttribParameteriAMD; - internal unsafe delegate* glVertexAttribPointer; - internal unsafe delegate* glVertexAttribPointerARB; - internal unsafe delegate* glVertexAttribPointerNV; - internal unsafe delegate* glVertexAttribs1dvNV; - internal unsafe delegate* glVertexAttribs1fvNV; - internal unsafe delegate* glVertexAttribs1hvNV; - internal unsafe delegate* glVertexAttribs1svNV; - internal unsafe delegate* glVertexAttribs2dvNV; - internal unsafe delegate* glVertexAttribs2fvNV; - internal unsafe delegate* glVertexAttribs2hvNV; - internal unsafe delegate* glVertexAttribs2svNV; - internal unsafe delegate* glVertexAttribs3dvNV; - internal unsafe delegate* glVertexAttribs3fvNV; - internal unsafe delegate* glVertexAttribs3hvNV; - internal unsafe delegate* glVertexAttribs3svNV; - internal unsafe delegate* glVertexAttribs4dvNV; - internal unsafe delegate* glVertexAttribs4fvNV; - internal unsafe delegate* glVertexAttribs4hvNV; - internal unsafe delegate* glVertexAttribs4svNV; - internal unsafe delegate* glVertexAttribs4ubvNV; + 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* glVertexBlendARB; - internal unsafe delegate* glVertexBlendEnvfATI; - internal unsafe delegate* glVertexBlendEnviATI; - internal unsafe delegate* glVertexFormatNV; - internal unsafe delegate* glVertexPointerEXT; - internal unsafe delegate* glVertexPointerListIBM; - internal unsafe delegate* glVertexPointervINTEL; - internal unsafe delegate* glVertexStream1dATI; - internal unsafe delegate* glVertexStream1dvATI; - internal unsafe delegate* glVertexStream1fATI; - internal unsafe delegate* glVertexStream1fvATI; - internal unsafe delegate* glVertexStream1iATI; - internal unsafe delegate* glVertexStream1ivATI; - internal unsafe delegate* glVertexStream1sATI; - internal unsafe delegate* glVertexStream1svATI; - internal unsafe delegate* glVertexStream2dATI; - internal unsafe delegate* glVertexStream2dvATI; - internal unsafe delegate* glVertexStream2fATI; - internal unsafe delegate* glVertexStream2fvATI; - internal unsafe delegate* glVertexStream2iATI; - internal unsafe delegate* glVertexStream2ivATI; - internal unsafe delegate* glVertexStream2sATI; - internal unsafe delegate* glVertexStream2svATI; - internal unsafe delegate* glVertexStream3dATI; - internal unsafe delegate* glVertexStream3dvATI; - internal unsafe delegate* glVertexStream3fATI; - internal unsafe delegate* glVertexStream3fvATI; - internal unsafe delegate* glVertexStream3iATI; - internal unsafe delegate* glVertexStream3ivATI; - internal unsafe delegate* glVertexStream3sATI; - internal unsafe delegate* glVertexStream3svATI; - internal unsafe delegate* glVertexStream4dATI; - internal unsafe delegate* glVertexStream4dvATI; - internal unsafe delegate* glVertexStream4fATI; - internal unsafe delegate* glVertexStream4fvATI; - internal unsafe delegate* glVertexStream4iATI; - internal unsafe delegate* glVertexStream4ivATI; - internal unsafe delegate* glVertexStream4sATI; - internal unsafe delegate* glVertexStream4svATI; - internal unsafe delegate* glVertexWeightPointerEXT; - internal unsafe delegate* glVertexWeightfEXT; - internal unsafe delegate* glVertexWeightfvEXT; - internal unsafe delegate* glVertexWeighthNV; - internal unsafe delegate* glVertexWeighthvNV; - internal unsafe delegate* glVideoCaptureNV; - internal unsafe delegate* glVideoCaptureStreamParameterdvNV; - internal unsafe delegate* glVideoCaptureStreamParameterfvNV; - internal unsafe delegate* glVideoCaptureStreamParameterivNV; - internal unsafe delegate* glViewport; - internal unsafe delegate* glViewportArrayv; + internal unsafe delegate* glViewport; + internal unsafe delegate* glViewportArrayv; internal unsafe delegate* glViewportIndexedf; internal unsafe delegate* glViewportIndexedfv; - internal unsafe delegate* glViewportPositionWScaleNV; - internal unsafe delegate* glViewportSwizzleNV; - internal unsafe delegate* glWaitSemaphoreEXT; - internal unsafe delegate* glWaitSemaphoreui64NVX; - internal unsafe delegate* glWaitSync; - internal unsafe delegate* glWaitVkSemaphoreNV; - internal unsafe delegate* glWeightPathsNV; - internal unsafe delegate* glWeightPointerARB; - internal unsafe delegate* glWeightbvARB; - internal unsafe delegate* glWeightdvARB; - internal unsafe delegate* glWeightfvARB; - internal unsafe delegate* glWeightivARB; - internal unsafe delegate* glWeightsvARB; - internal unsafe delegate* glWeightubvARB; - internal unsafe delegate* glWeightuivARB; - internal unsafe delegate* glWeightusvARB; - internal unsafe delegate* glWindowPos2dARB; - internal unsafe delegate* glWindowPos2dMESA; - internal unsafe delegate* glWindowPos2dvARB; - internal unsafe delegate* glWindowPos2dvMESA; - internal unsafe delegate* glWindowPos2fARB; - internal unsafe delegate* glWindowPos2fMESA; - internal unsafe delegate* glWindowPos2fvARB; - internal unsafe delegate* glWindowPos2fvMESA; - internal unsafe delegate* glWindowPos2iARB; - internal unsafe delegate* glWindowPos2iMESA; - internal unsafe delegate* glWindowPos2ivARB; - internal unsafe delegate* glWindowPos2ivMESA; - internal unsafe delegate* glWindowPos2sARB; - internal unsafe delegate* glWindowPos2sMESA; - internal unsafe delegate* glWindowPos2svARB; - internal unsafe delegate* glWindowPos2svMESA; - internal unsafe delegate* glWindowPos3dARB; - internal unsafe delegate* glWindowPos3dMESA; - internal unsafe delegate* glWindowPos3dvARB; - internal unsafe delegate* glWindowPos3dvMESA; - internal unsafe delegate* glWindowPos3fARB; - internal unsafe delegate* glWindowPos3fMESA; - internal unsafe delegate* glWindowPos3fvARB; - internal unsafe delegate* glWindowPos3fvMESA; - internal unsafe delegate* glWindowPos3iARB; - internal unsafe delegate* glWindowPos3iMESA; - internal unsafe delegate* glWindowPos3ivARB; - internal unsafe delegate* glWindowPos3ivMESA; - internal unsafe delegate* glWindowPos3sARB; - internal unsafe delegate* glWindowPos3sMESA; - internal unsafe delegate* glWindowPos3svARB; - internal unsafe delegate* glWindowPos3svMESA; - internal unsafe delegate* glWindowPos4dMESA; - internal unsafe delegate* glWindowPos4dvMESA; - internal unsafe delegate* glWindowPos4fMESA; - internal unsafe delegate* glWindowPos4fvMESA; - internal unsafe delegate* glWindowPos4iMESA; - internal unsafe delegate* glWindowPos4ivMESA; - internal unsafe delegate* glWindowPos4sMESA; - internal unsafe delegate* glWindowPos4svMESA; - internal unsafe delegate* glWindowRectanglesEXT; - internal unsafe delegate* glWriteMaskEXT; + internal unsafe delegate* glWaitSync; - #endregion glapi } } diff --git a/StgSharp.Common/Graphics/OpenGL/glContextShadow.cs b/StgSharp.Common/Graphics/OpenGL/glContextShadow.cs new file mode 100644 index 00000000..b5cf4bce --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glContextShadow.cs @@ -0,0 +1,698 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glContextShadow" +// 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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + internal struct glContextShadow + { + + internal IntPtr glActiveShaderProgram; + internal IntPtr glActiveTexture; + internal IntPtr glAttachShader; + internal IntPtr glBeginConditionalRender; + internal IntPtr glBeginQuery; + internal IntPtr glBeginQueryIndexed; + internal IntPtr glBeginTransformFeedback; + internal IntPtr glBindAttribLocation; + internal IntPtr glBindBuffer; + internal IntPtr glBindBufferBase; + internal IntPtr glBindBufferRange; + internal IntPtr glBindBuffersBase; + internal IntPtr glBindBuffersRange; + internal IntPtr glBindFragDataLocation; + internal IntPtr glBindFragDataLocationIndexed; + internal IntPtr glBindFramebuffer; + internal IntPtr glBindImageTexture; + internal IntPtr glBindImageTextures; + internal IntPtr glBindProgramPipeline; + internal IntPtr glBindRenderbuffer; + internal IntPtr glBindSampler; + internal IntPtr glBindSamplers; + internal IntPtr glBindTexture; + internal IntPtr glBindTextures; + internal IntPtr glBindTextureUnit; + internal IntPtr glBindTransformFeedback; + internal IntPtr glBindVertexArray; + internal IntPtr glBindVertexBuffer; + internal IntPtr glBindVertexBuffers; + internal IntPtr glBlendColor; + internal IntPtr glBlendEquation; + internal IntPtr glBlendEquationi; + internal IntPtr glBlendEquationSeparate; + internal IntPtr glBlendEquationSeparatei; + internal IntPtr glBlendFunc; + internal IntPtr glBlendFunci; + internal IntPtr glBlendFuncSeparate; + internal IntPtr glBlendFuncSeparatei; + internal IntPtr glBlitFramebuffer; + internal IntPtr glBlitNamedFramebuffer; + internal IntPtr glBufferData; + internal IntPtr glBufferStorage; + internal IntPtr glBufferSubData; + internal IntPtr glCheckFramebufferStatus; + internal IntPtr glCheckNamedFramebufferStatus; + internal IntPtr glClampColor; + internal IntPtr glClear; + internal IntPtr glClearBufferData; + internal IntPtr glClearBufferfi; + internal IntPtr glClearBufferfv; + internal IntPtr glClearBufferiv; + internal IntPtr glClearBufferSubData; + internal IntPtr glClearBufferuiv; + internal IntPtr glClearColor; + internal IntPtr glClearDepth; + internal IntPtr glClearDepthf; + internal IntPtr glClearNamedBufferData; + internal IntPtr glClearNamedBufferSubData; + internal IntPtr glClearNamedFramebufferfi; + internal IntPtr glClearNamedFramebufferfv; + internal IntPtr glClearNamedFramebufferiv; + internal IntPtr glClearNamedFramebufferuiv; + internal IntPtr glClearStencil; + internal IntPtr glClearTexImage; + internal IntPtr glClearTexSubImage; + internal IntPtr glClientWaitSync; + internal IntPtr glClipControl; + internal IntPtr glColorMask; + internal IntPtr glColorMaski; + internal IntPtr glCompileShader; + internal IntPtr glCompressedTexImage1D; + internal IntPtr glCompressedTexImage2D; + internal IntPtr glCompressedTexImage3D; + internal IntPtr glCompressedTexSubImage1D; + internal IntPtr glCompressedTexSubImage2D; + internal IntPtr glCompressedTexSubImage3D; + internal IntPtr glCompressedTextureSubImage1D; + internal IntPtr glCompressedTextureSubImage2D; + internal IntPtr glCompressedTextureSubImage3D; + internal IntPtr glCopyBufferSubData; + internal IntPtr glCopyImageSubData; + internal IntPtr glCopyNamedBufferSubData; + internal IntPtr glCopyTexImage1D; + internal IntPtr glCopyTexImage2D; + internal IntPtr glCopyTexSubImage1D; + internal IntPtr glCopyTexSubImage2D; + internal IntPtr glCopyTexSubImage3D; + internal IntPtr glCopyTextureSubImage1D; + internal IntPtr glCopyTextureSubImage2D; + internal IntPtr glCopyTextureSubImage3D; + internal IntPtr glCreateBuffers; + internal IntPtr glCreateFramebuffers; + internal IntPtr glCreateProgram; + internal IntPtr glCreateProgramPipelines; + internal IntPtr glCreateQueries; + internal IntPtr glCreateRenderbuffers; + internal IntPtr glCreateSamplers; + internal IntPtr glCreateShader; + internal IntPtr glCreateShaderProgramv; + internal IntPtr glCreateTextures; + internal IntPtr glCreateTransformFeedbacks; + internal IntPtr glCreateVertexArrays; + internal IntPtr glCullFace; + internal IntPtr glDebugMessageCallback; + internal IntPtr glDebugMessageControl; + internal IntPtr glDebugMessageInsert; + internal IntPtr glDeleteBuffers; + internal IntPtr glDeleteFramebuffers; + internal IntPtr glDeleteProgram; + internal IntPtr glDeleteProgramPipelines; + internal IntPtr glDeleteQueries; + internal IntPtr glDeleteRenderbuffers; + internal IntPtr glDeleteSamplers; + internal IntPtr glDeleteShader; + internal IntPtr glDeleteSync; + internal IntPtr glDeleteTextures; + internal IntPtr glDeleteTransformFeedbacks; + internal IntPtr glDeleteVertexArrays; + internal IntPtr glDepthFunc; + internal IntPtr glDepthMask; + internal IntPtr glDepthRange; + internal IntPtr glDepthRangeArrayv; + internal IntPtr glDepthRangef; + internal IntPtr glDepthRangeIndexed; + internal IntPtr glDetachShader; + internal IntPtr glDisable; + internal IntPtr glDisablei; + internal IntPtr glDisableVertexArrayAttrib; + internal IntPtr glDisableVertexAttribArray; + internal IntPtr glDispatchCompute; + internal IntPtr glDispatchComputeIndirect; + internal IntPtr glDrawArrays; + internal IntPtr glDrawArraysIndirect; + internal IntPtr glDrawArraysInstanced; + internal IntPtr glDrawArraysInstancedBaseInstance; + internal IntPtr glDrawBuffer; + internal IntPtr glDrawBuffers; + internal IntPtr glDrawElements; + internal IntPtr glDrawElementsBaseVertex; + internal IntPtr glDrawElementsIndirect; + internal IntPtr glDrawElementsInstanced; + internal IntPtr glDrawElementsInstancedBaseInstance; + internal IntPtr glDrawElementsInstancedBaseVertex; + internal IntPtr glDrawElementsInstancedBaseVertexBaseInstance; + internal IntPtr glDrawRangeElements; + internal IntPtr glDrawRangeElementsBaseVertex; + internal IntPtr glDrawTransformFeedback; + internal IntPtr glDrawTransformFeedbackInstanced; + internal IntPtr glDrawTransformFeedbackStream; + internal IntPtr glDrawTransformFeedbackStreamInstanced; + internal IntPtr glEnable; + internal IntPtr glEnablei; + internal IntPtr glEnableVertexArrayAttrib; + internal IntPtr glEnableVertexAttribArray; + internal IntPtr glEndConditionalRender; + internal IntPtr glEndQuery; + internal IntPtr glEndQueryIndexed; + internal IntPtr glEndTransformFeedback; + internal IntPtr glFenceSync; + internal IntPtr glFinish; + internal IntPtr glFlush; + internal IntPtr glFlushMappedBufferRange; + internal IntPtr glFlushMappedNamedBufferRange; + internal IntPtr glFramebufferParameteri; + internal IntPtr glFramebufferRenderbuffer; + internal IntPtr glFramebufferTexture; + internal IntPtr glFramebufferTexture1D; + internal IntPtr glFramebufferTexture2D; + internal IntPtr glFramebufferTexture3D; + internal IntPtr glFramebufferTextureLayer; + internal IntPtr glFrontFace; + internal IntPtr glGenBuffers; + internal IntPtr glGenerateMipmap; + internal IntPtr glGenerateTextureMipmap; + internal IntPtr glGenFramebuffers; + internal IntPtr glGenProgramPipelines; + internal IntPtr glGenQueries; + internal IntPtr glGenRenderbuffers; + internal IntPtr glGenSamplers; + internal IntPtr glGenTextures; + internal IntPtr glGenTransformFeedbacks; + internal IntPtr glGenVertexArrays; + internal IntPtr glGetActiveAtomicCounterBufferiv; + internal IntPtr glGetActiveAttrib; + internal IntPtr glGetActiveSubroutineName; + internal IntPtr glGetActiveSubroutineUniformiv; + internal IntPtr glGetActiveSubroutineUniformName; + internal IntPtr glGetActiveUniform; + internal IntPtr glGetActiveUniformBlockiv; + internal IntPtr glGetActiveUniformBlockName; + internal IntPtr glGetActiveUniformName; + internal IntPtr glGetActiveUniformsiv; + internal IntPtr glGetAttachedShaders; + internal IntPtr glGetAttribLocation; + internal IntPtr glGetBooleani_v; + internal IntPtr glGetBooleanv; + internal IntPtr glGetBufferParameteri64v; + internal IntPtr glGetBufferParameteriv; + internal IntPtr glGetBufferPointerv; + internal IntPtr glGetBufferSubData; + internal IntPtr glGetCompressedTexImage; + internal IntPtr glGetCompressedTextureImage; + internal IntPtr glGetCompressedTextureSubImage; + internal IntPtr glGetDebugMessageLog; + internal IntPtr glGetDoublei_v; + internal IntPtr glGetDoublev; + internal IntPtr glGetError; + internal IntPtr glGetFloati_v; + internal IntPtr glGetFloatv; + internal IntPtr glGetFragDataIndex; + internal IntPtr glGetFragDataLocation; + internal IntPtr glGetFramebufferAttachmentParameteriv; + internal IntPtr glGetFramebufferParameteriv; + internal IntPtr glGetGraphicsResetStatus; + internal IntPtr glGetInteger64i_v; + internal IntPtr glGetInteger64v; + internal IntPtr glGetIntegeri_v; + internal IntPtr glGetIntegerv; + internal IntPtr glGetInternalformati64v; + internal IntPtr glGetInternalformativ; + internal IntPtr glGetMultisamplefv; + internal IntPtr glGetNamedBufferParameteri64v; + internal IntPtr glGetNamedBufferParameteriv; + internal IntPtr glGetNamedBufferPointerv; + internal IntPtr glGetNamedBufferSubData; + internal IntPtr glGetNamedFramebufferAttachmentParameteriv; + internal IntPtr glGetNamedFramebufferParameteriv; + internal IntPtr glGetNamedRenderbufferParameteriv; + internal IntPtr glGetnCompressedTexImage; + internal IntPtr glGetnTexImage; + internal IntPtr glGetnUniformdv; + internal IntPtr glGetnUniformfv; + internal IntPtr glGetnUniformiv; + internal IntPtr glGetnUniformuiv; + internal IntPtr glGetObjectLabel; + internal IntPtr glGetObjectPtrLabel; + internal IntPtr glGetPointerv; + internal IntPtr glGetProgramBinary; + internal IntPtr glGetProgramInfoLog; + internal IntPtr glGetProgramInterfaceiv; + internal IntPtr glGetProgramiv; + internal IntPtr glGetProgramPipelineInfoLog; + internal IntPtr glGetProgramPipelineiv; + internal IntPtr glGetProgramResourceIndex; + internal IntPtr glGetProgramResourceiv; + internal IntPtr glGetProgramResourceLocation; + internal IntPtr glGetProgramResourceLocationIndex; + internal IntPtr glGetProgramResourceName; + internal IntPtr glGetProgramStageiv; + internal IntPtr glGetQueryBufferObjecti64v; + internal IntPtr glGetQueryBufferObjectiv; + internal IntPtr glGetQueryBufferObjectui64v; + internal IntPtr glGetQueryBufferObjectuiv; + internal IntPtr glGetQueryIndexediv; + internal IntPtr glGetQueryiv; + internal IntPtr glGetQueryObjecti64v; + internal IntPtr glGetQueryObjectiv; + internal IntPtr glGetQueryObjectui64v; + internal IntPtr glGetQueryObjectuiv; + internal IntPtr glGetRenderbufferParameteriv; + internal IntPtr glGetSamplerParameterfv; + internal IntPtr glGetSamplerParameterIiv; + internal IntPtr glGetSamplerParameterIuiv; + internal IntPtr glGetSamplerParameteriv; + internal IntPtr glGetShaderInfoLog; + internal IntPtr glGetShaderiv; + internal IntPtr glGetShaderPrecisionFormat; + internal IntPtr glGetShaderSource; + internal IntPtr glGetString; + internal IntPtr glGetStringi; + internal IntPtr glGetSubroutineIndex; + internal IntPtr glGetSubroutineUniformLocation; + internal IntPtr glGetSynciv; + internal IntPtr glGetTexImage; + internal IntPtr glGetTexLevelParameterfv; + internal IntPtr glGetTexLevelParameteriv; + internal IntPtr glGetTexParameterfv; + internal IntPtr glGetTexParameterIiv; + internal IntPtr glGetTexParameterIuiv; + internal IntPtr glGetTexParameteriv; + internal IntPtr glGetTextureImage; + internal IntPtr glGetTextureLevelParameterfv; + internal IntPtr glGetTextureLevelParameteriv; + internal IntPtr glGetTextureParameterfv; + internal IntPtr glGetTextureParameterIiv; + internal IntPtr glGetTextureParameterIuiv; + internal IntPtr glGetTextureParameteriv; + internal IntPtr glGetTextureSubImage; + internal IntPtr glGetTransformFeedbacki_v; + internal IntPtr glGetTransformFeedbacki64_v; + internal IntPtr glGetTransformFeedbackiv; + internal IntPtr glGetTransformFeedbackVarying; + internal IntPtr glGetUniformBlockIndex; + internal IntPtr glGetUniformdv; + internal IntPtr glGetUniformfv; + internal IntPtr glGetUniformIndices; + internal IntPtr glGetUniformiv; + internal IntPtr glGetUniformLocation; + internal IntPtr glGetUniformSubroutineuiv; + internal IntPtr glGetUniformuiv; + internal IntPtr glGetVertexArrayIndexed64iv; + internal IntPtr glGetVertexArrayIndexediv; + internal IntPtr glGetVertexArrayiv; + internal IntPtr glGetVertexAttribdv; + internal IntPtr glGetVertexAttribfv; + internal IntPtr glGetVertexAttribIiv; + internal IntPtr glGetVertexAttribIuiv; + internal IntPtr glGetVertexAttribiv; + internal IntPtr glGetVertexAttribLdv; + internal IntPtr glGetVertexAttribPointerv; + internal IntPtr glHint; + internal IntPtr glInvalidateBufferData; + internal IntPtr glInvalidateBufferSubData; + internal IntPtr glInvalidateFramebuffer; + internal IntPtr glInvalidateNamedFramebufferData; + internal IntPtr glInvalidateNamedFramebufferSubData; + internal IntPtr glInvalidateSubFramebuffer; + internal IntPtr glInvalidateTexImage; + internal IntPtr glInvalidateTexSubImage; + internal IntPtr glIsBuffer; + internal IntPtr glIsEnabled; + internal IntPtr glIsEnabledi; + internal IntPtr glIsFramebuffer; + internal IntPtr glIsProgram; + internal IntPtr glIsProgramPipeline; + internal IntPtr glIsQuery; + internal IntPtr glIsRenderbuffer; + internal IntPtr glIsSampler; + internal IntPtr glIsShader; + internal IntPtr glIsSync; + internal IntPtr glIsTexture; + internal IntPtr glIsTransformFeedback; + internal IntPtr glIsVertexArray; + internal IntPtr glLineWidth; + internal IntPtr glLinkProgram; + internal IntPtr glLogicOp; + internal IntPtr glMapBuffer; + internal IntPtr glMapBufferRange; + internal IntPtr glMapNamedBuffer; + internal IntPtr glMapNamedBufferRange; + internal IntPtr glMemoryBarrier; + internal IntPtr glMemoryBarrierByRegion; + internal IntPtr glMinSampleShading; + internal IntPtr glMultiDrawArrays; + internal IntPtr glMultiDrawArraysIndirect; + internal IntPtr glMultiDrawArraysIndirectCount; + internal IntPtr glMultiDrawElements; + internal IntPtr glMultiDrawElementsBaseVertex; + internal IntPtr glMultiDrawElementsIndirect; + internal IntPtr glMultiDrawElementsIndirectCount; + internal IntPtr glNamedBufferData; + internal IntPtr glNamedBufferStorage; + internal IntPtr glNamedBufferSubData; + internal IntPtr glNamedFramebufferDrawBuffer; + internal IntPtr glNamedFramebufferDrawBuffers; + internal IntPtr glNamedFramebufferParameteri; + internal IntPtr glNamedFramebufferReadBuffer; + internal IntPtr glNamedFramebufferRenderbuffer; + internal IntPtr glNamedFramebufferTexture; + internal IntPtr glNamedFramebufferTextureLayer; + internal IntPtr glNamedRenderbufferStorage; + internal IntPtr glNamedRenderbufferStorageMultisample; + internal IntPtr glObjectLabel; + internal IntPtr glObjectPtrLabel; + internal IntPtr glPatchParameterfv; + internal IntPtr glPatchParameteri; + internal IntPtr glPauseTransformFeedback; + internal IntPtr glPixelStoref; + internal IntPtr glPixelStorei; + internal IntPtr glPointParameterf; + internal IntPtr glPointParameterfv; + internal IntPtr glPointParameteri; + internal IntPtr glPointParameteriv; + internal IntPtr glPointSize; + internal IntPtr glPolygonMode; + internal IntPtr glPolygonOffset; + internal IntPtr glPolygonOffsetClamp; + internal IntPtr glPopDebugGroup; + internal IntPtr glPrimitiveRestartIndex; + internal IntPtr glProgramBinary; + internal IntPtr glProgramParameteri; + internal IntPtr glProgramUniform1d; + internal IntPtr glProgramUniform1dv; + internal IntPtr glProgramUniform1f; + internal IntPtr glProgramUniform1fv; + internal IntPtr glProgramUniform1i; + internal IntPtr glProgramUniform1iv; + internal IntPtr glProgramUniform1ui; + internal IntPtr glProgramUniform1uiv; + internal IntPtr glProgramUniform2d; + internal IntPtr glProgramUniform2dv; + internal IntPtr glProgramUniform2f; + internal IntPtr glProgramUniform2fv; + internal IntPtr glProgramUniform2i; + internal IntPtr glProgramUniform2iv; + internal IntPtr glProgramUniform2ui; + internal IntPtr glProgramUniform2uiv; + internal IntPtr glProgramUniform3d; + internal IntPtr glProgramUniform3dv; + internal IntPtr glProgramUniform3f; + internal IntPtr glProgramUniform3fv; + internal IntPtr glProgramUniform3i; + internal IntPtr glProgramUniform3iv; + internal IntPtr glProgramUniform3ui; + internal IntPtr glProgramUniform3uiv; + internal IntPtr glProgramUniform4d; + internal IntPtr glProgramUniform4dv; + internal IntPtr glProgramUniform4f; + internal IntPtr glProgramUniform4fv; + internal IntPtr glProgramUniform4i; + internal IntPtr glProgramUniform4iv; + internal IntPtr glProgramUniform4ui; + internal IntPtr glProgramUniform4uiv; + internal IntPtr glProgramUniformMatrix2dv; + internal IntPtr glProgramUniformMatrix2fv; + internal IntPtr glProgramUniformMatrix2x3dv; + internal IntPtr glProgramUniformMatrix2x3fv; + internal IntPtr glProgramUniformMatrix2x4dv; + internal IntPtr glProgramUniformMatrix2x4fv; + internal IntPtr glProgramUniformMatrix3dv; + internal IntPtr glProgramUniformMatrix3fv; + internal IntPtr glProgramUniformMatrix3x2dv; + internal IntPtr glProgramUniformMatrix3x2fv; + internal IntPtr glProgramUniformMatrix3x4dv; + internal IntPtr glProgramUniformMatrix3x4fv; + internal IntPtr glProgramUniformMatrix4dv; + internal IntPtr glProgramUniformMatrix4fv; + internal IntPtr glProgramUniformMatrix4x2dv; + internal IntPtr glProgramUniformMatrix4x2fv; + internal IntPtr glProgramUniformMatrix4x3dv; + internal IntPtr glProgramUniformMatrix4x3fv; + internal IntPtr glProvokingVertex; + internal IntPtr glPushDebugGroup; + internal IntPtr glQueryCounter; + internal IntPtr glReadBuffer; + internal IntPtr glReadnPixels; + internal IntPtr glReadPixels; + internal IntPtr glReleaseShaderCompiler; + internal IntPtr glRenderbufferStorage; + internal IntPtr glRenderbufferStorageMultisample; + internal IntPtr glResumeTransformFeedback; + internal IntPtr glSampleCoverage; + internal IntPtr glSampleMaski; + internal IntPtr glSamplerParameterf; + internal IntPtr glSamplerParameterfv; + internal IntPtr glSamplerParameteri; + internal IntPtr glSamplerParameterIiv; + internal IntPtr glSamplerParameterIuiv; + internal IntPtr glSamplerParameteriv; + internal IntPtr glScissor; + internal IntPtr glScissorArrayv; + internal IntPtr glScissorIndexed; + internal IntPtr glScissorIndexedv; + internal IntPtr glShaderBinary; + internal IntPtr glShaderSource; + internal IntPtr glShaderStorageBlockBinding; + internal IntPtr glSpecializeShader; + internal IntPtr glStencilFunc; + internal IntPtr glStencilFuncSeparate; + internal IntPtr glStencilMask; + internal IntPtr glStencilMaskSeparate; + internal IntPtr glStencilOp; + internal IntPtr glStencilOpSeparate; + internal IntPtr glTexBuffer; + internal IntPtr glTexBufferRange; + internal IntPtr glTexImage1D; + internal IntPtr glTexImage2D; + internal IntPtr glTexImage2DMultisample; + internal IntPtr glTexImage3D; + internal IntPtr glTexImage3DMultisample; + internal IntPtr glTexParameterf; + internal IntPtr glTexParameterfv; + internal IntPtr glTexParameteri; + internal IntPtr glTexParameterIiv; + internal IntPtr glTexParameterIuiv; + internal IntPtr glTexParameteriv; + internal IntPtr glTexStorage1D; + internal IntPtr glTexStorage2D; + internal IntPtr glTexStorage2DMultisample; + internal IntPtr glTexStorage3D; + internal IntPtr glTexStorage3DMultisample; + internal IntPtr glTexSubImage1D; + internal IntPtr glTexSubImage2D; + internal IntPtr glTexSubImage3D; + internal IntPtr glTextureBarrier; + internal IntPtr glTextureBuffer; + internal IntPtr glTextureBufferRange; + internal IntPtr glTextureParameterf; + internal IntPtr glTextureParameterfv; + internal IntPtr glTextureParameteri; + internal IntPtr glTextureParameterIiv; + internal IntPtr glTextureParameterIuiv; + internal IntPtr glTextureParameteriv; + internal IntPtr glTextureStorage1D; + internal IntPtr glTextureStorage2D; + internal IntPtr glTextureStorage2DMultisample; + internal IntPtr glTextureStorage3D; + internal IntPtr glTextureStorage3DMultisample; + internal IntPtr glTextureSubImage1D; + internal IntPtr glTextureSubImage2D; + internal IntPtr glTextureSubImage3D; + internal IntPtr glTextureView; + internal IntPtr glTransformFeedbackBufferBase; + internal IntPtr glTransformFeedbackBufferRange; + internal IntPtr glTransformFeedbackVaryings; + internal IntPtr glUniform1d; + internal IntPtr glUniform1dv; + internal IntPtr glUniform1f; + internal IntPtr glUniform1fv; + internal IntPtr glUniform1i; + internal IntPtr glUniform1iv; + internal IntPtr glUniform1ui; + internal IntPtr glUniform1uiv; + internal IntPtr glUniform2d; + internal IntPtr glUniform2dv; + internal IntPtr glUniform2f; + internal IntPtr glUniform2fv; + internal IntPtr glUniform2i; + internal IntPtr glUniform2iv; + internal IntPtr glUniform2ui; + internal IntPtr glUniform2uiv; + internal IntPtr glUniform3d; + internal IntPtr glUniform3dv; + internal IntPtr glUniform3f; + internal IntPtr glUniform3fv; + internal IntPtr glUniform3i; + internal IntPtr glUniform3iv; + internal IntPtr glUniform3ui; + internal IntPtr glUniform3uiv; + internal IntPtr glUniform4d; + internal IntPtr glUniform4dv; + internal IntPtr glUniform4f; + internal IntPtr glUniform4fv; + internal IntPtr glUniform4i; + internal IntPtr glUniform4iv; + internal IntPtr glUniform4ui; + internal IntPtr glUniform4uiv; + internal IntPtr glUniformBlockBinding; + internal IntPtr glUniformMatrix2dv; + internal IntPtr glUniformMatrix2fv; + internal IntPtr glUniformMatrix2x3dv; + internal IntPtr glUniformMatrix2x3fv; + internal IntPtr glUniformMatrix2x4dv; + internal IntPtr glUniformMatrix2x4fv; + internal IntPtr glUniformMatrix3dv; + internal IntPtr glUniformMatrix3fv; + internal IntPtr glUniformMatrix3x2dv; + internal IntPtr glUniformMatrix3x2fv; + internal IntPtr glUniformMatrix3x4dv; + internal IntPtr glUniformMatrix3x4fv; + internal IntPtr glUniformMatrix4dv; + internal IntPtr glUniformMatrix4fv; + internal IntPtr glUniformMatrix4x2dv; + internal IntPtr glUniformMatrix4x2fv; + internal IntPtr glUniformMatrix4x3dv; + internal IntPtr glUniformMatrix4x3fv; + internal IntPtr glUniformSubroutinesuiv; + internal IntPtr glUnmapBuffer; + internal IntPtr glUnmapNamedBuffer; + internal IntPtr glUseProgram; + internal IntPtr glUseProgramStages; + internal IntPtr glValidateProgram; + internal IntPtr glValidateProgramPipeline; + internal IntPtr glVertexArrayAttribBinding; + internal IntPtr glVertexArrayAttribFormat; + internal IntPtr glVertexArrayAttribIFormat; + internal IntPtr glVertexArrayAttribLFormat; + internal IntPtr glVertexArrayBindingDivisor; + internal IntPtr glVertexArrayElementBuffer; + internal IntPtr glVertexArrayVertexBuffer; + internal IntPtr glVertexArrayVertexBuffers; + internal IntPtr glVertexAttrib1d; + internal IntPtr glVertexAttrib1dv; + internal IntPtr glVertexAttrib1f; + internal IntPtr glVertexAttrib1fv; + internal IntPtr glVertexAttrib1s; + internal IntPtr glVertexAttrib1sv; + internal IntPtr glVertexAttrib2d; + internal IntPtr glVertexAttrib2dv; + internal IntPtr glVertexAttrib2f; + internal IntPtr glVertexAttrib2fv; + internal IntPtr glVertexAttrib2s; + internal IntPtr glVertexAttrib2sv; + internal IntPtr glVertexAttrib3d; + internal IntPtr glVertexAttrib3dv; + internal IntPtr glVertexAttrib3f; + internal IntPtr glVertexAttrib3fv; + internal IntPtr glVertexAttrib3s; + internal IntPtr glVertexAttrib3sv; + internal IntPtr glVertexAttrib4bv; + internal IntPtr glVertexAttrib4d; + internal IntPtr glVertexAttrib4dv; + internal IntPtr glVertexAttrib4f; + internal IntPtr glVertexAttrib4fv; + internal IntPtr glVertexAttrib4iv; + internal IntPtr glVertexAttrib4Nbv; + internal IntPtr glVertexAttrib4Niv; + internal IntPtr glVertexAttrib4Nsv; + internal IntPtr glVertexAttrib4Nub; + internal IntPtr glVertexAttrib4Nubv; + internal IntPtr glVertexAttrib4Nuiv; + internal IntPtr glVertexAttrib4Nusv; + internal IntPtr glVertexAttrib4s; + internal IntPtr glVertexAttrib4sv; + internal IntPtr glVertexAttrib4ubv; + internal IntPtr glVertexAttrib4uiv; + internal IntPtr glVertexAttrib4usv; + internal IntPtr glVertexAttribBinding; + internal IntPtr glVertexAttribDivisor; + internal IntPtr glVertexAttribFormat; + internal IntPtr glVertexAttribI1i; + internal IntPtr glVertexAttribI1iv; + internal IntPtr glVertexAttribI1ui; + internal IntPtr glVertexAttribI1uiv; + internal IntPtr glVertexAttribI2i; + internal IntPtr glVertexAttribI2iv; + internal IntPtr glVertexAttribI2ui; + internal IntPtr glVertexAttribI2uiv; + internal IntPtr glVertexAttribI3i; + internal IntPtr glVertexAttribI3iv; + internal IntPtr glVertexAttribI3ui; + internal IntPtr glVertexAttribI3uiv; + internal IntPtr glVertexAttribI4bv; + internal IntPtr glVertexAttribI4i; + internal IntPtr glVertexAttribI4iv; + internal IntPtr glVertexAttribI4sv; + internal IntPtr glVertexAttribI4ubv; + internal IntPtr glVertexAttribI4ui; + internal IntPtr glVertexAttribI4uiv; + internal IntPtr glVertexAttribI4usv; + internal IntPtr glVertexAttribIFormat; + internal IntPtr glVertexAttribIPointer; + internal IntPtr glVertexAttribL1d; + internal IntPtr glVertexAttribL1dv; + internal IntPtr glVertexAttribL2d; + internal IntPtr glVertexAttribL2dv; + internal IntPtr glVertexAttribL3d; + internal IntPtr glVertexAttribL3dv; + internal IntPtr glVertexAttribL4d; + internal IntPtr glVertexAttribL4dv; + internal IntPtr glVertexAttribLFormat; + internal IntPtr glVertexAttribLPointer; + internal IntPtr glVertexAttribP1ui; + internal IntPtr glVertexAttribP1uiv; + internal IntPtr glVertexAttribP2ui; + internal IntPtr glVertexAttribP2uiv; + internal IntPtr glVertexAttribP3ui; + internal IntPtr glVertexAttribP3uiv; + internal IntPtr glVertexAttribP4ui; + internal IntPtr glVertexAttribP4uiv; + internal IntPtr glVertexAttribPointer; + internal IntPtr glVertexBindingDivisor; + internal IntPtr glViewport; + internal IntPtr glViewportArrayv; + internal IntPtr glViewportIndexedf; + internal IntPtr glViewportIndexedfv; + internal IntPtr glWaitSync; + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.SourceManager.cs similarity index 100% rename from StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs rename to StgSharp.Common/Graphics/OpenGL/glFunction.SourceManager.cs diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.cs index 947e13db..4bc1a07a 100644 --- a/StgSharp.Common/Graphics/OpenGL/glFunction.cs +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glFunction" // Project: StgSharp @@ -92,13 +92,17 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ActiveTextureUnit(uint type) + public void ActiveTextureUnit( + uint type + ) { Context.glActiveTexture(type); } [Conditional("DEBUG")] - public void Assert(bool shouldReportWhenNormal) + public void Assert( + bool shouldReportWhenNormal + ) { uint code = Context.glGetError(); if (code != glConst.NO_ERROR) { @@ -110,20 +114,17 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachShader(GlHandle program, GlHandle shader) - { - Context.glAttachShader(program.Value, shader.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBuffer(BufferType bufferType, GlHandle handle) + public void BindBuffer( + BufferType bufferType, + GlHandle handle + ) { Context.glBindBuffer((uint)bufferType, handle.Value); } /// /// Bind a frame BufferHandle to a frame BufferHandle target Same function as glBindFramebuffer. + /// href="https://docs._gl/gl3/glBindFramebuffer"> glBindFramebuffer . /// /// /// The frame BufferHandle target of the binding operation. @@ -132,47 +133,46 @@ namespace StgSharp.Graphics.OpenGL /// The handle of the frame BufferHandle object to bind. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFrameBuffer(FrameBufferTarget target, GlHandle handle) + public void BindFrameBuffer( + FrameBufferTarget target, + GlHandle handle + ) { Context.glBindFramebuffer((uint)target, handle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindRenderBuffer(GlHandle handle) + public void BindRenderBuffer( + GlHandle handle + ) { Context.glBindRenderbuffer(glConst.RENDERBUFFER, handle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTexture(uint type, GlHandle texture) - { - Context.glBindTexture(type, texture.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexArray(GlHandle handle) + public void BindVertexArray( + GlHandle handle + ) { Context.glBindVertexArray(handle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FrameBufferStatus CheckFrameBufferStatus(FrameBufferTarget target) + public FrameBufferStatus CheckFrameBufferStatus( + FrameBufferTarget target + ) { return (FrameBufferStatus)Context.glCheckFramebufferStatus((uint)target); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Clear(MaskBufferBit mask) + public void Clear( + MaskBufferBit mask + ) { Context.glClear((uint)mask); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void ClearColor(float R, float G, float B, float A) - { - Context.glClearColor(R, G, B, A); - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public void ClearError() { @@ -199,16 +199,13 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CombineFrameBufferRenderBuffer(FrameBufferAttachment attachment, GlHandle rboHandle) + public void CombineFrameBufferRenderBuffer( + FrameBufferAttachment attachment, + GlHandle rboHandle + ) { - Context.glFramebufferRenderbuffer(glConst.FRAMEBUFFER, (uint)attachment, glConst.RENDERBUFFER, - rboHandle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompileShader(GlHandle shaderhandle) - { - Context.glCompileShader(shaderhandle.Value); + Context.glFramebufferRenderbuffer(glConst.FRAMEBUFFER, (uint)attachment, + glConst.RENDERBUFFER, rboHandle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -218,13 +215,9 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle CreateProgram() - { - return GlHandle.Create(Context.glCreateProgram()); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] CreateProgram(int count) + public unsafe GlHandle[] CreateProgram( + int count + ) { GlHandle[] h = new GlHandle[count]; for (int i = 0; i < count; i++) { @@ -234,7 +227,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle[] CreateShaderSet(int count, ShaderType type) + public GlHandle[] CreateShaderSet( + int count, + ShaderType type + ) { GlHandle[] ret = new GlHandle[count]; uint t = (uint)type; @@ -252,13 +248,17 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffer(GlHandle handle) + public unsafe void DeleteBuffer( + GlHandle handle + ) { Context.glDeleteBuffers(1, (uint*)&handle); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffers(GlHandle[] handle) + public unsafe void DeleteBuffers( + GlHandle[] handle + ) { if ((handle == null) || (handle.Length == 0)) { throw new ArgumentNullException(nameof(handle)); @@ -274,19 +274,24 @@ namespace StgSharp.Graphics.OpenGL /// /// Delete a render BufferHandle object Very simlilar function as glDeleteRenderbuffers. The only - /// deifference is that this mehtod can only delete one renderbuffer at the same time. + /// href="https://docs.gl/gl3/glDeleteRenderbuffers"> glDeleteRenderbuffers . The + /// only deifference is that this mehtod can only delete one renderbuffer at the same + /// time. /// /// /// Handle to BufferHandle to delete. /// - public unsafe void DeleteRenderBuffer(GlHandle bufferHandle) + public unsafe void DeleteRenderBuffer( + GlHandle bufferHandle + ) { Context.glDeleteRenderbuffers(1, &bufferHandle.Value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteVertexArrays(GlHandle[] arrays) + public unsafe void DeleteVertexArrays( + GlHandle[] arrays + ) { fixed (GlHandle* hptr = arrays) { @@ -297,25 +302,38 @@ namespace StgSharp.Graphics.OpenGL } } - public void DepthMaskAccess(bool isWrite) + public void DepthMaskAccess( + bool isWrite + ) { - Context.glDepthMask(isWrite); + Context.glDepthMask(isWrite ? (byte)1 : (byte)0); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Disable(glOperation operation) + public void Disable( + glOperation operation + ) { Context.glDisable((uint)operation); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DrawArrays(GeometryType mode, int first, uint count) + public unsafe void DrawArrays( + GeometryType mode, + int first, + int count + ) { Context.glDrawArrays((uint)mode, first, count); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DrawElements(GeometryType mode, uint count, TypeCode type, IntPtr ptr) + public unsafe void DrawElements( + GeometryType mode, + int count, + TypeCode type, + IntPtr ptr + ) { uint a; a = type switch @@ -326,37 +344,34 @@ namespace StgSharp.Graphics.OpenGL _ => throw new ArgumentException( $"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}") }; - Context.glDrawElements((uint)mode, count, a, (void*)ptr); + Context.glDrawElements((uint)mode, count, a, (nint*)ptr); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstanced(GeometryType mode, uint count, TypeCode type, IntPtr ptr, uint amount) + public void DrawElementsInstanced( + GeometryType mode, + int count, + TypeCode type, + IntPtr ptr, + int amount + ) { uint a; - switch (type) + a = type switch { - case TypeCode.UInt32: - a = glConst.UNSIGNED_INT; - break; - - case TypeCode.UInt16: - a = glConst.UNSIGNED_SHORT; - break; - - case TypeCode.Byte: - a = glConst.UNSIGNED_BYTE; - break; - default: - DefaultLog.InternalWriteLog( - $"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}", - LogType.Error); - return; - } - Context.glDrawElementsInstanced((uint)mode, count, a, (void*)ptr, amount); + TypeCode.UInt32 => glConst.UNSIGNED_INT, + TypeCode.UInt16 => glConst.UNSIGNED_SHORT, + TypeCode.Byte => glConst.UNSIGNED_BYTE, + _ => throw new ArgumentException( + $"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}") + }; + Context.glDrawElementsInstanced((uint)mode, count, a, (nint*)ptr, amount); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Enable(glOperation operation) + public void Enable( + glOperation operation + ) { Context.glEnable((uint)operation); } @@ -367,13 +382,17 @@ namespace StgSharp.Graphics.OpenGL uint attachment, Texture2DTarget texTarget, GlHandle textureHandle, - int level) + int level + ) { - Context.glFramebufferTexture2D((uint)target, attachment, (uint)texTarget, textureHandle.Value, level); + Context.glFramebufferTexture2D((uint)target, attachment, (uint)texTarget, + textureHandle.Value, level); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenBuffers(int count) + public unsafe GlHandle[] GenBuffers( + int count + ) { GlHandle[] h = new GlHandle[count]; fixed (GlHandle* hptr = h) @@ -386,12 +405,16 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenerateMipmap(Texture2DTarget target) + public void GenerateMipmap( + Texture2DTarget target + ) { Context.glGenerateMipmap((uint)target); } - public unsafe GlHandle[] GenFrameBuffers(int count) + public unsafe GlHandle[] GenFrameBuffers( + int count + ) { GlHandle[] h = new GlHandle[count]; fixed (GlHandle* hptr = h) { @@ -401,7 +424,9 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenRenderBuffer(int count) + public unsafe GlHandle[] GenRenderBuffer( + int count + ) { GlHandle[] h = new GlHandle[count]; fixed (GlHandle* hptr = h) { @@ -411,7 +436,9 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenTextures(int count) + public unsafe GlHandle[] GenTextures( + int count + ) { GlHandle[] h = new GlHandle[count]; fixed (GlHandle* hptr = h) { @@ -420,7 +447,9 @@ namespace StgSharp.Graphics.OpenGL return h; } - public unsafe GlHandle[] GenVertexArrays(int count) + public unsafe GlHandle[] GenVertexArrays( + int count + ) { GlHandle[] h = new GlHandle[count]; fixed (GlHandle* hptr = h) { @@ -429,23 +458,24 @@ namespace StgSharp.Graphics.OpenGL return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint GetError() - { - return Context.glGetError(); - } - - public unsafe int GetMaskInteger(uint statusCode) + public unsafe int GetMaskInteger( + uint statusCode + ) { int ret = 0; Context.glGetIntegerv(statusCode, &ret); return ret; } - public string GetShaderStatus(Shader s, int index, int key) + public string GetShaderStatus( + Shader s, + int index, + int key + ) { IntPtr sptr = IntPtr.Zero; - if (GraphicFramework.glCheckShaderStatus(ref Context, s.handle[index].Value, key, ref sptr) == 0) { + if (GraphicFramework.glCheckShaderStatus(ref Context, s.handle[index].Value, key, + ref sptr) == 0) { return Marshal.PtrToStringAnsi(sptr); } return string.Empty; @@ -457,16 +487,22 @@ namespace StgSharp.Graphics.OpenGL int level, ImageChannel channel, PixelChannelLayout channelLayout, - T[] dataStream) - where T: unmanaged,INumber + T[] dataStream + ) where T : unmanaged,INumber { fixed (T* tptr = dataStream) { - Context.glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, tptr); + Context.glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, + (nint*)tptr); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureLevelProperty(uint textureTypeMask, int level, uint propertyMask, out int propertyValue) + public void GetTextureLevelProperty( + uint textureTypeMask, + int level, + uint propertyMask, + out int propertyValue + ) { fixed (int* iptr = &propertyValue) { Context.glGetTexLevelParameteriv(textureTypeMask, level, propertyMask, iptr); @@ -474,7 +510,10 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle GetUniformLocation(GlHandle program, string name) + public unsafe GlHandle GetUniformLocation( + GlHandle program, + string name + ) { byte[] code = Encoding.UTF8.GetBytes(name); fixed (byte* ptr = code) @@ -494,54 +533,59 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource(GlHandle shaderHandle, byte[] codeStream) + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + byte[] codeStream + ) { fixed (byte* streamPtr = codeStream) { - Context.glShaderSource(shaderHandle.Value, 1, &streamPtr, (void*)0); + Context.glShaderSource(shaderHandle.Value, 1, &streamPtr, (int*)0); } } - public unsafe void LoadShaderSource(GlHandle shaderHandle, ReadOnlySpan codeStream) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream + ) { - fixed (char* streamPtr = codeStream) - { - byte* bptr = (byte*)streamPtr; - Context.glShaderSource(shaderHandle.Value, 1, &bptr, (void*)0); + fixed (char* streamPtr = codeStream) { + Context.glShaderSource(shaderHandle.Value, 1, (byte**)&streamPtr, (int*)0); } } - public unsafe void LoadShaderSource(GlHandle shaderHandle, ReadOnlySpan codeStream) + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream + ) { fixed (byte* streamPtr = codeStream) { byte* bptr = streamPtr; - Context.glShaderSource(shaderHandle.Value, 1, &bptr, (void*)0); + Context.glShaderSource(shaderHandle.Value, 1, &bptr, (int*)0); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonMode(FaceMode mode) + public void PolygonMode( + FaceMode mode + ) { Context.glPolygonMode(glConst.FRONT_AND_BACK, (uint)mode); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonOffset(float factor, float unit) - { - Context.glPolygonOffset(factor, unit); - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public void ReadPixels( (int X, int Y) beginPosition, (int width, int height) size, FrameBufferChannel format, PixelChannelLayout dataType, - ref byte[] stream) + ref byte[] stream + ) { fixed (byte* bptr = stream) { - Context.glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, (uint)format, - (uint)dataType, bptr); + Context.glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, + (uint)format, (uint)dataType, (nint*)bptr); } } @@ -549,33 +593,40 @@ namespace StgSharp.Graphics.OpenGL in Image i, (int X, int Y) beginPosition, FrameBufferChannel format, - PixelChannelLayout dataType) + PixelChannelLayout dataType + ) { 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, - bptr); + Context.glReadPixels(beginPosition.X, beginPosition.Y, i.Width, i.Height, + (uint)format, (uint)dataType, (nint*)bptr); } i.PixelUpdateCount++; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, T bufferData, BufferUsage usage) - where T: unmanaged,INumber + public unsafe void SetBufferData( + BufferType bufferType, + T bufferData, + BufferUsage usage + ) where T : unmanaged,INumber { int size = Marshal.SizeOf(); T* p = &bufferData; - Context.glBufferData((uint)bufferType, (IntPtr)size, (IntPtr)p, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (nint*)p, (uint)usage); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, T[] bufferArray, BufferUsage usage) - where T: unmanaged,INumber + public unsafe void SetBufferData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage + ) where T : unmanaged,INumber { int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); if (bufferArray == null) { @@ -583,85 +634,112 @@ namespace StgSharp.Graphics.OpenGL } fixed (void* bufferPtr = bufferArray) { - Context.glBufferData((uint)bufferType, (IntPtr)size, (IntPtr)bufferPtr, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (nint*)bufferPtr, (uint)usage); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, ReadOnlySpan bufferSpan, BufferUsage usage) - where T: unmanaged,INumber + public unsafe void SetBufferData( + BufferType bufferType, + ReadOnlySpan bufferSpan, + BufferUsage usage + ) where T : unmanaged,INumber { - int size = bufferSpan.Length * Marshal.SizeOf(typeof(T)); - if (bufferSpan == null) { + int size = bufferSpan.Length * Marshal.SizeOf(); + if (bufferSpan.IsEmpty) { return; } fixed (void* bufferPtr = bufferSpan) { - Context.glBufferData((uint)bufferType, (IntPtr)size, (IntPtr)bufferPtr, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, + (uint)usage); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, Span bufferArray, BufferUsage usage) - where T: unmanaged, INumber + public unsafe void SetBufferData( + BufferType bufferType, + Span bufferArray, + BufferUsage usage + ) where T : unmanaged, INumber { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) { + int size = bufferArray.Length * Marshal.SizeOf(); + if (bufferArray.IsEmpty) { return; } fixed (void* bufferPtr = bufferArray) { - Context.glBufferData((uint)bufferType, (IntPtr)size, (IntPtr)bufferPtr, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, + (uint)usage); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData(BufferType bufferType, ReadOnlySpan bufferSpan, BufferUsage usage) - where T: unmanaged, IUnmanagedVector + public unsafe void SetBufferVectorData( + BufferType bufferType, + ReadOnlySpan bufferSpan, + BufferUsage usage + ) where T : unmanaged, IUnmanagedVector { - int size = bufferSpan.Length * Marshal.SizeOf(typeof(T)); + int size = bufferSpan.Length * Marshal.SizeOf(); fixed (void* bufferPtr = bufferSpan) { - Context.glBufferData((uint)bufferType, (IntPtr)size, (IntPtr)bufferPtr, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, + (uint)usage); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData(BufferType bufferType, T[] bufferArray, BufferUsage usage) - where T: unmanaged, IUnmanagedVector + 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, (IntPtr)size, (IntPtr)bufferPtr, (uint)usage); + Context.glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, + (uint)usage); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void SetRenderBufferStorage( RenderBufferInternalFormat internalFormat, - (int width, int height) size) + (int width, int height) size + ) { - Context.glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, size.width, size.height); + Context.glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, size.width, + size.height); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void SetRenderBufferStorage( RenderBufferInternalFormat internalFormat, - (uint width, uint height) size) + (uint width, uint height) size + ) { - Context.glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, (int)size.width, - (int)size.height); + Context.glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, + (int)size.width, (int)size.height); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetVertexAttribute(uint index, int size, TypeCode t, bool normalized, uint stride, int pointer) + public void SetVertexAttribute( + uint index, + int size, + TypeCode t, + bool normalized, + int stride, + int pointer + ) { uint type = GraphicFramework.GLtype[(int)t]; - Context.glVertexAttribPointer(index, size, type, normalized ? 1 : 0, stride, (void*)pointer); + Context.glVertexAttribPointer(index, size, type, (byte)(normalized ? 1 : 0), stride, + (nint*)pointer); Context.glEnableVertexAttribArray(index); } @@ -670,18 +748,18 @@ namespace StgSharp.Graphics.OpenGL Texture2DTarget target, int level, ImageChannel sourceChannel, - uint width, - uint height, + int width, + int height, ImageChannel targetChannel, PixelChannelLayout type, - T[] pixels) - where T: unmanaged, INumber + T[] pixels + ) where T : unmanaged, INumber { fixed (T* tptr = pixels) { T* ptr = ((pixels == null) || (pixels.Length == 0)) ? (T*)IntPtr.Zero : tptr; - Context.glTexImage2D((uint)target, level, (uint)sourceChannel, width, height, 0, (uint)targetChannel, - (uint)type, tptr); + Context.glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, + (uint)targetChannel, (uint)type, (nint*)tptr); } } @@ -690,55 +768,55 @@ namespace StgSharp.Graphics.OpenGL Texture2DTarget target, int level, ImageChannel sourceChannel, - uint width, - uint height, + int width, + int height, ImageChannel targetChannel, PixelChannelLayout type, - Span pixelSpan) - where T: unmanaged, INumber + Span pixelSpan + ) where T : unmanaged, INumber { fixed (T* tPtr = pixelSpan) { - Context.glTexImage2D((uint)target, level, (uint)sourceChannel, width, height, 0, (uint)targetChannel, - (uint)type, tPtr); + Context.glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, + (uint)targetChannel, (uint)type, (nint*)tPtr); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(int target, uint pname, int param) + public void TextureParameter( + int target, + uint pname, + int param + ) { Context.glTexParameteri((uint)target, pname, param); } - public static bool TryGetFunctionPackage(IntPtr handle, out OpenGLFunction functionPackage) + public static bool TryGetFunctionPackage( + IntPtr handle, + out OpenGLFunction functionPackage + ) { return contextToGLMap.TryGetValue(handle, out functionPackage); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UseProgram(GlHandle program) - { - Context.glUseProgram(program.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttributeDivisor(uint layoutIndex, uint divisor) + public void VertexAttributeDivisor( + uint layoutIndex, + uint divisor + ) { Context.glVertexAttribDivisor(layoutIndex, divisor); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Viewport(int x, int y, uint width, uint height) - { - Context.glViewport(x, y, width, height); - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public void WaitAccomplishment() { Context.glFinish(); } - internal static OpenGLFunction BuildGlFunctionPackage(IntPtr handle) + internal static OpenGLFunction BuildGlFunctionPackage( + IntPtr handle + ) { if (contextToGLMap.TryGetValue(handle, out OpenGLFunction pack)) { return pack; diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v3_3.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v3_3.cs new file mode 100644 index 00000000..c00d8231 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v3_3.cs @@ -0,0 +1,3788 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v3_3" +// 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 StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +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, + nuint 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, + nuint size, + ReadOnlySpan data, + uint usage + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glBufferData(target, size, dataPtr, usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferSubData( + uint target, + nint offset, + nuint size, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glBufferSubData(target, offset, size, dataPtr); + } + } + + [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 ClearBufferfi( + uint buffer, + int drawbuffer, + float depth, + int stencil + ) + { + Context.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferfv( + uint buffer, + int drawbuffer, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glClearBufferfv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferiv( + uint buffer, + int drawbuffer, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glClearBufferiv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferuiv( + 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, + IntPtr 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 ColorMaski( + 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, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexImage1D(target, level, internalformat, width, border, + imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage2D( + uint target, + int level, + uint internalformat, + int width, + int height, + int border, + int imageSize, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexImage2D(target, level, internalformat, width, height, border, + imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage3D( + uint target, + int level, + uint internalformat, + int width, + int height, + int depth, + int border, + int imageSize, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexImage3D(target, level, internalformat, width, height, depth, + border, imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage1D( + uint target, + int level, + int xoffset, + int width, + uint format, + int imageSize, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, + dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage2D( + uint target, + int level, + int xoffset, + int yoffset, + int width, + int height, + uint format, + int imageSize, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, + format, imageSize, dataPtr); + } + } + + [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, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, + height, depth, format, imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyBufferSubData( + uint readTarget, + uint writeTarget, + nint readOffset, + nint writeOffset, + nuint 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 uint CreateShader( + ShaderType type + ) + { + return Context.glCreateShader((uint)type); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CullFace( + uint mode + ) + { + Context.glCullFace(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteBuffers( + int n, + ReadOnlySpan buffers + ) + { + fixed (uint* buffersPtr = buffers) { + Context.glDeleteBuffers(n, buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteFramebuffers( + int n, + ReadOnlySpan framebuffers + ) + { + fixed (uint* framebuffersPtr = framebuffers) { + Context.glDeleteFramebuffers(n, framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgram( + GlHandle program + ) + { + Context.glDeleteProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteQueries( + int n, + ReadOnlySpan ids + ) + { + fixed (uint* idsPtr = ids) { + Context.glDeleteQueries(n, idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteRenderbuffers( + int n, + ReadOnlySpan renderbuffers + ) + { + fixed (uint* renderbuffersPtr = renderbuffers) { + Context.glDeleteRenderbuffers(n, renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteSamplers( + int count, + ReadOnlySpan samplers + ) + { + fixed (uint* samplersPtr = samplers) { + Context.glDeleteSamplers(count, 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( + int n, + ReadOnlySpan textures + ) + { + fixed (uint* texturesPtr = textures) { + Context.glDeleteTextures(n, texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteVertexArrays( + int n, + ReadOnlySpan arrays + ) + { + fixed (uint* arraysPtr = arrays) { + Context.glDeleteVertexArrays(n, 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 Disablei( + uint target, + uint index + ) + { + Context.glDisablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DisableVertexAttribArray( + uint index + ) + { + Context.glDisableVertexAttribArray(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( + int n, + ReadOnlySpan bufs + ) + { + fixed (uint* bufsPtr = bufs) { + Context.glDrawBuffers(n, bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElements( + uint mode, + int count, + ShaderType type, + ReadOnlySpan indices + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElements(mode, count, (uint)type, indicesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsBaseVertex( + uint mode, + int count, + ShaderType type, + ReadOnlySpan indices, + int basevertex + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElementsBaseVertex(mode, count, (uint)type, indicesPtr, basevertex); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstanced( + uint mode, + int count, + ShaderType type, + ReadOnlySpan indices, + int instancecount + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElementsInstanced(mode, count, (uint)type, indicesPtr, instancecount); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertex( + uint mode, + int count, + ShaderType type, + ReadOnlySpan indices, + int instancecount, + int basevertex + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElementsInstancedBaseVertex(mode, count, (uint)type, indicesPtr, + instancecount, basevertex); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElements( + uint mode, + uint start, + uint end, + int count, + ShaderType type, + ReadOnlySpan indices + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawRangeElements(mode, start, end, count, (uint)type, indicesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElementsBaseVertex( + uint mode, + uint start, + uint end, + int count, + ShaderType type, + ReadOnlySpan indices, + int basevertex + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawRangeElementsBaseVertex(mode, start, end, count, (uint)type, + indicesPtr, basevertex); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable( + uint cap + ) + { + Context.glEnable(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enablei( + uint target, + uint index + ) + { + Context.glEnablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnableVertexAttribArray( + uint index + ) + { + Context.glEnableVertexAttribArray(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, + nuint 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( + int n, + uint* buffers + ) + { + Context.glGenBuffers(n, buffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateMipmap( + uint target + ) + { + Context.glGenerateMipmap(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenFramebuffers( + int n, + uint* framebuffers + ) + { + Context.glGenFramebuffers(n, framebuffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenQueries( + int n, + uint* ids + ) + { + Context.glGenQueries(n, ids); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenRenderbuffers( + int n, + uint* renderbuffers + ) + { + Context.glGenRenderbuffers(n, renderbuffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenSamplers( + int count, + uint* samplers + ) + { + Context.glGenSamplers(count, samplers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenTextures( + int n, + uint* textures + ) + { + Context.glGenTextures(n, textures); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenVertexArrays( + int n, + uint* arrays + ) + { + Context.glGenVertexArrays(n, arrays); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveAttrib( + GlHandle program, + uint index, + int bufSize, + int* length, + int* size, + uint* type, + byte* name + ) + { + Context.glGetActiveAttrib(program.Value, index, bufSize, length, size, type, name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniform( + GlHandle program, + uint index, + int bufSize, + int* length, + int* size, + uint* type, + byte* name + ) + { + Context.glGetActiveUniform(program.Value, index, bufSize, length, size, type, name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockiv( + GlHandle program, + uint uniformBlockIndex, + uint pname, + int* @params + ) + { + Context.glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockName( + GlHandle program, + uint uniformBlockIndex, + int bufSize, + int* length, + byte* uniformBlockName + ) + { + Context.glGetActiveUniformBlockName(program.Value, uniformBlockIndex, bufSize, length, + uniformBlockName); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformName( + GlHandle program, + uint uniformIndex, + int bufSize, + int* length, + byte* uniformName + ) + { + Context.glGetActiveUniformName(program.Value, uniformIndex, bufSize, length, + uniformName); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformsiv( + GlHandle program, + int uniformCount, + ReadOnlySpan uniformIndices, + uint pname, + int* @params + ) + { + fixed (uint* uniformIndicesPtr = uniformIndices) { + Context.glGetActiveUniformsiv(program.Value, uniformCount, uniformIndicesPtr, pname, + @params); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetAttachedShaders( + GlHandle program, + int maxCount, + int* count, + uint* shaders + ) + { + Context.glGetAttachedShaders(program.Value, maxCount, count, shaders); + } + + [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, + byte* data + ) + { + Context.glGetBooleani_v(target, index, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBooleanv( + uint pname, + byte* data + ) + { + Context.glGetBooleanv(pname, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameteri64v( + uint target, + uint pname, + IntPtr* @params + ) + { + Context.glGetBufferParameteri64v(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameteriv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetBufferParameteriv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferPointerv( + uint target, + uint pname, + IntPtr* @params + ) + { + Context.glGetBufferPointerv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferSubData( + uint target, + nint offset, + nuint size, + IntPtr* data + ) + { + Context.glGetBufferSubData(target, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTexImage( + uint target, + int level, + IntPtr* img + ) + { + Context.glGetCompressedTexImage(target, level, img); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublev( + uint pname, + double* data + ) + { + Context.glGetDoublev(pname, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetError() + { + return Context.glGetError(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloatv( + uint pname, + float* data + ) + { + Context.glGetFloatv(pname, data); + } + + [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, + int* @params + ) + { + Context.glGetFramebufferAttachmentParameteriv(target, attachment, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64i_v( + uint target, + uint index, + IntPtr* data + ) + { + Context.glGetInteger64i_v(target, index, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64v( + uint pname, + IntPtr* data + ) + { + Context.glGetInteger64v(pname, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegeri_v( + uint target, + uint index, + int* data + ) + { + Context.glGetIntegeri_v(target, index, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegerv( + uint pname, + int* data + ) + { + Context.glGetIntegerv(pname, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetMultisamplefv( + uint pname, + uint index, + float* val + ) + { + Context.glGetMultisamplefv(pname, index, val); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInfoLog( + GlHandle program, + int bufSize, + int* length, + byte* infoLog + ) + { + Context.glGetProgramInfoLog(program.Value, bufSize, length, infoLog); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramiv( + GlHandle program, + uint pname, + int* @params + ) + { + Context.glGetProgramiv(program.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryiv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetQueryiv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObjecti64v( + uint id, + uint pname, + IntPtr* @params + ) + { + Context.glGetQueryObjecti64v(id, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObjectiv( + uint id, + uint pname, + int* @params + ) + { + Context.glGetQueryObjectiv(id, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObjectui64v( + uint id, + uint pname, + IntPtr* @params + ) + { + Context.glGetQueryObjectui64v(id, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObjectuiv( + uint id, + uint pname, + uint* @params + ) + { + Context.glGetQueryObjectuiv(id, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetRenderbufferParameteriv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetRenderbufferParameteriv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterfv( + GlHandle sampler, + uint pname, + float* @params + ) + { + Context.glGetSamplerParameterfv(sampler.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterIiv( + GlHandle sampler, + uint pname, + int* @params + ) + { + Context.glGetSamplerParameterIiv(sampler.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterIuiv( + GlHandle sampler, + uint pname, + uint* @params + ) + { + Context.glGetSamplerParameterIuiv(sampler.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameteriv( + GlHandle sampler, + uint pname, + int* @params + ) + { + Context.glGetSamplerParameteriv(sampler.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderInfoLog( + GlHandle shader, + int bufSize, + int* length, + byte* infoLog + ) + { + Context.glGetShaderInfoLog(shader.Value, bufSize, length, infoLog); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderiv( + GlHandle shader, + uint pname, + int* @params + ) + { + Context.glGetShaderiv(shader.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderSource( + GlHandle shader, + int bufSize, + int* length, + byte* source + ) + { + Context.glGetShaderSource(shader.Value, bufSize, length, source); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string GetString( + uint name + ) + { + return Marshal.PtrToStringAuto((nint)Context.glGetString(name)) ?? string.Empty; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string GetStringi( + uint name, + uint index + ) + { + return Marshal.PtrToStringAuto((nint)Context.glGetStringi(name, index)) ?? string.Empty; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSynciv( + glSync sync, + uint pname, + int count, + int* length, + int* values + ) + { + Context.glGetSynciv(sync, pname, count, length, values); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexImage( + uint target, + int level, + uint format, + ShaderType type, + IntPtr* pixels + ) + { + Context.glGetTexImage(target, level, format, (uint)type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameterfv( + uint target, + int level, + uint pname, + float* @params + ) + { + Context.glGetTexLevelParameterfv(target, level, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameteriv( + uint target, + int level, + uint pname, + int* @params + ) + { + Context.glGetTexLevelParameteriv(target, level, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterfv( + uint target, + uint pname, + float* @params + ) + { + Context.glGetTexParameterfv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterIiv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetTexParameterIiv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterIuiv( + uint target, + uint pname, + uint* @params + ) + { + Context.glGetTexParameterIuiv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameteriv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetTexParameteriv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackVarying( + GlHandle program, + uint index, + int bufSize, + int* length, + int* size, + uint* type, + byte* name + ) + { + Context.glGetTransformFeedbackVarying(program.Value, index, bufSize, length, size, type, + name); + } + + [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 GetUniformfv( + GlHandle program, + int location, + float* @params + ) + { + Context.glGetUniformfv(program.Value, location, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformIndices( + GlHandle program, + int uniformCount, + ReadOnlySpan uniformNames, + uint* uniformIndices + ) + { + fixed (byte* uniformNamesPtr = uniformNames) { + Context.glGetUniformIndices(program.Value, uniformCount, uniformNamesPtr, + uniformIndices); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformiv( + GlHandle program, + int location, + int* @params + ) + { + Context.glGetUniformiv(program.Value, location, @params); + } + + [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 GetUniformuiv( + GlHandle program, + int location, + uint* @params + ) + { + Context.glGetUniformuiv(program.Value, location, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribdv( + uint index, + uint pname, + double* @params + ) + { + Context.glGetVertexAttribdv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribfv( + uint index, + uint pname, + float* @params + ) + { + Context.glGetVertexAttribfv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribIiv( + uint index, + uint pname, + int* @params + ) + { + Context.glGetVertexAttribIiv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribIuiv( + uint index, + uint pname, + uint* @params + ) + { + Context.glGetVertexAttribIuiv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribiv( + uint index, + uint pname, + int* @params + ) + { + Context.glGetVertexAttribiv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribPointerv( + uint index, + uint pname, + IntPtr* pointer + ) + { + Context.glGetVertexAttribPointerv(index, pname, pointer); + } + + [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 IsEnabledi( + 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 + ) + { + Context.glMapBuffer(target, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MapBufferRange( + uint target, + nint offset, + nuint length, + uint access + ) + { + Context.glMapBufferRange(target, offset, length, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArrays( + uint mode, + ReadOnlySpan first, + ReadOnlySpan count, + int drawcount + ) + { + fixed (int* firstPtr = first) + { + fixed (int* countPtr = count) { + Context.glMultiDrawArrays(mode, firstPtr, countPtr, drawcount); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElements( + uint mode, + ReadOnlySpan count, + ShaderType type, + ReadOnlySpan indices, + int drawcount + ) + { + fixed (int* countPtr = count) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glMultiDrawElements(mode, countPtr, (uint)type, indicesPtr, drawcount); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsBaseVertex( + uint mode, + ReadOnlySpan count, + ShaderType type, + ReadOnlySpan indices, + int drawcount, + ReadOnlySpan basevertex + ) + { + fixed (int* countPtr = count) + { + fixed (IntPtr* indicesPtr = indices) + { + fixed (int* basevertexPtr = basevertex) { + Context.glMultiDrawElementsBaseVertex(mode, countPtr, (uint)type, + indicesPtr, drawcount, basevertexPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStoref( + uint pname, + float param + ) + { + Context.glPixelStoref(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStorei( + uint pname, + int param + ) + { + Context.glPixelStorei(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameterf( + uint pname, + float param + ) + { + Context.glPointParameterf(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameterfv( + uint pname, + ReadOnlySpan @params + ) + { + fixed (float* @paramsPtr = @params) { + Context.glPointParameterfv(pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameteri( + uint pname, + int param + ) + { + Context.glPointParameteri(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameteriv( + 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, + ShaderType type, + IntPtr* pixels + ) + { + Context.glReadPixels(x, y, width, height, format, (uint)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 SamplerParameterf( + GlHandle sampler, + uint pname, + float param + ) + { + Context.glSamplerParameterf(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterfv( + GlHandle sampler, + uint pname, + ReadOnlySpan param + ) + { + fixed (float* paramPtr = param) { + Context.glSamplerParameterfv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameteri( + GlHandle sampler, + uint pname, + int param + ) + { + Context.glSamplerParameteri(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterIiv( + GlHandle sampler, + uint pname, + ReadOnlySpan param + ) + { + fixed (int* paramPtr = param) { + Context.glSamplerParameterIiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterIuiv( + GlHandle sampler, + uint pname, + ReadOnlySpan param + ) + { + fixed (uint* paramPtr = param) { + Context.glSamplerParameterIuiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameteriv( + 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, + ReadOnlySpan @string, + ReadOnlySpan length + ) + { + fixed (byte* stringPtr = @string) + { + byte* sPtr = stringPtr; + fixed (int* lengthPtr = length) { + Context.glShaderSource(shader.Value, count, &sPtr, 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, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexImage1D(target, level, internalformat, width, border, format, + (uint)type, pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage2D( + uint target, + int level, + int internalformat, + int width, + int height, + int border, + uint format, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexImage2D(target, level, internalformat, width, height, border, format, + (uint)type, pixelsPtr); + } + } + + [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, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexImage3D(target, level, internalformat, width, height, depth, border, + format, (uint)type, pixelsPtr); + } + } + + [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 TexParameterf( + uint target, + uint pname, + float param + ) + { + Context.glTexParameterf(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterfv( + uint target, + uint pname, + ReadOnlySpan @params + ) + { + fixed (float* @paramsPtr = @params) { + Context.glTexParameterfv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameteri( + uint target, + uint pname, + int param + ) + { + Context.glTexParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterIiv( + uint target, + uint pname, + ReadOnlySpan @params + ) + { + fixed (int* @paramsPtr = @params) { + Context.glTexParameterIiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterIuiv( + uint target, + uint pname, + ReadOnlySpan @params + ) + { + fixed (uint* @paramsPtr = @params) { + Context.glTexParameterIuiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameteriv( + 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, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexSubImage1D(target, level, xoffset, width, format, (uint)type, + pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage2D( + uint target, + int level, + int xoffset, + int yoffset, + int width, + int height, + uint format, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, + (uint)type, pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage3D( + uint target, + int level, + int xoffset, + int yoffset, + int zoffset, + int width, + int height, + int depth, + uint format, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, + depth, format, (uint)type, pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackVaryings( + GlHandle program, + int count, + ReadOnlySpan varyings, + uint bufferMode + ) + { + fixed (byte* varyingsPtr = varyings) { + Context.glTransformFeedbackVaryings(program.Value, count, varyingsPtr, bufferMode); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1f( + int location, + float v0 + ) + { + Context.glUniform1f(location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1fv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniform1fv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1i( + int location, + int v0 + ) + { + Context.glUniform1i(location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1iv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glUniform1iv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1ui( + int location, + uint v0 + ) + { + Context.glUniform1ui(location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1uiv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glUniform1uiv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2f( + int location, + float v0, + float v1 + ) + { + Context.glUniform2f(location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2fv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniform2fv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2i( + int location, + int v0, + int v1 + ) + { + Context.glUniform2i(location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2iv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glUniform2iv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2ui( + int location, + uint v0, + uint v1 + ) + { + Context.glUniform2ui(location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2uiv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glUniform2uiv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3f( + int location, + float v0, + float v1, + float v2 + ) + { + Context.glUniform3f(location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3fv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniform3fv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3i( + int location, + int v0, + int v1, + int v2 + ) + { + Context.glUniform3i(location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3iv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glUniform3iv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3ui( + int location, + uint v0, + uint v1, + uint v2 + ) + { + Context.glUniform3ui(location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3uiv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glUniform3uiv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4f( + int location, + float v0, + float v1, + float v2, + float v3 + ) + { + Context.glUniform4f(location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4fv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniform4fv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4i( + int location, + int v0, + int v1, + int v2, + int v3 + ) + { + Context.glUniform4i(location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4iv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glUniform4iv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4ui( + int location, + uint v0, + uint v1, + uint v2, + uint v3 + ) + { + Context.glUniform4ui(location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4uiv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glUniform4uiv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformBlockBinding( + GlHandle program, + uint uniformBlockIndex, + uint uniformBlockBinding + ) + { + Context.glUniformBlockBinding(program.Value, uniformBlockIndex, uniformBlockBinding); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix2fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2x3fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix2x3fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2x4fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix2x4fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix3fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3x2fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix3x2fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3x4fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix3x4fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix4fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4x2fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix4x2fv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4x3fv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glUniformMatrix4x3fv(location, count, transpose, valuePtr); + } + } + + [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 VertexAttrib1d( + uint index, + double x + ) + { + Context.glVertexAttrib1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib1dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttrib1dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib1f( + uint index, + float x + ) + { + Context.glVertexAttrib1f(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib1fv( + uint index, + ReadOnlySpan v + ) + { + fixed (float* vPtr = v) { + Context.glVertexAttrib1fv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib1s( + uint index, + short x + ) + { + Context.glVertexAttrib1s(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib1sv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttrib1sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2d( + uint index, + double x, + double y + ) + { + Context.glVertexAttrib2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttrib2dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2f( + uint index, + float x, + float y + ) + { + Context.glVertexAttrib2f(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2fv( + uint index, + ReadOnlySpan v + ) + { + fixed (float* vPtr = v) { + Context.glVertexAttrib2fv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2s( + uint index, + short x, + short y + ) + { + Context.glVertexAttrib2s(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib2sv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttrib2sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3d( + uint index, + double x, + double y, + double z + ) + { + Context.glVertexAttrib3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttrib3dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3f( + uint index, + float x, + float y, + float z + ) + { + Context.glVertexAttrib3f(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3fv( + uint index, + ReadOnlySpan v + ) + { + fixed (float* vPtr = v) { + Context.glVertexAttrib3fv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3s( + uint index, + short x, + short y, + short z + ) + { + Context.glVertexAttrib3s(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib3sv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttrib3sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4bv( + uint index, + ReadOnlySpan v + ) + { + fixed (sbyte* vPtr = v) { + Context.glVertexAttrib4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4d( + uint index, + double x, + double y, + double z, + double w + ) + { + Context.glVertexAttrib4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttrib4dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4f( + uint index, + float x, + float y, + float z, + float w + ) + { + Context.glVertexAttrib4f(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4fv( + uint index, + ReadOnlySpan v + ) + { + fixed (float* vPtr = v) { + Context.glVertexAttrib4fv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4iv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttrib4iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nbv( + uint index, + ReadOnlySpan v + ) + { + fixed (sbyte* vPtr = v) { + Context.glVertexAttrib4Nbv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Niv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttrib4Niv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nsv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttrib4Nsv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nub( + uint index, + byte x, + byte y, + byte z, + byte w + ) + { + Context.glVertexAttrib4Nub(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nubv( + uint index, + ReadOnlySpan v + ) + { + fixed (byte* vPtr = v) { + Context.glVertexAttrib4Nubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nuiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttrib4Nuiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4Nusv( + uint index, + ReadOnlySpan v + ) + { + fixed (ushort* vPtr = v) { + Context.glVertexAttrib4Nusv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4s( + uint index, + short x, + short y, + short z, + short w + ) + { + Context.glVertexAttrib4s(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4sv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttrib4sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4ubv( + uint index, + ReadOnlySpan v + ) + { + fixed (byte* vPtr = v) { + Context.glVertexAttrib4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4uiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttrib4uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib4usv( + uint index, + ReadOnlySpan 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 VertexAttribI1i( + uint index, + int x + ) + { + Context.glVertexAttribI1i(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI1iv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttribI1iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI1ui( + uint index, + uint x + ) + { + Context.glVertexAttribI1ui(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI1uiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttribI1uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI2i( + uint index, + int x, + int y + ) + { + Context.glVertexAttribI2i(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI2iv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttribI2iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI2ui( + uint index, + uint x, + uint y + ) + { + Context.glVertexAttribI2ui(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI2uiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttribI2uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI3i( + uint index, + int x, + int y, + int z + ) + { + Context.glVertexAttribI3i(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI3iv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttribI3iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI3ui( + uint index, + uint x, + uint y, + uint z + ) + { + Context.glVertexAttribI3ui(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI3uiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttribI3uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4bv( + uint index, + ReadOnlySpan v + ) + { + fixed (sbyte* vPtr = v) { + Context.glVertexAttribI4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4i( + uint index, + int x, + int y, + int z, + int w + ) + { + Context.glVertexAttribI4i(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4iv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glVertexAttribI4iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4sv( + uint index, + ReadOnlySpan v + ) + { + fixed (short* vPtr = v) { + Context.glVertexAttribI4sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4ubv( + uint index, + ReadOnlySpan v + ) + { + fixed (byte* vPtr = v) { + Context.glVertexAttribI4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4ui( + uint index, + uint x, + uint y, + uint z, + uint w + ) + { + Context.glVertexAttribI4ui(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4uiv( + uint index, + ReadOnlySpan v + ) + { + fixed (uint* vPtr = v) { + Context.glVertexAttribI4uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI4usv( + uint index, + ReadOnlySpan v + ) + { + fixed (ushort* vPtr = v) { + Context.glVertexAttribI4usv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIPointer( + uint index, + int size, + ShaderType type, + int stride, + ReadOnlySpan pointer + ) + { + fixed (IntPtr* pointerPtr = pointer) { + Context.glVertexAttribIPointer(index, size, (uint)type, stride, pointerPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP1ui( + uint index, + ShaderType type, + byte normalized, + uint value + ) + { + Context.glVertexAttribP1ui(index, (uint)type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP1uiv( + uint index, + ShaderType type, + byte normalized, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glVertexAttribP1uiv(index, (uint)type, normalized, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP2ui( + uint index, + ShaderType type, + byte normalized, + uint value + ) + { + Context.glVertexAttribP2ui(index, (uint)type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP2uiv( + uint index, + ShaderType type, + byte normalized, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glVertexAttribP2uiv(index, (uint)type, normalized, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP3ui( + uint index, + ShaderType type, + byte normalized, + uint value + ) + { + Context.glVertexAttribP3ui(index, (uint)type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP3uiv( + uint index, + ShaderType type, + byte normalized, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glVertexAttribP3uiv(index, (uint)type, normalized, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP4ui( + uint index, + ShaderType type, + byte normalized, + uint value + ) + { + Context.glVertexAttribP4ui(index, (uint)type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP4uiv( + uint index, + ShaderType type, + byte normalized, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glVertexAttribP4uiv(index, (uint)type, normalized, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribPointer( + uint index, + int size, + ShaderType type, + byte normalized, + int stride, + ReadOnlySpan pointer + ) + { + fixed (IntPtr* pointerPtr = pointer) { + Context.glVertexAttribPointer(index, size, (uint)type, normalized, stride, + pointerPtr); + } + } + + [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, + IntPtr timeout + ) + { + Context.glWaitSync(sync, flags, timeout); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_0.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_0.cs new file mode 100644 index 00000000..85a48a74 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_0.cs @@ -0,0 +1,544 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_0" +// 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 StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +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 BlendEquationi( + uint buf, + uint mode + ) + { + Context.glBlendEquationi(buf, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquationSeparatei( + uint buf, + uint modeRGB, + uint modeAlpha + ) + { + Context.glBlendEquationSeparatei(buf, modeRGB, modeAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFunci( + uint buf, + uint src, + uint dst + ) + { + Context.glBlendFunci(buf, src, dst); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFuncSeparatei( + uint buf, + uint srcRGB, + uint dstRGB, + uint srcAlpha, + uint dstAlpha + ) + { + Context.glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTransformFeedbacks( + int n, + ReadOnlySpan ids + ) + { + fixed (uint* idsPtr = ids) { + Context.glDeleteTransformFeedbacks(n, idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysIndirect( + uint mode, + ReadOnlySpan indirect + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glDrawArraysIndirect(mode, indirectPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsIndirect( + uint mode, + ShaderType type, + ReadOnlySpan indirect + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glDrawElementsIndirect(mode, (uint)type, indirectPtr); + } + } + + [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( + int n, + uint* ids + ) + { + Context.glGenTransformFeedbacks(n, ids); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineName( + GlHandle program, + ShaderType shaderType, + uint index, + int bufSize, + int* length, + byte* name + ) + { + Context.glGetActiveSubroutineName(program.Value, (uint)shaderType, index, bufSize, + length, name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformiv( + GlHandle program, + ShaderType shaderType, + uint index, + uint pName, + int* values + ) + { + Context.glGetActiveSubroutineUniformiv(program.Value, (uint)shaderType, index, pName, + values); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformName( + GlHandle program, + ShaderType shaderType, + uint index, + int bufSize, + int* length, + byte* name + ) + { + Context.glGetActiveSubroutineUniformName(program.Value, (uint)shaderType, index, + bufSize, length, name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramStageiv( + GlHandle program, + ShaderType shaderType, + uint pName, + int* values + ) + { + Context.glGetProgramStageiv(program.Value, (uint)shaderType, pName, values); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryIndexediv( + uint target, + uint index, + uint pName, + int* @params + ) + { + Context.glGetQueryIndexediv(target, index, pName, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSubroutineIndex( + GlHandle program, + ShaderType shaderType, + ReadOnlySpan name + ) + { + fixed (byte* namePtr = name) { + return Context.glGetSubroutineIndex(program.Value, (uint)shaderType, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetSubroutineUniformLocation( + GlHandle program, + ShaderType shaderType, + ReadOnlySpan name + ) + { + fixed (byte* namePtr = name) { + return Context.glGetSubroutineUniformLocation(program.Value, (uint)shaderType, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformdv( + GlHandle program, + int location, + double* @params + ) + { + Context.glGetUniformdv(program.Value, location, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformSubroutineuiv( + ShaderType shaderType, + int location, + uint* @params + ) + { + Context.glGetUniformSubroutineuiv((uint)shaderType, location, @params); + } + + [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 PatchParameterfv( + uint pName, + ReadOnlySpan values + ) + { + fixed (float* valuesPtr = values) { + Context.glPatchParameterfv(pName, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PatchParameteri( + 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 Uniform1d( + int location, + double x + ) + { + Context.glUniform1d(location, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform1dv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniform1dv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2d( + int location, + double x, + double y + ) + { + Context.glUniform2d(location, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform2dv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniform2dv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3d( + int location, + double x, + double y, + double z + ) + { + Context.glUniform3d(location, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform3dv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniform3dv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4d( + int location, + double x, + double y, + double z, + double w + ) + { + Context.glUniform4d(location, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Uniform4dv( + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniform4dv(location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix2dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2x3dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix2x3dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix2x4dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix2x4dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix3dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3x2dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix3x2dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix3x4dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix3x4dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix4dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4x2dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix4x2dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformMatrix4x3dv( + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glUniformMatrix4x3dv(location, count, transpose, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformSubroutinesuiv( + ShaderType shaderType, + int count, + ReadOnlySpan indices + ) + { + fixed (uint* indicesPtr = indices) { + Context.glUniformSubroutinesuiv((uint)shaderType, count, indicesPtr); + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_1.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_1.cs new file mode 100644 index 00000000..cf45cea4 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_1.cs @@ -0,0 +1,1105 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_1" +// 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 StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +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 ClearDepthf( + float d + ) + { + Context.glClearDepthf(d); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint CreateShaderProgramv( + ShaderType type, + int count, + ReadOnlySpan strings + ) + { + fixed (byte* stringsPtr = strings) { + return Context.glCreateShaderProgramv((uint)type, count, stringsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgramPipelines( + int n, + ReadOnlySpan pipelines + ) + { + fixed (uint* pipelinesPtr = pipelines) { + Context.glDeleteProgramPipelines(n, 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 DepthRangef( + float n, + float f + ) + { + Context.glDepthRangef(n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRangeIndexed( + uint index, + double n, + double f + ) + { + Context.glDepthRangeIndexed(index, n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenProgramPipelines( + int n, + uint* pipelines + ) + { + Context.glGenProgramPipelines(n, pipelines); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublei_v( + uint target, + uint index, + double* data + ) + { + Context.glGetDoublei_v(target, index, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloati_v( + uint target, + uint index, + float* data + ) + { + Context.glGetFloati_v(target, index, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramBinary( + GlHandle program, + int bufSize, + int* length, + uint* binaryFormat, + IntPtr* binary + ) + { + Context.glGetProgramBinary(program.Value, bufSize, length, binaryFormat, binary); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineInfoLog( + uint pipeline, + int bufSize, + int* length, + byte* infoLog + ) + { + Context.glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineiv( + uint pipeline, + uint pname, + int* @params + ) + { + Context.glGetProgramPipelineiv(pipeline, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderPrecisionFormat( + ShaderType shaderType, + uint precisiontype, + int* range, + int* precision + ) + { + Context.glGetShaderPrecisionFormat((uint)shaderType, precisiontype, range, precision); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribLdv( + uint index, + uint pname, + double* @params + ) + { + Context.glGetVertexAttribLdv(index, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsProgramPipeline( + uint pipeline + ) + { + return Context.glIsProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramBinary( + GlHandle program, + uint binaryFormat, + ReadOnlySpan binary, + int length + ) + { + fixed (IntPtr* binaryPtr = binary) { + Context.glProgramBinary(program.Value, binaryFormat, binaryPtr, length); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramParameteri( + GlHandle program, + uint pname, + int value + ) + { + Context.glProgramParameteri(program.Value, pname, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1d( + GlHandle program, + int location, + double v0 + ) + { + Context.glProgramUniform1d(program.Value, location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1dv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniform1dv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1f( + GlHandle program, + int location, + float v0 + ) + { + Context.glProgramUniform1f(program.Value, location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1fv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniform1fv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1i( + GlHandle program, + int location, + int v0 + ) + { + Context.glProgramUniform1i(program.Value, location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1iv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glProgramUniform1iv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1ui( + GlHandle program, + int location, + uint v0 + ) + { + Context.glProgramUniform1ui(program.Value, location, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform1uiv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glProgramUniform1uiv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2d( + GlHandle program, + int location, + double v0, + double v1 + ) + { + Context.glProgramUniform2d(program.Value, location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2dv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniform2dv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2f( + GlHandle program, + int location, + float v0, + float v1 + ) + { + Context.glProgramUniform2f(program.Value, location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2fv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniform2fv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2i( + GlHandle program, + int location, + int v0, + int v1 + ) + { + Context.glProgramUniform2i(program.Value, location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2iv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glProgramUniform2iv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2ui( + GlHandle program, + int location, + uint v0, + uint v1 + ) + { + Context.glProgramUniform2ui(program.Value, location, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform2uiv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glProgramUniform2uiv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3d( + GlHandle program, + int location, + double v0, + double v1, + double v2 + ) + { + Context.glProgramUniform3d(program.Value, location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3dv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniform3dv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3f( + GlHandle program, + int location, + float v0, + float v1, + float v2 + ) + { + Context.glProgramUniform3f(program.Value, location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3fv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniform3fv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3i( + GlHandle program, + int location, + int v0, + int v1, + int v2 + ) + { + Context.glProgramUniform3i(program.Value, location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3iv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glProgramUniform3iv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3ui( + GlHandle program, + int location, + uint v0, + uint v1, + uint v2 + ) + { + Context.glProgramUniform3ui(program.Value, location, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform3uiv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glProgramUniform3uiv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4d( + GlHandle program, + int location, + double v0, + double v1, + double v2, + double v3 + ) + { + Context.glProgramUniform4d(program.Value, location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4dv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniform4dv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4f( + GlHandle program, + int location, + float v0, + float v1, + float v2, + float v3 + ) + { + Context.glProgramUniform4f(program.Value, location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4fv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniform4fv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4i( + GlHandle program, + int location, + int v0, + int v1, + int v2, + int v3 + ) + { + Context.glProgramUniform4i(program.Value, location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4iv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glProgramUniform4iv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4ui( + GlHandle program, + int location, + uint v0, + uint v1, + uint v2, + uint v3 + ) + { + Context.glProgramUniform4ui(program.Value, location, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniform4uiv( + GlHandle program, + int location, + int count, + ReadOnlySpan value + ) + { + fixed (uint* valuePtr = value) { + Context.glProgramUniform4uiv(program.Value, location, count, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix2dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix2fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2x3dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix2x3dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2x3fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix2x3fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2x4dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix2x4dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix2x4fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix2x4fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix3dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix3fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3x2dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix3x2dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3x2fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix3x2fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3x4dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix3x4dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix3x4fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix3x4fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix4dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix4fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4x2dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix4x2dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4x2fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix4x2fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4x3dv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (double* valuePtr = value) { + Context.glProgramUniformMatrix4x3dv(program.Value, location, count, transpose, + valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramUniformMatrix4x3fv( + GlHandle program, + int location, + int count, + byte transpose, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glProgramUniformMatrix4x3fv(program.Value, location, count, transpose, + valuePtr); + } + } + + [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 ScissorIndexedv( + uint index, + ReadOnlySpan v + ) + { + fixed (int* vPtr = v) { + Context.glScissorIndexedv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderBinary( + int count, + ReadOnlySpan shaders, + uint binaryFormat, + ReadOnlySpan binary, + int length + ) + { + fixed (uint* shadersPtr = shaders) + { + fixed (IntPtr* binaryPtr = binary) { + Context.glShaderBinary(count, shadersPtr, binaryFormat, binaryPtr, 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 VertexAttribL1d( + uint index, + double x + ) + { + Context.glVertexAttribL1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL1dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttribL1dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL2d( + uint index, + double x, + double y + ) + { + Context.glVertexAttribL2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL2dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttribL2dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL3d( + uint index, + double x, + double y, + double z + ) + { + Context.glVertexAttribL3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL3dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttribL3dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL4d( + uint index, + double x, + double y, + double z, + double w + ) + { + Context.glVertexAttribL4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL4dv( + uint index, + ReadOnlySpan v + ) + { + fixed (double* vPtr = v) { + Context.glVertexAttribL4dv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLPointer( + uint index, + int size, + ShaderType type, + int stride, + ReadOnlySpan pointer + ) + { + fixed (IntPtr* pointerPtr = pointer) { + Context.glVertexAttribLPointer(index, size, (uint)type, stride, pointerPtr); + } + } + + [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 ViewportIndexedf( + uint index, + float x, + float y, + float w, + float h + ) + { + Context.glViewportIndexedf(index, x, y, w, h); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportIndexedfv( + uint index, + ReadOnlySpan v + ) + { + fixed (float* vPtr = v) { + Context.glViewportIndexedfv(index, vPtr); + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_2.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_2.cs new file mode 100644 index 00000000..39379f71 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_2.cs @@ -0,0 +1,193 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_2" +// 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. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// +// Generated by StgSharp.GenerateGL on 2025-12-30 02:54:41Z +// Version: 4.2 +// +using StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +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, + ShaderType type, + ReadOnlySpan indices, + int instancecount, + uint baseinstance + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElementsInstancedBaseInstance(mode, count, (uint)type, indicesPtr, + instancecount, baseinstance); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertexBaseInstance( + uint mode, + int count, + ShaderType type, + ReadOnlySpan indices, + int instancecount, + int basevertex, + uint baseinstance + ) + { + fixed (IntPtr* indicesPtr = indices) { + Context.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, (uint)type, + indicesPtr, 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, + int* @params + ) + { + Context.glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex.Value, pname, + @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformativ( + uint target, + uint internalformat, + uint pname, + int count, + int* @params + ) + { + Context.glGetInternalformativ(target, internalformat, pname, count, @params); + } + + [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/StgSharp.Common/Graphics/OpenGL/glFunction.v4_3.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_3.cs new file mode 100644 index 00000000..dbf03cb8 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_3.cs @@ -0,0 +1,586 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_3" +// 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. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// +// Generated by StgSharp.GenerateGL on 2025-12-30 02:54:41Z +// Version: 4.3 +// +using StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +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, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearBufferData(target, internalformat, format, (uint)type, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferSubData( + uint target, + uint internalformat, + nint offset, + nuint size, + uint format, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearBufferSubData(target, internalformat, offset, size, format, + (uint)type, dataPtr); + } + } + + [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, + ReadOnlySpan userParam + ) + { + fixed (IntPtr* userParamPtr = userParam) { + Context.glDebugMessageCallback(callback, userParamPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageControl( + uint source, + ShaderType type, + uint severity, + int count, + ReadOnlySpan ids, + byte enabled + ) + { + fixed (uint* idsPtr = ids) { + Context.glDebugMessageControl(source, (uint)type, severity, count, idsPtr, enabled); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageInsert( + uint source, + ShaderType type, + uint id, + uint severity, + int length, + ReadOnlySpan buf + ) + { + fixed (byte* bufPtr = buf) { + Context.glDebugMessageInsert(source, (uint)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 FramebufferParameteri( + uint target, + uint pname, + int param + ) + { + Context.glFramebufferParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetDebugMessageLog( + uint count, + int bufSize, + uint* sources, + uint* types, + uint* ids, + uint* severities, + int* lengths, + byte* messageLog + ) + { + return Context.glGetDebugMessageLog(count, bufSize, sources, types, ids, severities, + lengths, messageLog); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFramebufferParameteriv( + uint target, + uint pname, + int* @params + ) + { + Context.glGetFramebufferParameteriv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformati64v( + uint target, + uint internalformat, + uint pname, + int count, + IntPtr* @params + ) + { + Context.glGetInternalformati64v(target, internalformat, pname, count, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectLabel( + uint identifier, + uint name, + int bufSize, + int* length, + byte* label + ) + { + Context.glGetObjectLabel(identifier, name, bufSize, length, label); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectPtrLabel( + ReadOnlySpan ptr, + int bufSize, + int* length, + byte* label + ) + { + fixed (IntPtr* ptrPtr = ptr) { + Context.glGetObjectPtrLabel(ptrPtr, bufSize, length, label); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInterfaceiv( + GlHandle program, + uint programInterface, + uint pname, + int* @params + ) + { + Context.glGetProgramInterfaceiv(program.Value, programInterface, pname, @params); + } + + [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 void GetProgramResourceiv( + GlHandle program, + uint programInterface, + uint index, + int propCount, + ReadOnlySpan props, + int count, + int* length, + int* @params + ) + { + fixed (uint* propsPtr = props) { + Context.glGetProgramResourceiv(program.Value, programInterface, index, propCount, + propsPtr, count, length, @params); + } + } + + [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, + int bufSize, + int* length, + byte* name + ) + { + Context.glGetProgramResourceName(program.Value, programInterface, index, bufSize, + length, name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferData( + GlHandle buffer + ) + { + Context.glInvalidateBufferData(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferSubData( + GlHandle buffer, + nint offset, + nuint length + ) + { + Context.glInvalidateBufferSubData(buffer.Value, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateFramebuffer( + uint target, + int numAttachments, + ReadOnlySpan attachments + ) + { + fixed (uint* attachmentsPtr = attachments) { + Context.glInvalidateFramebuffer(target, numAttachments, attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateSubFramebuffer( + uint target, + int numAttachments, + ReadOnlySpan attachments, + int x, + int y, + int width, + int height + ) + { + fixed (uint* attachmentsPtr = attachments) { + Context.glInvalidateSubFramebuffer(target, numAttachments, 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, + ReadOnlySpan indirect, + int drawcount, + int stride + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glMultiDrawArraysIndirect(mode, indirectPtr, drawcount, stride); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirect( + uint mode, + ShaderType type, + ReadOnlySpan indirect, + int drawcount, + int stride + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glMultiDrawElementsIndirect(mode, (uint)type, indirectPtr, 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( + ReadOnlySpan ptr, + int length, + ReadOnlySpan label + ) + { + fixed (IntPtr* ptrPtr = ptr) + { + fixed (byte* labelPtr = label) { + Context.glObjectPtrLabel(ptrPtr, 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, + nuint 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, + ShaderType type, + byte normalized, + uint relativeoffset + ) + { + Context.glVertexAttribFormat(attribindex, size, (uint)type, normalized, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIFormat( + uint attribindex, + int size, + ShaderType type, + uint relativeoffset + ) + { + Context.glVertexAttribIFormat(attribindex, size, (uint)type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLFormat( + uint attribindex, + int size, + ShaderType type, + uint relativeoffset + ) + { + Context.glVertexAttribLFormat(attribindex, size, (uint)type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexBindingDivisor( + uint bindingindex, + uint divisor + ) + { + Context.glVertexBindingDivisor(bindingindex, divisor); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_4.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_4.cs new file mode 100644 index 00000000..a965e83e --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_4.cs @@ -0,0 +1,183 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_4" +// 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. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// +// Generated by StgSharp.GenerateGL on 2025-12-30 02:54:41Z +// Version: 4.4 +// +using StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersBase( + uint target, + uint first, + int count, + ReadOnlySpan buffers + ) + { + fixed (uint* buffersPtr = buffers) { + Context.glBindBuffersBase(target, first, count, buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersRange( + uint target, + uint first, + int count, + ReadOnlySpan buffers, + ReadOnlySpan offsets, + ReadOnlySpan sizes + ) + { + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (nuint* sizesPtr = sizes) { + Context.glBindBuffersRange(target, first, count, buffersPtr, offsetsPtr, + sizesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindImageTextures( + uint first, + int count, + ReadOnlySpan textures + ) + { + fixed (uint* texturesPtr = textures) { + Context.glBindImageTextures(first, count, texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindSamplers( + uint first, + int count, + ReadOnlySpan samplers + ) + { + fixed (uint* samplersPtr = samplers) { + Context.glBindSamplers(first, count, samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTextures( + uint first, + int count, + ReadOnlySpan textures + ) + { + fixed (uint* texturesPtr = textures) { + Context.glBindTextures(first, count, texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexBuffers( + uint first, + int count, + ReadOnlySpan buffers, + ReadOnlySpan offsets, + ReadOnlySpan strides + ) + { + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) { + Context.glBindVertexBuffers(first, count, buffersPtr, offsetsPtr, + stridesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferStorage( + uint target, + nuint size, + ReadOnlySpan data, + uint flags + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glBufferStorage(target, size, dataPtr, flags); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexImage( + GlHandle texture, + int level, + uint format, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearTexImage(texture.Value, level, format, (uint)type, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexSubImage( + GlHandle texture, + int level, + int xoffset, + int yoffset, + int zoffset, + int width, + int height, + int depth, + uint format, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, + height, depth, format, (uint)type, dataPtr); + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_5.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_5.cs new file mode 100644 index 00000000..550d42a2 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_5.cs @@ -0,0 +1,1352 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_5" +// 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. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// +// Generated by StgSharp.GenerateGL on 2025-12-30 02:54:41Z +// Version: 4.5 +// +using StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +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, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearNamedBufferData(buffer.Value, internalformat, format, (uint)type, + dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedBufferSubData( + GlHandle buffer, + uint internalformat, + nint offset, + nuint size, + uint format, + ShaderType type, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glClearNamedBufferSubData(buffer.Value, internalformat, offset, size, + format, (uint)type, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebufferfi( + GlHandle framebuffer, + uint buffer, + int drawbuffer, + float depth, + int stencil + ) + { + Context.glClearNamedFramebufferfi(framebuffer.Value, buffer, drawbuffer, depth, + stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebufferfv( + GlHandle framebuffer, + uint buffer, + int drawbuffer, + ReadOnlySpan value + ) + { + fixed (float* valuePtr = value) { + Context.glClearNamedFramebufferfv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebufferiv( + GlHandle framebuffer, + uint buffer, + int drawbuffer, + ReadOnlySpan value + ) + { + fixed (int* valuePtr = value) { + Context.glClearNamedFramebufferiv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebufferuiv( + 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, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTextureSubImage1D(texture.Value, level, xoffset, width, format, + imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage2D( + GlHandle texture, + int level, + int xoffset, + int yoffset, + int width, + int height, + uint format, + int imageSize, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, + height, format, imageSize, dataPtr); + } + } + + [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, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glCompressedTextureSubImage3D(texture.Value, level, xoffset, yoffset, + zoffset, width, height, depth, format, + imageSize, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyNamedBufferSubData( + GlHandle readBuffer, + GlHandle writeBuffer, + nint readOffset, + nint writeOffset, + nuint 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( + int n, + uint* buffers + ) + { + Context.glCreateBuffers(n, buffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateFramebuffers( + int n, + uint* framebuffers + ) + { + Context.glCreateFramebuffers(n, framebuffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateProgramPipelines( + int n, + uint* pipelines + ) + { + Context.glCreateProgramPipelines(n, pipelines); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateQueries( + uint target, + int n, + uint* ids + ) + { + Context.glCreateQueries(target, n, ids); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateRenderbuffers( + int n, + uint* renderbuffers + ) + { + Context.glCreateRenderbuffers(n, renderbuffers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateSamplers( + int n, + uint* samplers + ) + { + Context.glCreateSamplers(n, samplers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTextures( + uint target, + int n, + uint* textures + ) + { + Context.glCreateTextures(target, n, textures); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTransformFeedbacks( + int n, + uint* ids + ) + { + Context.glCreateTransformFeedbacks(n, ids); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateVertexArrays( + int n, + uint* arrays + ) + { + Context.glCreateVertexArrays(n, arrays); + } + + [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, + nuint 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, + IntPtr* 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, + IntPtr* 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 GetNamedBufferParameteri64v( + GlHandle buffer, + uint pname, + IntPtr* @params + ) + { + Context.glGetNamedBufferParameteri64v(buffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferParameteriv( + GlHandle buffer, + uint pname, + int* @params + ) + { + Context.glGetNamedBufferParameteriv(buffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferPointerv( + GlHandle buffer, + uint pname, + IntPtr* @params + ) + { + Context.glGetNamedBufferPointerv(buffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferSubData( + GlHandle buffer, + nint offset, + nuint size, + IntPtr* data + ) + { + Context.glGetNamedBufferSubData(buffer.Value, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferAttachmentParameteriv( + GlHandle framebuffer, + uint attachment, + uint pname, + int* @params + ) + { + Context.glGetNamedFramebufferAttachmentParameteriv(framebuffer.Value, attachment, pname, + @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferParameteriv( + GlHandle framebuffer, + uint pname, + int* param + ) + { + Context.glGetNamedFramebufferParameteriv(framebuffer.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedRenderbufferParameteriv( + GlHandle renderbuffer, + uint pname, + int* @params + ) + { + Context.glGetNamedRenderbufferParameteriv(renderbuffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnCompressedTexImage( + uint target, + int lod, + int bufSize, + IntPtr* pixels + ) + { + Context.glGetnCompressedTexImage(target, lod, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnTexImage( + uint target, + int level, + uint format, + ShaderType type, + int bufSize, + IntPtr* pixels + ) + { + Context.glGetnTexImage(target, level, format, (uint)type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniformdv( + GlHandle program, + int location, + int bufSize, + double* @params + ) + { + Context.glGetnUniformdv(program.Value, location, bufSize, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniformfv( + GlHandle program, + int location, + int bufSize, + float* @params + ) + { + Context.glGetnUniformfv(program.Value, location, bufSize, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniformiv( + GlHandle program, + int location, + int bufSize, + int* @params + ) + { + Context.glGetnUniformiv(program.Value, location, bufSize, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniformuiv( + GlHandle program, + int location, + int bufSize, + uint* @params + ) + { + Context.glGetnUniformuiv(program.Value, location, bufSize, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjecti64v( + 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, + ShaderType type, + int bufSize, + IntPtr* pixels + ) + { + Context.glGetTextureImage(texture.Value, level, format, (uint)type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameterfv( + GlHandle texture, + int level, + uint pname, + float* @params + ) + { + Context.glGetTextureLevelParameterfv(texture.Value, level, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameteriv( + GlHandle texture, + int level, + uint pname, + int* @params + ) + { + Context.glGetTextureLevelParameteriv(texture.Value, level, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterfv( + GlHandle texture, + uint pname, + float* @params + ) + { + Context.glGetTextureParameterfv(texture.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterIiv( + GlHandle texture, + uint pname, + int* @params + ) + { + Context.glGetTextureParameterIiv(texture.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterIuiv( + GlHandle texture, + uint pname, + uint* @params + ) + { + Context.glGetTextureParameterIuiv(texture.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameteriv( + GlHandle texture, + uint pname, + int* @params + ) + { + Context.glGetTextureParameteriv(texture.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureSubImage( + GlHandle texture, + int level, + int xoffset, + int yoffset, + int zoffset, + int width, + int height, + int depth, + uint format, + ShaderType type, + int bufSize, + IntPtr* pixels + ) + { + Context.glGetTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, + height, depth, format, (uint)type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki_v( + uint xfb, + uint pname, + uint index, + int* param + ) + { + Context.glGetTransformFeedbacki_v(xfb, pname, index, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki64_v( + uint xfb, + uint pname, + uint index, + IntPtr* param + ) + { + Context.glGetTransformFeedbacki64_v(xfb, pname, index, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackiv( + uint xfb, + uint pname, + int* param + ) + { + Context.glGetTransformFeedbackiv(xfb, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexed64iv( + uint vaobj, + uint index, + uint pname, + IntPtr* param + ) + { + Context.glGetVertexArrayIndexed64iv(vaobj, index, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexediv( + uint vaobj, + uint index, + uint pname, + int* param + ) + { + Context.glGetVertexArrayIndexediv(vaobj, index, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayiv( + uint vaobj, + uint pname, + int* param + ) + { + Context.glGetVertexArrayiv(vaobj, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferData( + GlHandle framebuffer, + int numAttachments, + ReadOnlySpan attachments + ) + { + fixed (uint* attachmentsPtr = attachments) { + Context.glInvalidateNamedFramebufferData(framebuffer.Value, numAttachments, attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferSubData( + GlHandle framebuffer, + int numAttachments, + ReadOnlySpan attachments, + int x, + int y, + int width, + int height + ) + { + fixed (uint* attachmentsPtr = attachments) { + Context.glInvalidateNamedFramebufferSubData(framebuffer.Value, numAttachments, + attachmentsPtr, x, y, width, height); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MapNamedBuffer( + GlHandle buffer, + uint access + ) + { + Context.glMapNamedBuffer(buffer.Value, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MapNamedBufferRange( + GlHandle buffer, + nint offset, + nuint length, + uint access + ) + { + 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, + nuint size, + ReadOnlySpan data, + uint usage + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glNamedBufferData(buffer.Value, size, dataPtr, usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferStorage( + GlHandle buffer, + nuint size, + ReadOnlySpan data, + uint flags + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glNamedBufferStorage(buffer.Value, size, dataPtr, flags); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferSubData( + GlHandle buffer, + nint offset, + nuint size, + ReadOnlySpan data + ) + { + fixed (IntPtr* dataPtr = data) { + Context.glNamedBufferSubData(buffer.Value, offset, size, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffer( + GlHandle framebuffer, + uint buf + ) + { + Context.glNamedFramebufferDrawBuffer(framebuffer.Value, buf); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffers( + GlHandle framebuffer, + int n, + ReadOnlySpan bufs + ) + { + fixed (uint* bufsPtr = bufs) { + Context.glNamedFramebufferDrawBuffers(framebuffer.Value, n, bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferParameteri( + 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, + ShaderType type, + int bufSize, + IntPtr* data + ) + { + Context.glReadnPixels(x, y, width, height, format, (uint)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, + nuint size + ) + { + Context.glTextureBufferRange(texture.Value, internalformat, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterf( + GlHandle texture, + uint pname, + float param + ) + { + Context.glTextureParameterf(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterfv( + GlHandle texture, + uint pname, + ReadOnlySpan param + ) + { + fixed (float* paramPtr = param) { + Context.glTextureParameterfv(texture.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameteri( + GlHandle texture, + uint pname, + int param + ) + { + Context.glTextureParameteri(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterIiv( + GlHandle texture, + uint pname, + ReadOnlySpan @params + ) + { + fixed (int* @paramsPtr = @params) { + Context.glTextureParameterIiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterIuiv( + GlHandle texture, + uint pname, + ReadOnlySpan @params + ) + { + fixed (uint* @paramsPtr = @params) { + Context.glTextureParameterIuiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameteriv( + 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, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTextureSubImage1D(texture.Value, level, xoffset, width, format, + (uint)type, pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage2D( + GlHandle texture, + int level, + int xoffset, + int yoffset, + int width, + int height, + uint format, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, + format, (uint)type, pixelsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage3D( + GlHandle texture, + int level, + int xoffset, + int yoffset, + int zoffset, + int width, + int height, + int depth, + uint format, + ShaderType type, + ReadOnlySpan pixels + ) + { + fixed (IntPtr* pixelsPtr = pixels) { + Context.glTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, + height, depth, format, (uint)type, pixelsPtr); + } + } + + [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, + nuint 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, + ShaderType type, + byte normalized, + uint relativeoffset + ) + { + Context.glVertexArrayAttribFormat(vaobj, attribindex, size, (uint)type, normalized, + relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribIFormat( + uint vaobj, + uint attribindex, + int size, + ShaderType type, + uint relativeoffset + ) + { + Context.glVertexArrayAttribIFormat(vaobj, attribindex, size, (uint)type, + relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribLFormat( + uint vaobj, + uint attribindex, + int size, + ShaderType type, + uint relativeoffset + ) + { + Context.glVertexArrayAttribLFormat(vaobj, attribindex, size, (uint)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, + int count, + ReadOnlySpan buffers, + ReadOnlySpan offsets, + ReadOnlySpan strides + ) + { + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) { + Context.glVertexArrayVertexBuffers(vaobj, first, count, buffersPtr, + offsetsPtr, stridesPtr); + } + } + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.v4_6.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_6.cs new file mode 100644 index 00000000..e30e324a --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.v4_6.cs @@ -0,0 +1,106 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="glFunction.v4_6" +// 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. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// +// Generated by StgSharp.GenerateGL on 2025-12-30 02:54:41Z +// Version: 4.6 +// +using StgSharp.Graphics.OpenGL; +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArraysIndirectCount( + uint mode, + ReadOnlySpan indirect, + nint drawcount, + int maxdrawcount, + int stride + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glMultiDrawArraysIndirectCount(mode, indirectPtr, drawcount, maxdrawcount, + stride); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirectCount( + uint mode, + ShaderType type, + ReadOnlySpan indirect, + nint drawcount, + int maxdrawcount, + int stride + ) + { + fixed (IntPtr* indirectPtr = indirect) { + Context.glMultiDrawElementsIndirectCount(mode, (uint)type, indirectPtr, 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, + uint numSpecializationConstants, + ReadOnlySpan pConstantIndex, + ReadOnlySpan pConstantValue + ) + { + fixed (byte* pEntryPointPtr = pEntryPoint) + { + fixed (uint* pConstantIndexPtr = pConstantIndex) + { + fixed (uint* pConstantValuePtr = pConstantValue) { + Context.glSpecializeShader(shader.Value, pEntryPointPtr, + numSpecializationConstants, pConstantIndexPtr, + pConstantValuePtr); + } + } + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs index e499df32..5bb8c0e3 100644 --- a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs +++ b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glRenderStream" // Project: StgSharp @@ -62,9 +62,9 @@ namespace StgSharp.Graphics.OpenGL { if (ContextHandle == default) { - ContextHandle = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OpenglContext))); + ContextHandle = Marshal.AllocHGlobal(Marshal.SizeOf()); OpenglContext* contextID = (OpenglContext*)ContextHandle; - contextID->glGetString = (delegate*)IntPtr.Zero; + contextID->glGetString = (delegate*)IntPtr.Zero; } if (GL == null) { _context = OpenGLFunction.BuildGlFunctionPackage(ContextHandle); @@ -115,10 +115,15 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight) + public override void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight + ) { - GraphicFramework.glfwSetWindowSizeLimits( - this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight); + GraphicFramework.glfwSetWindowSizeLimits(this.CanvasHandle, minWidth, minHeight, + maxWidth, maxHeight); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -135,7 +140,10 @@ namespace StgSharp.Graphics.OpenGL CustomizeDeinit(); } - protected sealed override Uniform NativeCameraUniform(ShaderProgram source, string name) + protected sealed override Uniform NativeCameraUniform( + ShaderProgram source, + string name + ) { NativeCamera.GainAllUniforms(source, name); return NativeCamera.convertedUniform; @@ -145,30 +153,41 @@ namespace StgSharp.Graphics.OpenGL protected sealed override void NativeCameraViewRange( Radius fieldOfRange, Vec2 offset, - (float frontDepth, float backDepth) viewDepth) + (float frontDepth, float backDepth) viewDepth + ) { NativeCamera.SetViewRange(fieldOfRange, this.Size, offset, viewDepth); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected sealed override void NativeCameraViewTarget(Vec3 position, Vec3 direction, Vec3 up) + protected sealed override void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up + ) { NativeCamera.SetViewDirection(position, direction, up); } #region Key Control - protected KeyStatus CheckKey(KeyboardKey key) + protected KeyStatus CheckKey( + KeyboardKey key + ) { return GraphicFramework.glfwGetKey(this.CanvasHandle, (int)key); } - protected KeyStatus CheckKey(Mouse key) + protected KeyStatus CheckKey( + Mouse key + ) { return GraphicFramework.glfwGetKey(this.CanvasHandle, (int)key); } - protected KeyStatus CheckKey(Joystick key) + protected KeyStatus CheckKey( + Joystick key + ) { return GraphicFramework.glfwGetKey(this.CanvasHandle, (int)key); } diff --git a/StgSharp.Common/Graphics/OpenGL/glType.cs b/StgSharp.Common/Graphics/OpenGL/glType.cs index 2f180a06..f430fbad 100644 --- a/StgSharp.Common/Graphics/OpenGL/glType.cs +++ b/StgSharp.Common/Graphics/OpenGL/glType.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glType" // Project: StgSharp @@ -35,7 +35,9 @@ namespace StgSharp.Graphics.OpenGL { internal delegate void GLVULKANPROCNV(); - public unsafe struct glHandleARB(IntPtr value) { } + public unsafe struct glHandleARB( + IntPtr value + ) { } /// /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. @@ -46,7 +48,9 @@ namespace StgSharp.Graphics.OpenGL public float value; - public GlClampF(float a) + public GlClampF( + float a + ) { value = a; } @@ -54,7 +58,9 @@ namespace StgSharp.Graphics.OpenGL } [StructLayout(LayoutKind.Explicit, Size = 16)] - public struct glHalfNv(Half bin) + public struct glHalfNv( + Half bin + ) { [FieldOffset(0)] public Half binary = bin; @@ -66,6 +72,14 @@ namespace StgSharp.Graphics.OpenGL } + [StructLayout(LayoutKind.Sequential)] + public struct glSync + { + + public IntPtr Handle; + + } + [StructLayout(LayoutKind.Explicit, Size = 8)] public struct GlFixed { @@ -86,7 +100,9 @@ namespace StgSharp.Graphics.OpenGL public double value; - public GlClampD(double a) + public GlClampD( + double a + ) { value = a; } diff --git a/StgSharp.Common/Graphics/framework.cs b/StgSharp.Common/Graphics/framework.cs index e661c183..87bf5aae 100644 --- a/StgSharp.Common/Graphics/framework.cs +++ b/StgSharp.Common/Graphics/framework.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="framework" // Project: StgSharp @@ -43,15 +43,25 @@ namespace StgSharp.Graphics /// /// An Intptr value representing the pointer to the function /// - public delegate IntPtr glLoader(string name); + public delegate IntPtr glLoader( + string name + ); #region StgSharpDele [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public unsafe delegate void FrameBufferSizeHandler(IntPtr window, int width, int height); + public unsafe delegate void FrameBufferSizeHandler( + IntPtr window, + int width, + int height + ); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public unsafe delegate void FramePositionHandler(IntPtr window, float width, float height); + public unsafe delegate void FramePositionHandler( + IntPtr window, + float width, + float height + ); #endregion @@ -65,7 +75,8 @@ namespace StgSharp.Graphics int severity, int length, sbyte* message, - void* userParam); + void* userParam + ); internal unsafe delegate void GLDEBUGPROCARB( int source, int type, @@ -73,7 +84,8 @@ namespace StgSharp.Graphics int severity, int length, sbyte* message, - void* userParam); + void* userParam + ); internal unsafe delegate void GLDEBUGPROCKHR( int source, int type, @@ -81,14 +93,16 @@ namespace StgSharp.Graphics int severity, int length, sbyte* message, - void* userParam); + void* userParam + ); internal unsafe delegate void GLDEBUGPROCAMD( uint id, int category, int severity, int length, sbyte* message, - void* userParam); + void* userParam + ); #endregion diff --git a/StgSharp.Common/HighPerformance/Lable.cs b/StgSharp.Common/HighPerformance/Lable.cs index 00b9cec4..79bf66ee 100644 --- a/StgSharp.Common/HighPerformance/Lable.cs +++ b/StgSharp.Common/HighPerformance/Lable.cs @@ -49,7 +49,7 @@ namespace StgSharp.HighPerformance { ReadOnlySpan nameSpan = Name.AsSpan(); fixed (char* cptr = nameSpan) { - return NativeIntrinsic.Intrinsic.city_hash_simplify(cptr, Name.Length); + return NativeIntrinsic.Context.city_hash_simplify(cptr, Name.Length); } } diff --git a/StgSharp.Common/HighPerformance/MatrixPanel.cs b/StgSharp.Common/HighPerformance/MatrixPanel.cs index a3ff1597..2c735db9 100644 --- a/StgSharp.Common/HighPerformance/MatrixPanel.cs +++ b/StgSharp.Common/HighPerformance/MatrixPanel.cs @@ -61,17 +61,9 @@ namespace StgSharp.HighPerformance [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int ElementSideLength() where T : unmanaged, INumber { - return Math.Max(8, AlignmentBytes / sizeof(T)); + return PanelSideLength(); } - // View an existing pointer; caller guarantees lifetime/alignment. - public static unsafe MatrixPanel* FromPointer(void* ptr) - where T : unmanaged, INumber - { - return (MatrixPanel*)Align64(ptr); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int MaxElementCount() where T : unmanaged, INumber { int side = ElementSideLength(); @@ -115,28 +107,43 @@ namespace StgSharp.HighPerformance [MethodImpl(MethodImplOptions.AggressiveInlining)] private static int KernelSideCountAvx2() where T : unmanaged, INumber { - const int minQ = 8; - int lanes = 32 / sizeof(T); - int side = Math.Max(lanes, minQ); - return side / 4; + return PanelSideFromBits(256) / 4; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static int KernelSideCountAvx512() where T : unmanaged, INumber { - const int minQ = 8; - int lanes = 64 / sizeof(T); - int side = Math.Max(lanes, minQ); - return side / 4; + return PanelSideFromBits(512) / 4; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static int KernelSideCountSse() where T : unmanaged, INumber { - const int minQ = 4; - int lanes = 16 / sizeof(T); - int side = Math.Max(lanes, minQ); - return side / 4; + return PanelSideFromBits(128) / 4; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static int PanelSideFromBits(int vectorBits) where T : unmanaged, INumber + { + int elemBits = sizeof(T) * 8; + + // Q = max(4, vectorBits/64, vectorBits/elemBits) + int by64 = vectorBits / 64; + int byElem = vectorBits / elemBits; + int side = Math.Max(4, Math.Max(by64, byElem)); + return side; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static int PanelSideLength() where T : unmanaged, INumber + { + return NativeIntrinsic.IntrinsicLevel switch + { + IntrinsicLevel.SSE => PanelSideFromBits(128), + IntrinsicLevel.AVX2 => PanelSideFromBits(256), + IntrinsicLevel.AVX512 => PanelSideFromBits(512), + _ => 0 + }; } } diff --git a/StgSharp.Common/HighPerformance/UnsafeCompute.cs b/StgSharp.Common/HighPerformance/UnsafeCompute.cs index 36664dea..c855a43d 100644 --- a/StgSharp.Common/HighPerformance/UnsafeCompute.cs +++ b/StgSharp.Common/HighPerformance/UnsafeCompute.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="UnsafeCompute" // Project: StgSharp @@ -35,19 +35,19 @@ namespace StgSharp.HighPerformance [MethodImpl(MethodImplOptions.AggressiveInlining)] public static unsafe int CityHashSimplify(char* span, int length) { - return NativeIntrinsic.Intrinsic.city_hash_simplify(span, length); + return NativeIntrinsic.Context.city_hash_simplify(span, length); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static unsafe int CityHashSimplify(char* span, int begin, int length) { - return NativeIntrinsic.Intrinsic.city_hash_simplify(span + begin, length); + return NativeIntrinsic.Context.city_hash_simplify(span + begin, length); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static unsafe int IndexOfCharPair(char* source, int pairValue, int length) { - return NativeIntrinsic.Intrinsic.index_pair(source, pairValue, length); + return NativeIntrinsic.Context.index_pair(source, pairValue, length); } } diff --git a/StgSharp.Common/Internal/Graphic/glfw.cs b/StgSharp.Common/Internal/Graphic/glfw.cs index f1133880..a8b771c6 100644 --- a/StgSharp.Common/Internal/Graphic/glfw.cs +++ b/StgSharp.Common/Internal/Graphic/glfw.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="glfw" // Project: StgSharp @@ -53,7 +53,9 @@ namespace StgSharp.Internal public static GLFWFunction glfwContext => _glfw; [LibraryImport(Native.LibName, EntryPoint = "load_glfw_functions")] - internal static unsafe partial void glfwLoadLibrary(GLFWFunction* context); + internal static unsafe partial void glfwLoadLibrary( + GLFWFunction* context + ); internal static unsafe void LoadGlfw() { @@ -78,13 +80,20 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwInitHint(int hint, int value) + internal static unsafe void glfwInitHint( + int hint, + int value + ) { _glfw.glfwInitHint(hint, value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetVersion(int* major, int* minor, int* rev) + internal static unsafe void glfwGetVersion( + int* major, + int* minor, + int* rev + ) { _glfw.glfwGetVersion(major, minor, rev); } @@ -96,20 +105,25 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetError(byte** description) + internal static unsafe int glfwGetError( + byte** description + ) { return _glfw.glfwGetError(description); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetErrorCallback( - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetErrorCallback(callback); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr* glfwGetMonitors(int* count) + internal static unsafe IntPtr* glfwGetMonitors( + int* count + ) { return _glfw.glfwGetMonitors(count); } @@ -121,7 +135,11 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetMonitorPos(IntPtr monitor, int* xpos, int* ypos) + internal static unsafe void glfwGetMonitorPos( + IntPtr monitor, + int* xpos, + int* ypos + ) { _glfw.glfwGetMonitorPos(monitor, xpos, ypos); } @@ -132,74 +150,104 @@ namespace StgSharp.Internal int* xPos, int* yPos, int* width, - int* height) + int* height + ) { _glfw.glfwGetMonitorWorkarea(monitor, xPos, yPos, width, height); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetMonitorPhysicalSize(IntPtr monitor, int* widthMM, int* heightMM) + internal static unsafe void glfwGetMonitorPhysicalSize( + IntPtr monitor, + int* widthMM, + int* heightMM + ) { _glfw.glfwGetMonitorPhysicalSize(monitor, widthMM, heightMM); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetMonitorContentScale(IntPtr monitor, float* xscale, float* yscale) + internal static unsafe void glfwGetMonitorContentScale( + IntPtr monitor, + float* xscale, + float* yscale + ) { _glfw.glfwGetMonitorContentScale(monitor, xscale, yscale); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetMonitorName(IntPtr monitor) + internal static unsafe byte* glfwGetMonitorName( + IntPtr monitor + ) { return _glfw.glfwGetMonitorName(monitor); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetMonitorUserPointer(IntPtr monitor, void* pointer) + internal static unsafe void glfwSetMonitorUserPointer( + IntPtr monitor, + void* pointer + ) { _glfw.glfwSetMonitorUserPointer(monitor, pointer); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void* glfwGetMonitorUserPointer(IntPtr monitor) + internal static unsafe void* glfwGetMonitorUserPointer( + IntPtr monitor + ) { return _glfw.glfwGetMonitorUserPointer(monitor); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetMonitorCallback( - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetMonitorCallback(callback); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe glfwVideomode* glfwGetVideoModes(IntPtr monitor, int* count) + internal static unsafe glfwVideomode* glfwGetVideoModes( + IntPtr monitor, + int* count + ) { return (glfwVideomode*)_glfw.glfwGetVideoModes(monitor, count); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe glfwVideomode* glfwGetVideoMode(IntPtr monitor) + internal static unsafe glfwVideomode* glfwGetVideoMode( + IntPtr monitor + ) { return (glfwVideomode*)_glfw.glfwGetVideoMode(monitor); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetGamma(IntPtr monitor, float gamma) + internal static unsafe void glfwSetGamma( + IntPtr monitor, + float gamma + ) { _glfw.glfwSetGamma(monitor, gamma); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe glfwGammaramp* glfwGetGammaRamp(IntPtr monitor) + internal static unsafe glfwGammaramp* glfwGetGammaRamp( + IntPtr monitor + ) { return (glfwGammaramp*)_glfw.glfwGetGammaRamp(monitor); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetGammaRamp(IntPtr monitor, glfwGammaramp* ramp) + internal static unsafe void glfwSetGammaRamp( + IntPtr monitor, + glfwGammaramp* ramp + ) { _glfw.glfwSetGammaRamp(monitor, (IntPtr)ramp); } @@ -211,13 +259,19 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwWindowHint(int hint, int value) + internal static unsafe void glfwWindowHint( + int hint, + int value + ) { _glfw.glfwWindowHint(hint, value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwWindowHintString(int hint, byte* value) + internal static unsafe void glfwWindowHintString( + int hint, + byte* value + ) { _glfw.glfwWindowHintString(hint, value); } @@ -228,7 +282,8 @@ namespace StgSharp.Internal int height, Span title, IntPtr monitor, - IntPtr share) + IntPtr share + ) { nint handle; fixed (byte* titlePtr = title) { @@ -245,49 +300,75 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwDestroyWindow(IntPtr window) + internal static unsafe void glfwDestroyWindow( + IntPtr window + ) { _glfw.glfwDestroyWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwWindowShouldClose(IntPtr window) + internal static unsafe int glfwWindowShouldClose( + IntPtr window + ) { return _glfw.glfwWindowShouldClose(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowShouldClose(IntPtr window, int value) + internal static unsafe void glfwSetWindowShouldClose( + IntPtr window, + int value + ) { _glfw.glfwSetWindowShouldClose(window, value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowTitle(IntPtr window, byte* title) + internal static unsafe void glfwSetWindowTitle( + IntPtr window, + byte* title + ) { _glfw.glfwSetWindowTitle(window, title); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowIcon(IntPtr window, int count, GLFWimage* images) + internal static unsafe void glfwSetWindowIcon( + IntPtr window, + int count, + GLFWimage* images + ) { _glfw.glfwSetWindowIcon(window, count, (IntPtr)images); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetWindowPos(IntPtr window, int* xpos, int* ypos) + internal static unsafe void glfwGetWindowPos( + IntPtr window, + int* xpos, + int* ypos + ) { _glfw.glfwGetWindowPos(window, xpos, ypos); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowPos(IntPtr window, int xpos, int ypos) + internal static unsafe void glfwSetWindowPos( + IntPtr window, + int xpos, + int ypos + ) { _glfw.glfwSetWindowPos(window, xpos, ypos); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetWindowSize(IntPtr window, int* width, int* height) + internal static unsafe void glfwGetWindowSize( + IntPtr window, + int* width, + int* height + ) { _glfw.glfwGetWindowSize(window, width, height); } @@ -298,97 +379,141 @@ namespace StgSharp.Internal int minWidth, int minHeight, int maxWidth, - int maxHeight) + int maxHeight + ) { _glfw.glfwSetWindowSizeLimits(window, minWidth, minHeight, maxWidth, maxHeight); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowAspectRatio(IntPtr window, int numer, int denom) + internal static unsafe void glfwSetWindowAspectRatio( + IntPtr window, + int numer, + int denom + ) { _glfw.glfwSetWindowAspectRatio(window, numer, denom); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowSize(IntPtr window, int width, int height) + internal static unsafe void glfwSetWindowSize( + IntPtr window, + int width, + int height + ) { _glfw.glfwSetWindowSize(window, width, height); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetFramebufferSize(IntPtr window, int* width, int* height) + internal static unsafe void glfwGetFramebufferSize( + IntPtr window, + int* width, + int* height + ) { _glfw.glfwGetFrameBufferSize(window, width, height); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetWindowFrameSize(IntPtr window, int* left, int* top, int* right, int* bottom) + internal static unsafe void glfwGetWindowFrameSize( + IntPtr window, + int* left, + int* top, + int* right, + int* bottom + ) { _glfw.glfwGetWindowFrameSize(window, left, top, right, bottom); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetWindowContentScale(IntPtr window, float* xscale, float* yscale) + internal static unsafe void glfwGetWindowContentScale( + IntPtr window, + float* xscale, + float* yscale + ) { _glfw.glfwGetWindowContentScale(window, xscale, yscale); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe float glfwGetWindowOpacity(IntPtr window) + internal static unsafe float glfwGetWindowOpacity( + IntPtr window + ) { return _glfw.glfwGetWindowOpacity(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowOpacity(IntPtr window, float opacity) + internal static unsafe void glfwSetWindowOpacity( + IntPtr window, + float opacity + ) { _glfw.glfwSetWindowOpacity(window, opacity); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwIconifyWindow(IntPtr window) + internal static unsafe void glfwIconifyWindow( + IntPtr window + ) { _glfw.glfwIconifyWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwRestoreWindow(IntPtr window) + internal static unsafe void glfwRestoreWindow( + IntPtr window + ) { _glfw.glfwRestoreWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwMaximizeWindow(IntPtr window) + internal static unsafe void glfwMaximizeWindow( + IntPtr window + ) { _glfw.glfwMaximizeWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwShowWindow(IntPtr window) + internal static unsafe void glfwShowWindow( + IntPtr window + ) { _glfw.glfwShowWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwHideWindow(IntPtr window) + internal static unsafe void glfwHideWindow( + IntPtr window + ) { _glfw.glfwHideWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwFocusWindow(IntPtr window) + internal static unsafe void glfwFocusWindow( + IntPtr window + ) { _glfw.glfwFocusWindow(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwRequestWindowAttention(IntPtr window) + internal static unsafe void glfwRequestWindowAttention( + IntPtr window + ) { _glfw.glfwRequestWindowAttention(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwGetWindowMonitor(IntPtr window) + internal static unsafe IntPtr glfwGetWindowMonitor( + IntPtr window + ) { return _glfw.glfwGetWindowMonitor(window); } @@ -401,31 +526,44 @@ namespace StgSharp.Internal int ypos, int width, int height, - int refreshRate) + int refreshRate + ) { _glfw.glfwSetWindowMonitor(window, monitor, xpos, ypos, width, height, refreshRate); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetWindowAttrib(IntPtr window, int attrib) + internal static unsafe int glfwGetWindowAttrib( + IntPtr window, + int attrib + ) { return _glfw.glfwGetWindowAttrib(window, attrib); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowAttrib(IntPtr window, int attrib, int value) + internal static unsafe void glfwSetWindowAttrib( + IntPtr window, + int attrib, + int value + ) { _glfw.glfwSetWindowAttrib(window, attrib, value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetWindowUserPointer(IntPtr window, void* pointer) + internal static unsafe void glfwSetWindowUserPointer( + IntPtr window, + void* pointer + ) { _glfw.glfwSetWindowUserPointer(window, pointer); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void* glfwGetWindowUserPointer(IntPtr window) + internal static unsafe void* glfwGetWindowUserPointer( + IntPtr window + ) { return _glfw.glfwGetWindowUserPointer(window); } @@ -433,7 +571,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowPosCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowPosCallback(window, callback); } @@ -441,7 +580,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowSizeCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowSizeCallback(window, callback); } @@ -449,7 +589,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowCloseCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowCloseCallback(window, callback); } @@ -457,7 +598,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowRefreshCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowRefreshCallback(window, callback); } @@ -465,7 +607,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowFocusCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowFocusCallback(window, callback); } @@ -473,7 +616,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowIconifyCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowIconifyCallback(window, callback); } @@ -481,7 +625,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowMaximizeCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowMaximizeCallback(window, callback); } @@ -489,7 +634,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetFrameBufferSizeCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetFramebufferSizeCallback(window, callback); } @@ -497,7 +643,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetWindowContentScaleCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetWindowContentScaleCallback(window, callback); } @@ -515,7 +662,9 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwWaitEventsTimeout(double timeout) + internal static unsafe void glfwWaitEventsTimeout( + double timeout + ) { _glfw.glfwWaitEventsTimeout(timeout); } @@ -527,13 +676,20 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetInputMode(IntPtr window, int mode) + internal static unsafe int glfwGetInputMode( + IntPtr window, + int mode + ) { return _glfw.glfwGetInputMode(window, mode); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetInputMode(IntPtr window, int mode, int value) + internal static unsafe void glfwSetInputMode( + IntPtr window, + int mode, + int value + ) { _glfw.glfwSetInputMode(window, mode, value); } @@ -545,61 +701,91 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetKeyName(int key, int scancode) + internal static unsafe byte* glfwGetKeyName( + int key, + int scancode + ) { return _glfw.glfwGetKeyName(key, scancode); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetKeyScancode(int key) + internal static unsafe int glfwGetKeyScancode( + int key + ) { return _glfw.glfwGetKeyScancode(key); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe KeyStatus glfwGetKey(IntPtr window, int key) + internal static unsafe KeyStatus glfwGetKey( + IntPtr window, + int key + ) { return _glfw.glfwGetKey(window, key); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetMouseButton(IntPtr window, int button) + internal static unsafe int glfwGetMouseButton( + IntPtr window, + int button + ) { return _glfw.glfwGetMouseButton(window, button); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwGetCursorPos(IntPtr window, double* xpos, double* ypos) + internal static unsafe void glfwGetCursorPos( + IntPtr window, + double* xpos, + double* ypos + ) { _glfw.glfwGetCursorPos(window, xpos, ypos); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetCursorPos(IntPtr window, double xpos, double ypos) + internal static unsafe void glfwSetCursorPos( + IntPtr window, + double xpos, + double ypos + ) { _glfw.glfwSetCursorPos(window, xpos, ypos); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwCreateCursor(GLFWimage* image, int xhot, int yhot) + internal static unsafe IntPtr glfwCreateCursor( + GLFWimage* image, + int xhot, + int yhot + ) { return _glfw.glfwCreateCursor((IntPtr)image, xhot, yhot); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwCreateStandardCursor(int shape) + internal static unsafe IntPtr glfwCreateStandardCursor( + int shape + ) { return _glfw.glfwCreateStandardCursor(shape); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwDestroyCursor(IntPtr cursor) + internal static unsafe void glfwDestroyCursor( + IntPtr cursor + ) { _glfw.glfwDestroyCursor(cursor); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetCursor(IntPtr window, IntPtr cursor) + internal static unsafe void glfwSetCursor( + IntPtr window, + IntPtr cursor + ) { _glfw.glfwSetCursor(window, cursor); } @@ -607,7 +793,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetKeyCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetKeyCallback(window, callback); } @@ -615,7 +802,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetCharCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetCharCallback(window, callback); } @@ -623,7 +811,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetCharModsCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetCharModsCallback(window, callback); } @@ -631,7 +820,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetMouseButtonCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetMouseButtonCallback(window, callback); } @@ -639,7 +829,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetCursorPosCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetCursorPosCallback(window, callback); } @@ -647,7 +838,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetCursorEnterCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetCursorEnterCallback(window, callback); } @@ -655,7 +847,8 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetScrollCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetScrollCallback(window, callback); } @@ -663,98 +856,134 @@ namespace StgSharp.Internal [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetDropCallback( IntPtr window, - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetDropCallback(window, callback); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwJoystickPresent(int jid) + internal static unsafe int glfwJoystickPresent( + int jid + ) { return _glfw.glfwJoystickPresent(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe float* glfwGetJoystickAxes(int jid, int* count) + internal static unsafe float* glfwGetJoystickAxes( + int jid, + int* count + ) { return _glfw.glfwGetJoystickAxes(jid, count); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetJoystickButtons(int jid, int* count) + internal static unsafe byte* glfwGetJoystickButtons( + int jid, + int* count + ) { return _glfw.glfwGetJoystickButtons(jid, count); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetJoystickHats(int jid, int* count) + internal static unsafe byte* glfwGetJoystickHats( + int jid, + int* count + ) { return _glfw.glfwGetJoystickHats(jid, count); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetJoystickName(int jid) + internal static unsafe byte* glfwGetJoystickName( + int jid + ) { return _glfw.glfwGetJoystickName(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetJoystickGUID(int jid) + internal static unsafe byte* glfwGetJoystickGUID( + int jid + ) { return _glfw.glfwGetJoystickGUID(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetJoystickUserPointer(int jid, void* pointer) + internal static unsafe void glfwSetJoystickUserPointer( + int jid, + void* pointer + ) { _glfw.glfwSetJoystickUserPointer(jid, pointer); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void* glfwGetJoystickUserPointer(int jid) + internal static unsafe void* glfwGetJoystickUserPointer( + int jid + ) { return _glfw.glfwGetJoystickUserPointer(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwJoystickIsGamepad(int jid) + internal static unsafe int glfwJoystickIsGamepad( + int jid + ) { return _glfw.glfwJoystickIsGamePad(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe delegate* unmanaged[Cdecl] glfwSetJoystickCallback( - delegate* unmanaged[Cdecl] callback) + delegate* unmanaged[Cdecl] callback + ) { return _glfw.glfwSetJoystickCallback(callback); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwUpdateGamePadMappings(byte* str) + internal static unsafe int glfwUpdateGamePadMappings( + byte* str + ) { return _glfw.glfwUpdateGamePadMappings(str); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetGamePadName(int jid) + internal static unsafe byte* glfwGetGamePadName( + int jid + ) { return _glfw.glfwGetGamepadName(jid); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwGetGamePadState(int jid, GLFWgamepadstate* state) + internal static unsafe int glfwGetGamePadState( + int jid, + GLFWgamepadstate* state + ) { return _glfw.glfwGetGamepadState(jid, (IntPtr)state); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetClipboardString(IntPtr window, byte* str) + internal static unsafe void glfwSetClipboardString( + IntPtr window, + byte* str + ) { _glfw.glfwSetClipboardString(window, str); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte* glfwGetClipboardString(IntPtr window) + internal static unsafe byte* glfwGetClipboardString( + IntPtr window + ) { return _glfw.glfwGetClipboardString(window); } @@ -766,7 +995,9 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSetTime(double time) + internal static unsafe void glfwSetTime( + double time + ) { _glfw.glfwSetTime(time); } @@ -784,7 +1015,9 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwMakeContextCurrent(IntPtr window) + internal static unsafe void glfwMakeContextCurrent( + IntPtr window + ) { _glfw.glfwMakeContextCurrent(window); } @@ -796,31 +1029,41 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSwapBuffers(IntPtr window) + internal static unsafe void glfwSwapBuffers( + IntPtr window + ) { _glfw.glfwSwapBuffers(window); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe void glfwSwapInterval(int interval) + internal static unsafe void glfwSwapInterval( + int interval + ) { _glfw.glfwSwapInterval(interval); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe int glfwExtensionSupported(byte* extension) + internal static unsafe int glfwExtensionSupported( + byte* extension + ) { return _glfw.glfwExtensionSupported(extension); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwGetProcAddress(string procName) + internal static unsafe IntPtr glfwGetProcAddress( + string procName + ) { return glfwGetProcAddress(Encoding.UTF8.GetBytes(procName)); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwGetProcAddress(ReadOnlySpan procName) + internal static unsafe IntPtr glfwGetProcAddress( + ReadOnlySpan procName + ) { fixed (byte* sPtr = procName) { return _glfw.glfwGetProcAddress(sPtr); @@ -828,7 +1071,9 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe IntPtr glfwGetProcAddress(Span procName) + internal static unsafe IntPtr glfwGetProcAddress( + Span procName + ) { fixed (byte* bPtr = procName) { return _glfw.glfwGetProcAddress(bPtr); @@ -842,7 +1087,9 @@ namespace StgSharp.Internal } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe byte** glfwGetRequiredInstanceExtensions(uint* count) + internal static unsafe byte** glfwGetRequiredInstanceExtensions( + uint* count + ) { return _glfw.glfwGetRequiredInstanceExtensions(count); } diff --git a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs index 40fb3f2e..a41cdd31 100644 --- a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs +++ b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs @@ -34,24 +34,40 @@ using System.Runtime.InteropServices.Marshalling; namespace StgSharp.Internal.Intrinsic { + [StructLayout(LayoutKind.Sequential)] + internal unsafe struct MatrixIntrinsic + { + + public delegate* unmanaged[Cdecl] buffer_add; //f32_buffer_add + public delegate* unmanaged[Cdecl] buffer_fill; //f32_buffer_fill + public delegate* unmanaged[Cdecl] buffer_scalar_mul; //f32_buffer_s_m + public delegate* unmanaged[Cdecl] buffer_sub; //f32_kernel_sub + public delegate* unmanaged[Cdecl] buffer_transpose; //f32_kernel_transpose + public delegate* unmanaged[Cdecl] build_panel; //f32_build_panel + public delegate* unmanaged[Cdecl] clear_panel; //f32_clear_panel + public delegate* unmanaged[Cdecl] panel_fma; //f32_panel_fma + public delegate* unmanaged[Cdecl] pivot; //f32_panel_mul + public delegate* unmanaged[Cdecl] store_panel; //f32_store_panel + + } + + [InlineArray(4)] + internal unsafe struct MatrixIntrinsicArray + { + + private MatrixIntrinsic e0; + + } + [StructLayout(LayoutKind.Sequential)] internal unsafe struct IntrinsicContext { - public delegate* unmanaged[Cdecl] city_hash_simplify; //city_hash_simplify - public delegate* unmanaged[Cdecl] f32_buffer_add; //f32_buffer_add - public delegate* unmanaged[Cdecl] f32_buffer_fill; //f32_buffer_fill - public delegate* unmanaged[Cdecl] f32_buffer_scalar_mul; //f32_buffer_s_m - public delegate* unmanaged[Cdecl] f32_buffer_sub; //f32_kernel_sub - public delegate* unmanaged[Cdecl] f32_buffer_transpose; //f32_kernel_transpose - public delegate* unmanaged[Cdecl] f32_build_panel; //f32_build_panel - public delegate* unmanaged[Cdecl] f32_clear_panel; - public delegate* unmanaged[Cdecl] f32_normalize_3; //f32_normalize_3 - public delegate* unmanaged[Cdecl] f32_panel_fma; //f32_panel_fma - public delegate* unmanaged[Cdecl] f32_store_panel; //f32_store_panel - public delegate* unmanaged[Cdecl] factorial_simd; //factorial_simd - public delegate* unmanaged[Cdecl] index_pair; //index_pair - public delegate* unmanaged[Cdecl] variant ; //variant + public delegate* unmanaged[Cdecl] city_hash_simplify; // city_hash_simplify + public delegate* unmanaged[Cdecl] factorial_simd; // factorial_simd + public delegate* unmanaged[Cdecl] index_pair; // index_pair + public delegate* unmanaged[Cdecl] vec_f32_normalize_3; // f32_normalize_3 + public MatrixIntrinsicArray mat; // mat[4] in native order public IntrinsicContext() { diff --git a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs index eaf92a40..fa8ac761 100644 --- a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs +++ b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs @@ -41,7 +41,7 @@ namespace StgSharp.Internal public static IntrinsicLevel IntrinsicLevel { get; set; } - internal static IntrinsicContext Intrinsic + internal static IntrinsicContext Context { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => _intrinsicContext; diff --git a/StgSharp.Common/Internal/StructDefine.cs b/StgSharp.Common/Internal/StructDefine.cs index 9c37a230..2f79cc80 100644 --- a/StgSharp.Common/Internal/StructDefine.cs +++ b/StgSharp.Common/Internal/StructDefine.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="StructDefine" // Project: StgSharp @@ -39,18 +39,6 @@ namespace StgSharp.Internal using GLFWbool = Boolean; - #region glad struct - - [StructLayout(LayoutKind.Sequential)] - internal struct GLsync - { - - public IntPtr Handle; - - } - - #endregion glad struct - // strucs defined in GLFW3.h #region GLFW3 struct diff --git a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs index dd63559b..0894256c 100644 --- a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs +++ b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="ShowViewPort" // Project: StgSharp @@ -53,7 +53,9 @@ namespace StgSharp.MVVM.ViewModel /// /// CustomizeInit this form and render it on screen, and respond with operation /// - public unsafe void UseViewModel(string viewEntryName) + public unsafe void UseViewModel( + string viewEntryName + ) { CustomizeInitialize(); UseViewInNextFrame(viewEntryName); @@ -62,7 +64,9 @@ namespace StgSharp.MVVM.ViewModel if (_nextView != _currentView) { _ = Interlocked.Exchange(ref _currentView, _nextView); } - Thread renderThread = new Thread((token) => { + Thread renderThread = new Thread(( + token + ) => { try { ProcessFrameWithoutEvent(); @@ -92,7 +96,9 @@ namespace StgSharp.MVVM.ViewModel frameTimeProvider.Dispose(); } - protected void UseViewInNextFrame(string name) + protected void UseViewInNextFrame( + string name + ) { if (!allView.TryGetValue(name, out ViewBase v)) { throw new KeyNotFoundException( @@ -101,7 +107,10 @@ namespace StgSharp.MVVM.ViewModel CurrentView = v; } - private void CountFps(object sender, EventArgs e) + private void CountFps( + object sender, + EventArgs e + ) { Interlocked.Exchange(ref _frameSpeed, _frameCount); Interlocked.Exchange(ref _frameCount, 0); @@ -118,7 +127,10 @@ namespace StgSharp.MVVM.ViewModel private void ProcessFrameWithoutEvent() { - frameTimeProvider.TimeSpanRefreshed += (_, _) => { }; + frameTimeProvider.TimeSpanRefreshed += ( + _, + _ + ) => { }; while (_closed) { foreach (ViewPort context in CurrentView.Render) { diff --git a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs index 6a95d121..73e45aba 100644 --- a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs +++ b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="ViewModel" // Project: StgSharp @@ -62,55 +62,67 @@ namespace StgSharp.MVVM.ViewModel internal TimeSpanProvider frameTimeProvider; internal Vector4 backgroundColor; - protected ViewModelBase(int frameSpeed) + protected ViewModelBase( + int frameSpeed + ) { viewPortDisplay = new ViewPort(); allView = []; - fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; long frameLength = (FrameSpeed > 0) ? (1000L * 1000L / FrameSpeed) : 0; - frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); + frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); SetFrameSizeCallback(DefaultFrameResizeCallback); } - protected ViewModelBase(double frameLength) + protected ViewModelBase( + double frameLength + ) { viewPortDisplay = new ViewPort(); allView = []; - fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, frameLength), TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0; - frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, frameLength), TimeSpanProvider.DefaultProvider); + frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider); SetFrameSizeCallback(DefaultFrameResizeCallback); } - public ViewModelBase(ViewPort vBinding, int frameSpeed) + public ViewModelBase( + ViewPort vBinding, + int frameSpeed + ) { viewPortDisplay = vBinding; allView = []; - fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, 1.0), TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0), TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; long frameLength = (frameSpeed > 0) ? (1000L * 1000L / frameSpeed) : 0; - frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); + frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider); SetFrameSizeCallback(DefaultFrameResizeCallback); } - public ViewModelBase(ViewPort vBinding, double frameLength) + public ViewModelBase( + ViewPort vBinding, + double frameLength + ) { viewPortDisplay = vBinding; allView = []; - fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, 1.0), TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0), TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0; - frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.MaxValue, frameLength), TimeSpanProvider.DefaultProvider); + frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider); SetFrameSizeCallback(DefaultFrameResizeCallback); } - public DataBindingEntry this[string name] + public DataBindingEntry this[ + string name + ] { get { @@ -189,11 +201,15 @@ namespace StgSharp.MVVM.ViewModel /// Maximum Size of current form. In form of a of (width,height) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSizeLimit(Vec2 minSize, Vec2 maxSize) + public void SetSizeLimit( + Vec2 minSize, + Vec2 maxSize + ) { ThreadHelper.MainThreadAssert(); - GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle, (int)minSize.X, - (int)minSize.Y, (int)maxSize.X, (int)maxSize.Y); + GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle, + (int)minSize.X, (int)minSize.Y, (int)maxSize.X, + (int)maxSize.Y); } /// @@ -212,16 +228,26 @@ namespace StgSharp.MVVM.ViewModel /// Maximum height of current form /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight) + public void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight + ) { ThreadHelper.MainThreadAssert(); - GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle, minWidth, minHeight, maxWidth, - maxHeight); + GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle, minWidth, + minHeight, maxWidth, maxHeight); } - public abstract bool TryGetObjectReference(string name, out DataBindingEntry entry); + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry + ); - protected unsafe void SetFrameSizeCallback(FrameBufferSizeHandler callback) + protected unsafe void SetFrameSizeCallback( + FrameBufferSizeHandler callback + ) { _resizeCallback = callback; IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate(callback); @@ -229,7 +255,11 @@ namespace StgSharp.MVVM.ViewModel viewPortDisplay.ViewPortHandle, (delegate* unmanaged[Cdecl])handlerPtr); } - private void DefaultFrameResizeCallback(IntPtr windowHandle, int width, int height) + private void DefaultFrameResizeCallback( + IntPtr windowHandle, + int width, + int height + ) { ViewPort.GetExistedViewPort(windowHandle, out ViewPort vp); vp.RequestFlushSizeInNextFrame(width, height); diff --git a/StgSharp.Common/Mathematics/Graphic/Matrix44.cs b/StgSharp.Common/Mathematics/Graphic/Matrix44.cs index ebe17a43..03e7c776 100644 --- a/StgSharp.Common/Mathematics/Graphic/Matrix44.cs +++ b/StgSharp.Common/Mathematics/Graphic/Matrix44.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="Matrix44" // Project: StgSharp @@ -45,13 +45,20 @@ namespace StgSharp.Mathematics.Graphic [FieldOffset(0)] internal ColumnSet4 mat; [FieldOffset(0)] internal MatrixKernel kernel; - internal Matrix44(ColumnSet4 mat) + internal Matrix44( + ColumnSet4 mat + ) { Unsafe.SkipInit(out this); this.mat = mat; } - internal Matrix44(Vector4 vec0, Vector4 vec1, Vector4 vec2, Vector4 vec3) + internal Matrix44( + Vector4 vec0, + Vector4 vec1, + Vector4 vec2, + Vector4 vec3 + ) { Unsafe.SkipInit(out this); mat.colum0 = vec0; @@ -81,7 +88,8 @@ namespace StgSharp.Mathematics.Graphic float a30, float a31, float a32, - float a33) + float a33 + ) { Unsafe.SkipInit(out this); mat.colum0 = new Vector4(a00, a10, a20, a30); @@ -90,7 +98,10 @@ namespace StgSharp.Mathematics.Graphic mat.colum3 = new Vector4(a03, a13, a23, a33); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ + int rowNum, + int columNum + ] { get { @@ -132,29 +143,29 @@ namespace StgSharp.Mathematics.Graphic public static Matrix44 Unit => new Matrix44(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - public static Matrix44 WNegativeUnit => new Matrix44(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, - 0, 0, -1); + public static Matrix44 WNegativeUnit => new Matrix44(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1); - public static Matrix44 XNegativeUnit => new Matrix44(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 1); + public static Matrix44 XNegativeUnit => new Matrix44(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - public static Matrix44 YNegativeUnit => new Matrix44(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 1); + public static Matrix44 YNegativeUnit => new Matrix44(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - public static Matrix44 ZNegativeUnit => new Matrix44(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 1); + public static Matrix44 ZNegativeUnit => new Matrix44(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1); public ReadOnlySpan AsSpan() { return MemoryMarshal.CreateReadOnlySpan(ref Unsafe.As(ref mat), 16); } - public override bool Equals(object? obj) + public override bool Equals( + object? obj + ) { return obj is Matrix44 x && Equals(x); } - public bool Equals(Matrix44 other) + public bool Equals( + Matrix44 other + ) { return mat.Equals(other.mat); } @@ -166,64 +177,72 @@ namespace StgSharp.Mathematics.Graphic } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal unsafe void InternalTranspose(ref Matrix44 transpose) + internal unsafe void InternalTranspose( + ref Matrix44 transpose + ) { + const int f32 = 0; fixed (MatrixKernel* source = &this.kernel, target = &transpose.kernel) { - NativeIntrinsic.Intrinsic.f32_buffer_transpose(source, target); + NativeIntrinsic.Context.mat[f32].buffer_transpose(source, target); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator -(Matrix44 left, Matrix44 right) + public static unsafe Matrix44 operator -( + Matrix44 left, + Matrix44 right + ) { Matrix44 ret = new(); - NativeIntrinsic.Intrinsic.f32_buffer_sub(&left, &right, &ret, 1); + const int f32 = 0; + NativeIntrinsic.Context.mat[f32].buffer_sub(&left, &right, &ret, 1); return ret; } - public static bool operator !=(Matrix44 left, Matrix44 right) + public static bool operator !=( + Matrix44 left, + Matrix44 right + ) { return !(left == right); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator *(Matrix44 mat, float value) + public static unsafe Matrix44 operator *( + Matrix44 mat, + float value + ) { return new Matrix44(mat.mat.colum0 * value, mat.mat.colum1 * value, mat.mat.colum2 * value, mat.mat.colum3 * value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix44 operator *(Matrix44 left, Matrix44 right) + public static Matrix44 operator *( + Matrix44 left, + Matrix44 right + ) { Matrix44 transpose = left.Transpose; - return new Matrix44(Vector4.Dot(transpose.mat.colum0, right.mat.colum0), - Vector4.Dot(transpose.mat.colum0, right.mat.colum1), - Vector4.Dot(transpose.mat.colum0, right.mat.colum2), - Vector4.Dot(transpose.mat.colum0, right.mat.colum3), - Vector4.Dot(transpose.mat.colum1, right.mat.colum0), - Vector4.Dot(transpose.mat.colum1, right.mat.colum1), - Vector4.Dot(transpose.mat.colum1, right.mat.colum2), - Vector4.Dot(transpose.mat.colum1, right.mat.colum3), - Vector4.Dot(transpose.mat.colum2, right.mat.colum0), - Vector4.Dot(transpose.mat.colum2, right.mat.colum1), - Vector4.Dot(transpose.mat.colum2, right.mat.colum2), - Vector4.Dot(transpose.mat.colum2, right.mat.colum3), - Vector4.Dot(transpose.mat.colum3, right.mat.colum0), - Vector4.Dot(transpose.mat.colum3, right.mat.colum1), - Vector4.Dot(transpose.mat.colum3, right.mat.colum2), - Vector4.Dot(transpose.mat.colum3, right.mat.colum3)); + return new Matrix44(Vector4.Dot(transpose.mat.colum0, right.mat.colum0), Vector4.Dot(transpose.mat.colum0, right.mat.colum1), Vector4.Dot(transpose.mat.colum0, right.mat.colum2), Vector4.Dot(transpose.mat.colum0, right.mat.colum3), Vector4.Dot(transpose.mat.colum1, right.mat.colum0), Vector4.Dot(transpose.mat.colum1, right.mat.colum1), Vector4.Dot(transpose.mat.colum1, right.mat.colum2), Vector4.Dot(transpose.mat.colum1, right.mat.colum3), Vector4.Dot(transpose.mat.colum2, right.mat.colum0), Vector4.Dot(transpose.mat.colum2, right.mat.colum1), Vector4.Dot(transpose.mat.colum2, right.mat.colum2), Vector4.Dot(transpose.mat.colum2, right.mat.colum3), Vector4.Dot(transpose.mat.colum3, right.mat.colum0), Vector4.Dot(transpose.mat.colum3, right.mat.colum1), Vector4.Dot(transpose.mat.colum3, right.mat.colum2), Vector4.Dot(transpose.mat.colum3, right.mat.colum3)); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator +(Matrix44 left, Matrix44 right) + public static unsafe Matrix44 operator +( + Matrix44 left, + Matrix44 right + ) { Matrix44 ret = new(); - NativeIntrinsic.Intrinsic.f32_buffer_add(&left, &right, &ret, 1); + const int f32 = 0; + NativeIntrinsic.Context.mat[f32].buffer_add(&left, &right, &ret, 1); return ret; } - public static bool operator ==(Matrix44 left, Matrix44 right) + public static bool operator ==( + Matrix44 left, + Matrix44 right + ) { return left.Equals(right); } diff --git a/StgSharp.Common/Mathematics/Linear/Matrix.cs b/StgSharp.Common/Mathematics/Linear/Matrix.cs index 26bfd118..c2527bec 100644 --- a/StgSharp.Common/Mathematics/Linear/Matrix.cs +++ b/StgSharp.Common/Mathematics/Linear/Matrix.cs @@ -50,14 +50,17 @@ namespace StgSharp.Mathematics.Numeric MatrixSize size, MatrixStorage buffer - ) + ) { _boarder = boarder; _size = size; _buffer = buffer; } - public T this[int x, int y] + public T this[ + int x, + int y + ] { get { @@ -108,7 +111,8 @@ namespace StgSharp.Mathematics.Numeric /// public unsafe Matrix this[ ReadOnlySpan column, - ReadOnlySpan row] + ReadOnlySpan row + ] { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } @@ -137,7 +141,10 @@ namespace StgSharp.Mathematics.Numeric protected internal int KernelRowLength => _size.KernelRowLength; [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe ref MatrixKernel GetMatrixKernel(int x, int y) + public unsafe ref MatrixKernel GetMatrixKernel( + int x, + int y + ) { MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength, x, y); @@ -147,7 +154,10 @@ namespace StgSharp.Mathematics.Numeric } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal unsafe ref T GetElementUnsafe(int x, int y) + internal unsafe ref T GetElementUnsafe( + int x, + int y + ) { // Caller guarantees: indices in range, layout is dense square. int k_c = y >> 2; @@ -161,5 +171,37 @@ namespace StgSharp.Mathematics.Numeric return ref kernel[c, r]; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal unsafe MatrixKernel* GetKernelAddressUnsafe( + int x, + int y + ) + { + // Caller guarantees: indices in range, layout is dense square. + int k_c = y >> 2; + int k_r = x >> 2; + + MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength, + k_c, k_r); + return Buffer + _boarder.GetIndexOffset(k_c, k_r, in enumerator); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal unsafe ref MatrixKernel GetKernelUnsafe( + int x, + int y + ) + { + // Caller guarantees: indices in range, layout is dense square. + int k_c = y >> 2; + int k_r = x >> 2; + int c = y & 3; + int r = x & 3; + + MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength, + k_c, k_r); + return ref _buffer[_boarder.GetIndexOffset(k_c, k_r, in enumerator)]; + } + } } diff --git a/StgSharp.Common/Mathematics/Scalar/Factorial.cs b/StgSharp.Common/Mathematics/Scalar/Factorial.cs index 7d6a16e8..83b66fef 100644 --- a/StgSharp.Common/Mathematics/Scalar/Factorial.cs +++ b/StgSharp.Common/Mathematics/Scalar/Factorial.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="Factorial" // Project: StgSharp @@ -55,7 +55,7 @@ namespace StgSharp.Mathematics return factorialResult[n]; } if (n < 30) { - return NativeIntrinsic.Intrinsic.factorial_simd(n); + return NativeIntrinsic.Context.factorial_simd(n); } double dn = n, diff --git a/StgSharp.Common/Stg/CollisionTexture.cs b/StgSharp.Common/Stg/CollisionTexture.cs index a0f475fb..5cbd4980 100644 --- a/StgSharp.Common/Stg/CollisionTexture.cs +++ b/StgSharp.Common/Stg/CollisionTexture.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="CollisionTexture" // Project: StgSharp @@ -47,7 +47,10 @@ namespace StgSharp.Stg public interface IOneDimensionalCollisionTexture2D { - public void Init(Radius angleStride, string name); + public void Init( + Radius angleStride, + string name + ); } @@ -70,7 +73,9 @@ namespace StgSharp.Stg public override bool IsContextSharable => false; - public void GenerateCollisionTexture(IEnumerable bufferEnumeration) + public void GenerateCollisionTexture( + IEnumerable bufferEnumeration + ) { fbo.Bind(0); GL.ClearColor(0, 0, 0, 1); @@ -92,7 +97,8 @@ namespace StgSharp.Stg vbo.WriteVectorData(0, item.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)); + vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), + 3 * sizeof(float)); vbo.WriteScalerData(2, item.ScalingSpan, BufferUsage.StreamDraw); vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); @@ -100,22 +106,23 @@ namespace StgSharp.Stg vbo.WriteVectorData(1, g.VertexStream, BufferUsage.StreamDraw); vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); - GL.DrawElementsInstanced( - GeometryType.TRIANGLES, ((uint)g.VertexIndices.Length) / 3, TypeCode.UInt32, - IntPtr.Zero, (uint)item.ScalingSpan.Length); + GL.DrawElementsInstanced(GeometryType.TRIANGLES, (g.VertexIndices.Length) / 3, + TypeCode.UInt32, IntPtr.Zero, item.ScalingSpan.Length); } t.Bind2D(0); - GL.GetTextureImage( - Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, PixelChannelLayout.Float, - textureOutput); + GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, + PixelChannelLayout.Float, textureOutput); VertexArray.BindNull(); } - public void Init(Radius angleStride, string name) + public void Init( + Radius angleStride, + string name + ) { - primeArgs = new ViewPort( - 1, (int)((new Radius(Scalar.Pi)) / angleStride), name, IntPtr.Zero); + primeArgs = new ViewPort(1, (int)((new Radius(Scalar.Pi)) / angleStride), name, + IntPtr.Zero); PlatformSpecifiedInitialize(); CustomizeInit(); @@ -155,15 +162,15 @@ namespace StgSharp.Stg t = CreateTexture(1); t.Bind2D(0); - GL.TextureImage2d - (Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, (uint)Width, (uint)Height - , ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, Array.Empty()); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + Width, Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, Array.Empty()); t.Set2dWrapProperty(0, TextureWrap.Repeat, TextureWrap.Repeat); t.Set2dFilterProperty(0, TextureFilter.Nearest, TextureFilter.Nearest); - GL.FrameBufferTexture2d( - FrameBufferTarget.All, glAttachment.Color(0), Texture2DTarget.Texture2D, t[0], 0); + GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), + Texture2DTarget.Texture2D, t[0], 0); GL.CombineFrameBufferRenderBuffer(FrameBufferAttachment.Color, rbo[0]); diff --git a/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs b/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs new file mode 100644 index 00000000..17d9845f --- /dev/null +++ b/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs @@ -0,0 +1,192 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// 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, allowVoid:false); + 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, allowVoid:true); + if (pointerLevel > 0) { + return $"{mapped}{new string('*', pointerLevel)}"; + } + return mapped; + } + + public static string MapParameter( + GlParam param + ) + { + if (param.PointerLevel == 0) + { + if (param.CType.Equals("GLenum", StringComparison.Ordinal) && + LooksLikeShaderType(param.Name) && + !param.IsPointer) { + return "ShaderType"; + } + + 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, allowVoid:false); + 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, allowVoid:true); + if (pointerLevel > 0) { + return $"{mapped}{new string('*', pointerLevel)}"; + } + return mapped; + } + + public static bool TryMapConstPointerToSpan( + GlParam param, + out string spanElementType + ) + { + spanElementType = string.Empty; + if (!param.IsConst || param.PointerLevel != 1) { + return false; + } + + string mapped = MapType(param.CType, allowVoid:false); + if (mapped is "void") { + return false; + } + + spanElementType = 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 bool LooksLikeShaderType( + string name + ) + { + if (string.IsNullOrWhiteSpace(name)) { + return false; + } + return name.Contains("shadertype", StringComparison.OrdinalIgnoreCase) || + name.Equals("type", StringComparison.OrdinalIgnoreCase); + } + + private static string MapType( + string cType, + bool allowVoid + ) + { + return cType switch + { + "void" when allowVoid => "void", + "GLenum" or "GLbitfield" => "uint", + "GLboolean" => "byte", + "GLuint" or "GLhandleARB" => "uint", + "GLint" or "GLsizei" or "GLfixed" => "int", + "GLshort" => "short", + "GLbyte" => "sbyte", + "GLubyte" => "byte", + "GLushort" => "ushort", + "GLfloat" => "float", + "GLdouble" => "double", + "GLclampf" or "GLclampd" => "float", + "GLintptr" => "nint", + "GLsizeiptr" => "nuint", + "GLchar" => "byte", + "GLsync" => "GLsync", + _ => allowVoid && cType == "void" ? "void" : "IntPtr" + }; + } + + } +} diff --git a/StgSharp.GenerateGL/CodeGen/Generator.cs b/StgSharp.GenerateGL/CodeGen/Generator.cs new file mode 100644 index 00000000..8a889bd9 --- /dev/null +++ b/StgSharp.GenerateGL/CodeGen/Generator.cs @@ -0,0 +1,422 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// 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; + +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(); + 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); + WriteOpenGLFunctionFile(v, versionCmds); + WriteGlContextFile(v, versionCmds); + } + 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.cs"); + File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); + } + + private void WriteGlContextFile( + string version, + IReadOnlyList commands + ) + { + 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;\n"); + sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); + sb.AppendLine("{"); + sb.AppendLine(" public unsafe partial struct OpenglContext"); + sb.AppendLine(" {"); + foreach (GlCommand cmd in commands.OrderBy(c => c!.Name, StringComparer.Ordinal)) + { + 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, $"glContext.v{version.Replace('.', '_')}.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, "glContext.cs"); + File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); + } + + private void WriteOpenGLFunctionFile( + string version, + IReadOnlyList commands + ) + { + 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.OrderBy(c => c!.Name, StringComparer.Ordinal)) + { + string ret = CsTypeMapper.MapReturn(cmd.ReturnType, cmd.ReturnPointerLevel); + string rawName = cmd.Name; // original glXxx + string methodName = TrimGlPrefix(rawName); + List paramList = new List(); + List callArgs = new List(); + List<(string Type,string Name)> pinned = new(); + foreach (GlParam p in cmd.Parameters) + { + string pname = SafeName(p.Name); + if (CsTypeMapper.TryMapConstPointerToSpan(p, out string spanElementType)) + { + paramList.Add($"ReadOnlySpan<{spanElementType}> {pname}"); + pinned.Add((spanElementType, pname)); + callArgs.Add($"{pname}Ptr"); + } else + { + string mapped = CsTypeMapper.MapParameter(p); + paramList.Add($"{mapped} {pname}"); + if (mapped == "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(" {"); + string prefix = ret == "void" ? string.Empty : "return "; + if (pinned.Count == 0) + { + sb.AppendLine($" {prefix}Context.{rawName}({call});"); + } else + { + string indent = " "; + foreach ((string Type, string Name) pin in pinned) + { + sb.AppendLine($"{indent}fixed ({pin.Type}* {pin.Name}Ptr = {pin.Name})"); + sb.AppendLine($"{indent}{{"); + indent += " "; + } + sb.AppendLine($"{indent}{prefix}Context.{rawName}({call});"); + 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, $"glFunction.v{version.Replace('.', '_')}.cs"); + File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); + } + + private enum CommandHistoryAction + { + + Added, + Removed + + } + + private readonly record struct CommandHistoryEntry( + string Version, + CommandHistoryAction Action + ); + + } +} diff --git a/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs b/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs new file mode 100644 index 00000000..899fe331 --- /dev/null +++ b/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs @@ -0,0 +1,184 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// 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); + parameters.Add(new GlParam(pName, cType, pointerLevel, isConst)); + } + + 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/StgSharp.GenerateGL/CodeGen/Models.cs b/StgSharp.GenerateGL/CodeGen/Models.cs new file mode 100644 index 00000000..7eb73b34 --- /dev/null +++ b/StgSharp.GenerateGL/CodeGen/Models.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// 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 + ) + { + + public bool IsPointer => PointerLevel > 0; + + } + + internal sealed record GlFeature( + string Version, + IReadOnlyList RequiresCommands, + IReadOnlyList RemovedCommands + ); +} diff --git a/StgSharp.GenerateGL/Docs/SourceGenerator.md b/StgSharp.GenerateGL/Docs/SourceGenerator.md new file mode 100644 index 00000000..73a8b26f --- /dev/null +++ b/StgSharp.GenerateGL/Docs/SourceGenerator.md @@ -0,0 +1,71 @@ +# StgSharp.GenerateGL 源生成器技术文档 + +## 目标与范围 +- **输入**:Khronos OpenGL Registry `gl.xml`(Core Profile 为主,版本 3.3→4.6,可选扩展)。 +- **输出**:分版本 partial `glContext`(`delegate*` 字段)与 `OpenGLFunction` 包装方法(调用 `Context.glXxx`),以及新增常量/枚举补全文件,写入 `StgSharp.Common\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`→`nint`/`IntPtr`;`GLsizeiptr`/`size_t`→`nuint`/`UIntPtr`;`GLsync`→现有 `GLsync`/`IntPtr` 包装。 +- 字符串:`const GLchar*`→`byte*`(UTF-8),包装层可另行提供 string/Span 重载。 +- 调用约定: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`。 +- glGet* 输出:保留指针签名,或另行生成 unsafe Span/stackalloc 适配器;核心先生成指针版。 + +--- + +## 阶段 3:版本分组与文件组织 +- 输出目录:`StgSharp.Common\Graphics\OpenGL\Generated\` +- 每个版本生成独立 partial: + - `glContext.v33.cs`, `glContext.v40.cs`, …, `glContext.v46.cs`:`delegate*` 字段。 + - `OpenGLFunction.v33.cs`, …:包装方法 `public void Foo(...) => Context.glFoo(...);` +- 常量/枚举:`glConst.generated.cs`(或分版本补丁),避免与现有重复,先查已有定义再生成。 +- 命名空间:`StgSharp.Graphics.OpenGL`;类声明:`partial struct/partial class glContext`(按现有定义),`partial class OpenGLFunction`。 + +--- + +## 阶段 4:生成规则(函数表与包装) +- `glContext` 字段:`internal unsafe delegate* glFoo;` +- `OpenGLFunction` 包装:薄封装直接转发;句柄参数用 `GlHandle`,内部传 `handle.Value`;`bool` 参数按底层 `GLboolean` 需要转换为 `byte/uint`。 +- 去重:若同名字段/方法已存在,跳过或比对签名避免重复生成。 + +--- + +## 阶段 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),保持可配置启用列表。 diff --git a/StgSharp.GenerateGL/GenerateGL.csproj b/StgSharp.GenerateGL/GenerateGL.csproj new file mode 100644 index 00000000..fbd77c60 --- /dev/null +++ b/StgSharp.GenerateGL/GenerateGL.csproj @@ -0,0 +1,65 @@ + + + + Exe + net8.0 + enable + enable + AnyCPU;x64 + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/StgSharp.GenerateGL/Program.cs b/StgSharp.GenerateGL/Program.cs new file mode 100644 index 00000000..75a7db4d --- /dev/null +++ b/StgSharp.GenerateGL/Program.cs @@ -0,0 +1,56 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// 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 = 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/StgSharp.GenerateGL/gl.h b/StgSharp.GenerateGL/gl.h new file mode 100644 index 00000000..4af0d336 --- /dev/null +++ b/StgSharp.GenerateGL/gl.h @@ -0,0 +1,4248 @@ +/** + * Loader generated by glad 2.0.8 on Tue Dec 30 01:23:04 2025 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + * + * Generator: C/C++ + * Specification: gl + * Extensions: 0 + * + * APIs: + * - gl:core=4.6 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = True + * - LOADER = False + * - MX = True + * - ON_DEMAND = False + * + * Commandline: + * --api='gl:core=4.6' --extensions='' c --header-only --mx + * + * Online: + * http://glad.sh/#api=gl%3Acore%3D4.6&extensions=&generator=c&options=HEADER_ONLY%2CMX + * + */ + +#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_HEADER_ONLY +#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.8" + +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_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_RESOURCES 0x92F5 +#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_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_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_ALPHA 0x1906 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_ALWAYS 0x0207 +#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_ARRAY_BUFFER 0x8892 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ARRAY_SIZE 0x92FB +#define GL_ARRAY_STRIDE 0x92FE +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_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_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_SHADERS 0x8B85 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_BACK 0x0405 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_BGRA_INTEGER 0x8D9B +#define GL_BGR_INTEGER 0x8D9A +#define GL_BLEND 0x0BE2 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLOCK_INDEX 0x92FD +#define GL_BLUE 0x1905 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_BUFFER 0x82E0 +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_BUFFER_USAGE 0x8765 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_BYTE 0x1400 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_CCW 0x0901 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_CLEAR 0x1500 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 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_ORIGIN 0x935C +#define GL_COLOR 0x1800 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_COLOR_ENCODING 0x8296 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RED_RGTC1 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_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_COMPRESSED_SRGB 0x8C48 +#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_TEXTURE_FORMATS 0x86A3 +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_COMPUTE_SHADER_INVOCATIONS 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_CONDITION_SATISFIED 0x911C +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_CONSTANT_COLOR 0x8001 +#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_ROBUST_ACCESS_BIT 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_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_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_CURRENT_QUERY 0x8865 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_CW 0x0900 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DECR 0x1E03 +#define GL_DECR_WRAP 0x8508 +#define GL_DELETE_STATUS 0x8B80 +#define GL_DEPTH 0x1801 +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_DEPTH_CLAMP 0x864F +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_DITHER 0x0BD0 +#define GL_DONT_CARE 0x1100 +#define GL_DOUBLE 0x140A +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_DST_ALPHA 0x0304 +#define GL_DST_COLOR 0x0306 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_EQUAL 0x0202 +#define GL_EQUIV 0x1509 +#define GL_EXTENSIONS 0x1F03 +#define GL_FALSE 0 +#define GL_FASTEST 0x1101 +#define GL_FILL 0x1B02 +#define GL_FILTER 0x829A +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_FIXED 0x140C +#define GL_FIXED_ONLY 0x891D +#define GL_FLOAT 0x1406 +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4 0x8B5C +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_FRAGMENT_SHADER_INVOCATIONS 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_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_FRAMEBUFFER_COMPLETE 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_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRONT 0x0404 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_FRONT_FACE 0x0B46 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 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_GEQUAL 0x0206 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_GREATER 0x0204 +#define GL_GREEN 0x1904 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_HALF_FLOAT 0x140B +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_HIGH_INT 0x8DF5 +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_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_MAP_ARRAY 0x9054 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_INCR 0x1E02 +#define GL_INCR_WRAP 0x8507 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_INT 0x1404 +#define GL_INTERLEAVED_ATTRIBS 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_INT_2_10_10_10_REV 0x8D9F +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_INVALID_OPERATION 0x0502 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVERT 0x150A +#define GL_ISOLINES 0x8E7A +#define GL_IS_PER_PATCH 0x92E7 +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_KEEP 0x1E00 +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_LEFT 0x0406 +#define GL_LEQUAL 0x0203 +#define GL_LESS 0x0201 +#define GL_LINE 0x1B01 +#define GL_LINEAR 0x2601 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINES 0x0001 +#define GL_LINES_ADJACENCY 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_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINK_STATUS 0x8B82 +#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_LOWER_LEFT 0x8CA1 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_LOW_INT 0x8DF3 +#define GL_MAJOR_VERSION 0x821B +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#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_UNSYNCHRONIZED_BIT 0x0020 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MATRIX_STRIDE 0x92FF +#define GL_MAX 0x8008 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#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_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#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_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_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_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 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_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#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_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_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#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_SHADER_INVOCATIONS 0x8E5A +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#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_IMAGE_UNITS 0x8872 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_MAX_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_FLOATS 0x8B4B +#define GL_MAX_VARYING_VECTORS 0x8DFC +#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_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VIEWPORTS 0x825B +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_WIDTH 0x827E +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_MIN 0x8007 +#define GL_MINOR_VERSION 0x821C +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIPMAP 0x8293 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +#define GL_MULTISAMPLE 0x809D +#define GL_NAME_LENGTH 0x92F9 +#define GL_NAND 0x150E +#define GL_NEAREST 0x2600 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_NEVER 0x0200 +#define GL_NICEST 0x1102 +#define GL_NONE 0 +#define GL_NOOP 0x1505 +#define GL_NOR 0x1508 +#define GL_NOTEQUAL 0x0205 +#define GL_NO_ERROR 0 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_NUM_EXTENSIONS 0x821D +#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_SPIR_V_EXTENSIONS 0x9554 +#define GL_OBJECT_TYPE 0x9112 +#define GL_OFFSET 0x92FC +#define GL_ONE 1 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_ONE_MINUS_CONSTANT_COLOR 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_OR 0x1507 +#define GL_OR_INVERTED 0x150D +#define GL_OR_REVERSE 0x150B +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_PACK_ALIGNMENT 0x0D05 +#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_HEIGHT 0x806C +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#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_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_POINT 0x1B00 +#define GL_POINTS 0x0000 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#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_PROGRAM 0x82E2 +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_QUADS 0x0007 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_QUERY 0x82E3 +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_QUERY_TARGET 0x82EA +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_R16 0x822A +#define GL_R16F 0x822D +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R16_SNORM 0x8F98 +#define GL_R32F 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_SNORM 0x8F94 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_READ_BUFFER 0x0C02 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_READ_ONLY 0x88B8 +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_READ_WRITE 0x88BA +#define GL_RED 0x1903 +#define GL_RED_INTEGER 0x8D94 +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERER 0x1F01 +#define GL_REPEAT 0x2901 +#define GL_REPLACE 0x1E01 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_RG 0x8227 +#define GL_RG16 0x822C +#define GL_RG16F 0x822F +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG16_SNORM 0x8F99 +#define GL_RG32F 0x8230 +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_RG8 0x822B +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB 0x1907 +#define GL_RGB10 0x8052 +#define GL_RGB10_A2 0x8059 +#define GL_RGB10_A2UI 0x906F +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGB16F 0x881B +#define GL_RGB16I 0x8D89 +#define GL_RGB16UI 0x8D77 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGB32F 0x8815 +#define GL_RGB32I 0x8D83 +#define GL_RGB32UI 0x8D71 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB565 0x8D62 +#define GL_RGB5_A1 0x8057 +#define GL_RGB8 0x8051 +#define GL_RGB8I 0x8D8F +#define GL_RGB8UI 0x8D7D +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGB9_E5 0x8C3D +#define GL_RGBA 0x1908 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_RGBA16F 0x881A +#define GL_RGBA16I 0x8D88 +#define GL_RGBA16UI 0x8D76 +#define GL_RGBA16_SNORM 0x8F9B +#define GL_RGBA2 0x8055 +#define GL_RGBA32F 0x8814 +#define GL_RGBA32I 0x8D82 +#define GL_RGBA32UI 0x8D70 +#define GL_RGBA4 0x8056 +#define GL_RGBA8 0x8058 +#define GL_RGBA8I 0x8D8E +#define GL_RGBA8UI 0x8D7C +#define GL_RGBA8_SNORM 0x8F97 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RG_INTEGER 0x8228 +#define GL_RIGHT 0x0407 +#define GL_SAMPLER 0x82E6 +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 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_SHADOW 0x8B64 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_SET 0x150F +#define GL_SHADER 0x82E1 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#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_SHORT 0x1402 +#define GL_SIGNALED 0x9119 +#define GL_SIGNED_NORMALIZED 0x8F9C +#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_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_SPIR_V_BINARY 0x9552 +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC1_COLOR 0x88F9 +#define GL_SRC_ALPHA 0x0302 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_SRC_COLOR 0x0300 +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_STATIC_COPY 0x88E6 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#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_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STEREO 0x0C33 +#define GL_STREAM_COPY 0x88E2 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_SUBPIXEL_BITS 0x0D50 +#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_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 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_TEXTURE 0x1702 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_2D_ARRAY 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_CUBE_MAP 0x8514 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPRESSED 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_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TEXTURE_TARGET 0x1006 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 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_R 0x8072 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_TIMESTAMP 0x8E28 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_FAN 0x0006 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_TRUE 1 +#define GL_TYPE 0x92FA +#define GL_UNDEFINED_VERTEX 0x8260 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNIFORM_BARRIER_BIT 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_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_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#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_IMAGE_HEIGHT 0x806E +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#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_INT 0x1405 +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_24_8 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_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_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_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_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_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_VENDOR 0x1F00 +#define GL_VERSION 0x1F02 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_VERTEX_TEXTURE 0x829B +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_VIEWPORT 0x0BA2 +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_WAIT_FAILED 0x911D +#define GL_WRITE_ONLY 0x88B9 +#define GL_XOR 0x1506 +#define GL_ZERO 0 +#define GL_ZERO_TO_ONE 0x935F + + +#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_GLAD_API_PTR + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_GLAD_API_PTR 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_GLAD_API_PTR + *------------------------------------------------------------------------- + * 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_GLAD_API_PTR __stdcall +#else +# define KHRONOS_GLAD_API_PTR +#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_ */ +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 + + +typedef void (GLAD_API_PTR *PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +typedef void (GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +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 *PFNGLBEGINQUERYPROC)(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 *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLBINDBUFFERRANGEPROC)(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 *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(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 *PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef void (GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(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 *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void (GLAD_API_PTR *PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); +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 *PFNGLBINDVERTEXARRAYPROC)(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 *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIPROC)(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 *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 *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 *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); +typedef void (GLAD_API_PTR *PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags); +typedef void (GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); +typedef GLenum (GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef GLenum (GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); +typedef void (GLAD_API_PTR *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +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 *PFNGLCLEARDEPTHPROC)(GLdouble depth); +typedef void (GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); +typedef void (GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAPROC)(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 *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 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 *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAD_API_PTR *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +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 *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(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 *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(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 *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 *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); +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 *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 *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +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 *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +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 *PFNGLCOPYTEXIMAGE2DPROC)(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 *PFNGLCOPYTEXSUBIMAGE2DPROC)(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 *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, 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 *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAD_API_PTR *PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); +typedef GLuint (GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef void (GLAD_API_PTR *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint * pipelines); +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 GLuint (GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef GLuint (GLAD_API_PTR *PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const* strings); +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 *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC 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 *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); +typedef void (GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint * pipelines); +typedef void (GLAD_API_PTR *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint * samplers); +typedef void (GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDELETESYNCPROC)(GLsync sync); +typedef void (GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint * arrays); +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 *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 *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +typedef void (GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void (GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(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 *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); +typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(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 *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GLAD_API_PTR *PFNGLDRAWBUFFERPROC)(GLenum buf); +typedef void (GLAD_API_PTR *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum * bufs); +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 *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 *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 *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +typedef void (GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); +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 *PFNGLENABLEPROC)(GLenum cap); +typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLENABLEIPROC)(GLenum target, GLuint index); +typedef void (GLAD_API_PTR *PFNGLENDCONDITIONALRENDERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLENDQUERYPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +typedef void (GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKPROC)(void); +typedef GLsync (GLAD_API_PTR *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +typedef void (GLAD_API_PTR *PFNGLFINISHPROC)(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 *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +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 *PFNGLFRAMEBUFFERTEXTURE2DPROC)(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 *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers); +typedef void (GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers); +typedef void (GLAD_API_PTR *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint * pipelines); +typedef void (GLAD_API_PTR *PFNGLGENQUERIESPROC)(GLsizei n, GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers); +typedef void (GLAD_API_PTR *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint * samplers); +typedef void (GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures); +typedef void (GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint * ids); +typedef void (GLAD_API_PTR *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint * arrays); +typedef void (GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void (GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); +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 *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 *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 *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); +typedef GLint (GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name); +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 *PFNGLGETBUFFERPOINTERVPROC)(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 *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(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 *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels); +typedef GLuint (GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); +typedef void (GLAD_API_PTR *PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble * data); +typedef void (GLAD_API_PTR *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble * data); +typedef GLenum (GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void (GLAD_API_PTR *PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat * data); +typedef void (GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data); +typedef GLint (GLAD_API_PTR *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar * name); +typedef GLint (GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar * name); +typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef GLenum (GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSPROC)(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 *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint * data); +typedef void (GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data); +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 *PFNGLGETMULTISAMPLEFVPROC)(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 *PFNGLGETNAMEDBUFFERPOINTERVPROC)(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 *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint * param); +typedef void (GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, 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 *PFNGLGETOBJECTPTRLABELPROC)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); +typedef void (GLAD_API_PTR *PFNGLGETPOINTERVPROC)(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 *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 *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 *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 *PFNGLGETPROGRAMIVPROC)(GLuint program, 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 *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(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 *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 *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params); +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 *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 *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint * 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 *PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); +typedef void (GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, 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 *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint * params); +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 *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); +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 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 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 *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint * params); +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 *PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint * param); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void * pixels); +typedef void (GLAD_API_PTR *PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMDVPROC)(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 *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params); +typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint * params); +typedef void (GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +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 *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +typedef GLboolean (GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean (GLAD_API_PTR *PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef GLboolean (GLAD_API_PTR *PFNGLISQUERYPROC)(GLuint id); +typedef GLboolean (GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean (GLAD_API_PTR *PFNGLISSAMPLERPROC)(GLuint sampler); +typedef GLboolean (GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean (GLAD_API_PTR *PFNGLISSYNCPROC)(GLsync sync); +typedef GLboolean (GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef GLboolean (GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +typedef GLboolean (GLAD_API_PTR *PFNGLISVERTEXARRAYPROC)(GLuint array); +typedef void (GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void (GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLLOGICOPPROC)(GLenum opcode); +typedef void * (GLAD_API_PTR *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +typedef void * (GLAD_API_PTR *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void * (GLAD_API_PTR *PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); +typedef void * (GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAD_API_PTR *PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); +typedef void (GLAD_API_PTR *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); +typedef void (GLAD_API_PTR *PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +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 *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride); +typedef void (GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (GLAD_API_PTR *PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage); +typedef void (GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags); +typedef void (GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data); +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 *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); +typedef void (GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(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 *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 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 *PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +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 *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat * params); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLPOINTSIZEPROC)(GLfloat size); +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 *PFNGLPOPDEBUGGROUPPROC)(void); +typedef void (GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +typedef void (GLAD_API_PTR *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length); +typedef void (GLAD_API_PTR *PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +typedef void (GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +typedef void (GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVPROC)(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 *PFNGLPROGRAMUNIFORM1FVPROC)(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 *PFNGLPROGRAMUNIFORM1IVPROC)(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 *PFNGLPROGRAMUNIFORM1UIVPROC)(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 *PFNGLPROGRAMUNIFORM2DVPROC)(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 *PFNGLPROGRAMUNIFORM2FVPROC)(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 *PFNGLPROGRAMUNIFORM2IVPROC)(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 *PFNGLPROGRAMUNIFORM2UIVPROC)(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 *PFNGLPROGRAMUNIFORM3DVPROC)(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 *PFNGLPROGRAMUNIFORM3FVPROC)(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 *PFNGLPROGRAMUNIFORM3IVPROC)(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 *PFNGLPROGRAMUNIFORM3UIVPROC)(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 *PFNGLPROGRAMUNIFORM4DVPROC)(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 *PFNGLPROGRAMUNIFORM4FVPROC)(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 *PFNGLPROGRAMUNIFORM4IVPROC)(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 *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(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 *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(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 *PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +typedef void (GLAD_API_PTR *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar * message); +typedef void (GLAD_API_PTR *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +typedef void (GLAD_API_PTR *PFNGLREADBUFFERPROC)(GLenum src); +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 *PFNGLRELEASESHADERCOMPILERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(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 *PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void (GLAD_API_PTR *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +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 *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 *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 *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint * shaders, GLenum binaryFormat, const void * binary, GLsizei length); +typedef void (GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); +typedef void (GLAD_API_PTR *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (GLAD_API_PTR *PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue); +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 *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 *PFNGLTEXBUFFERPROC)(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 *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 *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 *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIIVPROC)(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 *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 *PFNGLTEXSTORAGE1DPROC)(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 *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 *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +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 *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 *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 *PFNGLTEXTUREBARRIERPROC)(void); +typedef void (GLAD_API_PTR *PFNGLTEXTUREBUFFERPROC)(GLuint texture, 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 *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint * params); +typedef void (GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint * params); +typedef void (GLAD_API_PTR *PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); +typedef void (GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat * param); +typedef void (GLAD_API_PTR *PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); +typedef void (GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint * param); +typedef void (GLAD_API_PTR *PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, 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 *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, 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 *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +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 *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 *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 *PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +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 *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); +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 *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +typedef void (GLAD_API_PTR *PFNGLUNIFORM1UIVPROC)(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 *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +typedef void (GLAD_API_PTR *PFNGLUNIFORM2UIVPROC)(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 *PFNGLUNIFORM3FVPROC)(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 *PFNGLUNIFORM3IVPROC)(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 *PFNGLUNIFORM3UIVPROC)(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 *PFNGLUNIFORM4FVPROC)(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 *PFNGLUNIFORM4IVPROC)(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 *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint * value); +typedef void (GLAD_API_PTR *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +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 *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 *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 *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 GLboolean (GLAD_API_PTR *PFNGLUNMAPBUFFERPROC)(GLenum target); +typedef GLboolean (GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); +typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void (GLAD_API_PTR *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +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 *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (GLAD_API_PTR *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); +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 *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVPROC)(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 *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4BVPROC)(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 *PFNGLVERTEXATTRIB4DVPROC)(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 *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4IVPROC)(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 *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort * v); +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 *PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVPROC)(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 *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVPROC)(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 *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTERPROC)(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 *PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble * v); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBL4DPROC)(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 *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTERPROC)(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 *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); +typedef void (GLAD_API_PTR *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); +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 *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + +typedef struct GladGLContext { + void* userptr; + + int VERSION_1_0; + int VERSION_1_1; + int VERSION_1_2; + int VERSION_1_3; + int VERSION_1_4; + int VERSION_1_5; + int VERSION_2_0; + int VERSION_2_1; + int VERSION_3_0; + int VERSION_3_1; + int VERSION_3_2; + int VERSION_3_3; + int VERSION_4_0; + int VERSION_4_1; + int VERSION_4_2; + int VERSION_4_3; + int VERSION_4_4; + int VERSION_4_5; + int VERSION_4_6; + + 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; + + + + + + +GLAD_API_CALL int gladLoadGLContextUserPtr(GladGLContext *context, GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadGLContext(GladGLContext *context, GLADloadfunc load); + + + +#ifdef __cplusplus +} +#endif +#endif + +/* Source */ +#ifdef GLAD_GL_IMPLEMENTATION +/** + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + */ +#include +#include +#include + +#ifndef GLAD_IMPL_UTIL_C_ +#define GLAD_IMPL_UTIL_C_ + +#ifdef _MSC_VER +#define GLAD_IMPL_UTIL_SSCANF sscanf_s +#else +#define GLAD_IMPL_UTIL_SSCANF sscanf +#endif + +#endif /* GLAD_IMPL_UTIL_C_ */ + +#ifdef __cplusplus +extern "C" { +#endif + + + + + + + + +static void glad_gl_load_GL_VERSION_1_0(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_0) return; + context->BlendFunc = (PFNGLBLENDFUNCPROC) load(userptr, "glBlendFunc"); + context->Clear = (PFNGLCLEARPROC) load(userptr, "glClear"); + context->ClearColor = (PFNGLCLEARCOLORPROC) load(userptr, "glClearColor"); + context->ClearDepth = (PFNGLCLEARDEPTHPROC) load(userptr, "glClearDepth"); + context->ClearStencil = (PFNGLCLEARSTENCILPROC) load(userptr, "glClearStencil"); + context->ColorMask = (PFNGLCOLORMASKPROC) load(userptr, "glColorMask"); + context->CullFace = (PFNGLCULLFACEPROC) load(userptr, "glCullFace"); + context->DepthFunc = (PFNGLDEPTHFUNCPROC) load(userptr, "glDepthFunc"); + context->DepthMask = (PFNGLDEPTHMASKPROC) load(userptr, "glDepthMask"); + context->DepthRange = (PFNGLDEPTHRANGEPROC) load(userptr, "glDepthRange"); + context->Disable = (PFNGLDISABLEPROC) load(userptr, "glDisable"); + context->DrawBuffer = (PFNGLDRAWBUFFERPROC) load(userptr, "glDrawBuffer"); + context->Enable = (PFNGLENABLEPROC) load(userptr, "glEnable"); + context->Finish = (PFNGLFINISHPROC) load(userptr, "glFinish"); + context->Flush = (PFNGLFLUSHPROC) load(userptr, "glFlush"); + context->FrontFace = (PFNGLFRONTFACEPROC) load(userptr, "glFrontFace"); + context->GetBooleanv = (PFNGLGETBOOLEANVPROC) load(userptr, "glGetBooleanv"); + context->GetDoublev = (PFNGLGETDOUBLEVPROC) load(userptr, "glGetDoublev"); + context->GetError = (PFNGLGETERRORPROC) load(userptr, "glGetError"); + context->GetFloatv = (PFNGLGETFLOATVPROC) load(userptr, "glGetFloatv"); + context->GetIntegerv = (PFNGLGETINTEGERVPROC) load(userptr, "glGetIntegerv"); + context->GetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + context->GetTexImage = (PFNGLGETTEXIMAGEPROC) load(userptr, "glGetTexImage"); + context->GetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC) load(userptr, "glGetTexLevelParameterfv"); + context->GetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC) load(userptr, "glGetTexLevelParameteriv"); + context->GetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC) load(userptr, "glGetTexParameterfv"); + context->GetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC) load(userptr, "glGetTexParameteriv"); + context->Hint = (PFNGLHINTPROC) load(userptr, "glHint"); + context->IsEnabled = (PFNGLISENABLEDPROC) load(userptr, "glIsEnabled"); + context->LineWidth = (PFNGLLINEWIDTHPROC) load(userptr, "glLineWidth"); + context->LogicOp = (PFNGLLOGICOPPROC) load(userptr, "glLogicOp"); + context->PixelStoref = (PFNGLPIXELSTOREFPROC) load(userptr, "glPixelStoref"); + context->PixelStorei = (PFNGLPIXELSTOREIPROC) load(userptr, "glPixelStorei"); + context->PointSize = (PFNGLPOINTSIZEPROC) load(userptr, "glPointSize"); + context->PolygonMode = (PFNGLPOLYGONMODEPROC) load(userptr, "glPolygonMode"); + context->ReadBuffer = (PFNGLREADBUFFERPROC) load(userptr, "glReadBuffer"); + context->ReadPixels = (PFNGLREADPIXELSPROC) load(userptr, "glReadPixels"); + context->Scissor = (PFNGLSCISSORPROC) load(userptr, "glScissor"); + context->StencilFunc = (PFNGLSTENCILFUNCPROC) load(userptr, "glStencilFunc"); + context->StencilMask = (PFNGLSTENCILMASKPROC) load(userptr, "glStencilMask"); + context->StencilOp = (PFNGLSTENCILOPPROC) load(userptr, "glStencilOp"); + context->TexImage1D = (PFNGLTEXIMAGE1DPROC) load(userptr, "glTexImage1D"); + context->TexImage2D = (PFNGLTEXIMAGE2DPROC) load(userptr, "glTexImage2D"); + context->TexParameterf = (PFNGLTEXPARAMETERFPROC) load(userptr, "glTexParameterf"); + context->TexParameterfv = (PFNGLTEXPARAMETERFVPROC) load(userptr, "glTexParameterfv"); + context->TexParameteri = (PFNGLTEXPARAMETERIPROC) load(userptr, "glTexParameteri"); + context->TexParameteriv = (PFNGLTEXPARAMETERIVPROC) load(userptr, "glTexParameteriv"); + context->Viewport = (PFNGLVIEWPORTPROC) load(userptr, "glViewport"); +} +static void glad_gl_load_GL_VERSION_1_1(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_1) return; + context->BindTexture = (PFNGLBINDTEXTUREPROC) load(userptr, "glBindTexture"); + context->CopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC) load(userptr, "glCopyTexImage1D"); + context->CopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC) load(userptr, "glCopyTexImage2D"); + context->CopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC) load(userptr, "glCopyTexSubImage1D"); + context->CopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC) load(userptr, "glCopyTexSubImage2D"); + context->DeleteTextures = (PFNGLDELETETEXTURESPROC) load(userptr, "glDeleteTextures"); + context->DrawArrays = (PFNGLDRAWARRAYSPROC) load(userptr, "glDrawArrays"); + context->DrawElements = (PFNGLDRAWELEMENTSPROC) load(userptr, "glDrawElements"); + context->GenTextures = (PFNGLGENTEXTURESPROC) load(userptr, "glGenTextures"); + context->GetPointerv = (PFNGLGETPOINTERVPROC) load(userptr, "glGetPointerv"); + context->IsTexture = (PFNGLISTEXTUREPROC) load(userptr, "glIsTexture"); + context->PolygonOffset = (PFNGLPOLYGONOFFSETPROC) load(userptr, "glPolygonOffset"); + context->TexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC) load(userptr, "glTexSubImage1D"); + context->TexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC) load(userptr, "glTexSubImage2D"); +} +static void glad_gl_load_GL_VERSION_1_2(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_2) return; + context->CopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC) load(userptr, "glCopyTexSubImage3D"); + context->DrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) load(userptr, "glDrawRangeElements"); + context->TexImage3D = (PFNGLTEXIMAGE3DPROC) load(userptr, "glTexImage3D"); + context->TexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC) load(userptr, "glTexSubImage3D"); +} +static void glad_gl_load_GL_VERSION_1_3(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_3) return; + context->ActiveTexture = (PFNGLACTIVETEXTUREPROC) load(userptr, "glActiveTexture"); + context->CompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC) load(userptr, "glCompressedTexImage1D"); + context->CompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) load(userptr, "glCompressedTexImage2D"); + context->CompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC) load(userptr, "glCompressedTexImage3D"); + context->CompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) load(userptr, "glCompressedTexSubImage1D"); + context->CompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) load(userptr, "glCompressedTexSubImage2D"); + context->CompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) load(userptr, "glCompressedTexSubImage3D"); + context->GetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC) load(userptr, "glGetCompressedTexImage"); + context->SampleCoverage = (PFNGLSAMPLECOVERAGEPROC) load(userptr, "glSampleCoverage"); +} +static void glad_gl_load_GL_VERSION_1_4(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_4) return; + context->BlendColor = (PFNGLBLENDCOLORPROC) load(userptr, "glBlendColor"); + context->BlendEquation = (PFNGLBLENDEQUATIONPROC) load(userptr, "glBlendEquation"); + context->BlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) load(userptr, "glBlendFuncSeparate"); + context->MultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC) load(userptr, "glMultiDrawArrays"); + context->MultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC) load(userptr, "glMultiDrawElements"); + context->PointParameterf = (PFNGLPOINTPARAMETERFPROC) load(userptr, "glPointParameterf"); + context->PointParameterfv = (PFNGLPOINTPARAMETERFVPROC) load(userptr, "glPointParameterfv"); + context->PointParameteri = (PFNGLPOINTPARAMETERIPROC) load(userptr, "glPointParameteri"); + context->PointParameteriv = (PFNGLPOINTPARAMETERIVPROC) load(userptr, "glPointParameteriv"); +} +static void glad_gl_load_GL_VERSION_1_5(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_1_5) return; + context->BeginQuery = (PFNGLBEGINQUERYPROC) load(userptr, "glBeginQuery"); + context->BindBuffer = (PFNGLBINDBUFFERPROC) load(userptr, "glBindBuffer"); + context->BufferData = (PFNGLBUFFERDATAPROC) load(userptr, "glBufferData"); + context->BufferSubData = (PFNGLBUFFERSUBDATAPROC) load(userptr, "glBufferSubData"); + context->DeleteBuffers = (PFNGLDELETEBUFFERSPROC) load(userptr, "glDeleteBuffers"); + context->DeleteQueries = (PFNGLDELETEQUERIESPROC) load(userptr, "glDeleteQueries"); + context->EndQuery = (PFNGLENDQUERYPROC) load(userptr, "glEndQuery"); + context->GenBuffers = (PFNGLGENBUFFERSPROC) load(userptr, "glGenBuffers"); + context->GenQueries = (PFNGLGENQUERIESPROC) load(userptr, "glGenQueries"); + context->GetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) load(userptr, "glGetBufferParameteriv"); + context->GetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC) load(userptr, "glGetBufferPointerv"); + context->GetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC) load(userptr, "glGetBufferSubData"); + context->GetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC) load(userptr, "glGetQueryObjectiv"); + context->GetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) load(userptr, "glGetQueryObjectuiv"); + context->GetQueryiv = (PFNGLGETQUERYIVPROC) load(userptr, "glGetQueryiv"); + context->IsBuffer = (PFNGLISBUFFERPROC) load(userptr, "glIsBuffer"); + context->IsQuery = (PFNGLISQUERYPROC) load(userptr, "glIsQuery"); + context->MapBuffer = (PFNGLMAPBUFFERPROC) load(userptr, "glMapBuffer"); + context->UnmapBuffer = (PFNGLUNMAPBUFFERPROC) load(userptr, "glUnmapBuffer"); +} +static void glad_gl_load_GL_VERSION_2_0(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_2_0) return; + context->AttachShader = (PFNGLATTACHSHADERPROC) load(userptr, "glAttachShader"); + context->BindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) load(userptr, "glBindAttribLocation"); + context->BlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) load(userptr, "glBlendEquationSeparate"); + context->CompileShader = (PFNGLCOMPILESHADERPROC) load(userptr, "glCompileShader"); + context->CreateProgram = (PFNGLCREATEPROGRAMPROC) load(userptr, "glCreateProgram"); + context->CreateShader = (PFNGLCREATESHADERPROC) load(userptr, "glCreateShader"); + context->DeleteProgram = (PFNGLDELETEPROGRAMPROC) load(userptr, "glDeleteProgram"); + context->DeleteShader = (PFNGLDELETESHADERPROC) load(userptr, "glDeleteShader"); + context->DetachShader = (PFNGLDETACHSHADERPROC) load(userptr, "glDetachShader"); + context->DisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) load(userptr, "glDisableVertexAttribArray"); + context->DrawBuffers = (PFNGLDRAWBUFFERSPROC) load(userptr, "glDrawBuffers"); + context->EnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) load(userptr, "glEnableVertexAttribArray"); + context->GetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) load(userptr, "glGetActiveAttrib"); + context->GetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) load(userptr, "glGetActiveUniform"); + context->GetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) load(userptr, "glGetAttachedShaders"); + context->GetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) load(userptr, "glGetAttribLocation"); + context->GetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) load(userptr, "glGetProgramInfoLog"); + context->GetProgramiv = (PFNGLGETPROGRAMIVPROC) load(userptr, "glGetProgramiv"); + context->GetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) load(userptr, "glGetShaderInfoLog"); + context->GetShaderSource = (PFNGLGETSHADERSOURCEPROC) load(userptr, "glGetShaderSource"); + context->GetShaderiv = (PFNGLGETSHADERIVPROC) load(userptr, "glGetShaderiv"); + context->GetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) load(userptr, "glGetUniformLocation"); + context->GetUniformfv = (PFNGLGETUNIFORMFVPROC) load(userptr, "glGetUniformfv"); + context->GetUniformiv = (PFNGLGETUNIFORMIVPROC) load(userptr, "glGetUniformiv"); + context->GetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) load(userptr, "glGetVertexAttribPointerv"); + context->GetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC) load(userptr, "glGetVertexAttribdv"); + context->GetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) load(userptr, "glGetVertexAttribfv"); + context->GetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) load(userptr, "glGetVertexAttribiv"); + context->IsProgram = (PFNGLISPROGRAMPROC) load(userptr, "glIsProgram"); + context->IsShader = (PFNGLISSHADERPROC) load(userptr, "glIsShader"); + context->LinkProgram = (PFNGLLINKPROGRAMPROC) load(userptr, "glLinkProgram"); + context->ShaderSource = (PFNGLSHADERSOURCEPROC) load(userptr, "glShaderSource"); + context->StencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) load(userptr, "glStencilFuncSeparate"); + context->StencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) load(userptr, "glStencilMaskSeparate"); + context->StencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) load(userptr, "glStencilOpSeparate"); + context->Uniform1f = (PFNGLUNIFORM1FPROC) load(userptr, "glUniform1f"); + context->Uniform1fv = (PFNGLUNIFORM1FVPROC) load(userptr, "glUniform1fv"); + context->Uniform1i = (PFNGLUNIFORM1IPROC) load(userptr, "glUniform1i"); + context->Uniform1iv = (PFNGLUNIFORM1IVPROC) load(userptr, "glUniform1iv"); + context->Uniform2f = (PFNGLUNIFORM2FPROC) load(userptr, "glUniform2f"); + context->Uniform2fv = (PFNGLUNIFORM2FVPROC) load(userptr, "glUniform2fv"); + context->Uniform2i = (PFNGLUNIFORM2IPROC) load(userptr, "glUniform2i"); + context->Uniform2iv = (PFNGLUNIFORM2IVPROC) load(userptr, "glUniform2iv"); + context->Uniform3f = (PFNGLUNIFORM3FPROC) load(userptr, "glUniform3f"); + context->Uniform3fv = (PFNGLUNIFORM3FVPROC) load(userptr, "glUniform3fv"); + context->Uniform3i = (PFNGLUNIFORM3IPROC) load(userptr, "glUniform3i"); + context->Uniform3iv = (PFNGLUNIFORM3IVPROC) load(userptr, "glUniform3iv"); + context->Uniform4f = (PFNGLUNIFORM4FPROC) load(userptr, "glUniform4f"); + context->Uniform4fv = (PFNGLUNIFORM4FVPROC) load(userptr, "glUniform4fv"); + context->Uniform4i = (PFNGLUNIFORM4IPROC) load(userptr, "glUniform4i"); + context->Uniform4iv = (PFNGLUNIFORM4IVPROC) load(userptr, "glUniform4iv"); + context->UniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) load(userptr, "glUniformMatrix2fv"); + context->UniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) load(userptr, "glUniformMatrix3fv"); + context->UniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) load(userptr, "glUniformMatrix4fv"); + context->UseProgram = (PFNGLUSEPROGRAMPROC) load(userptr, "glUseProgram"); + context->ValidateProgram = (PFNGLVALIDATEPROGRAMPROC) load(userptr, "glValidateProgram"); + context->VertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC) load(userptr, "glVertexAttrib1d"); + context->VertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC) load(userptr, "glVertexAttrib1dv"); + context->VertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) load(userptr, "glVertexAttrib1f"); + context->VertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) load(userptr, "glVertexAttrib1fv"); + context->VertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC) load(userptr, "glVertexAttrib1s"); + context->VertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC) load(userptr, "glVertexAttrib1sv"); + context->VertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC) load(userptr, "glVertexAttrib2d"); + context->VertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC) load(userptr, "glVertexAttrib2dv"); + context->VertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) load(userptr, "glVertexAttrib2f"); + context->VertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) load(userptr, "glVertexAttrib2fv"); + context->VertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC) load(userptr, "glVertexAttrib2s"); + context->VertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC) load(userptr, "glVertexAttrib2sv"); + context->VertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC) load(userptr, "glVertexAttrib3d"); + context->VertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC) load(userptr, "glVertexAttrib3dv"); + context->VertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) load(userptr, "glVertexAttrib3f"); + context->VertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) load(userptr, "glVertexAttrib3fv"); + context->VertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC) load(userptr, "glVertexAttrib3s"); + context->VertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC) load(userptr, "glVertexAttrib3sv"); + context->VertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC) load(userptr, "glVertexAttrib4Nbv"); + context->VertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC) load(userptr, "glVertexAttrib4Niv"); + context->VertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC) load(userptr, "glVertexAttrib4Nsv"); + context->VertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC) load(userptr, "glVertexAttrib4Nub"); + context->VertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC) load(userptr, "glVertexAttrib4Nubv"); + context->VertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC) load(userptr, "glVertexAttrib4Nuiv"); + context->VertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC) load(userptr, "glVertexAttrib4Nusv"); + context->VertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC) load(userptr, "glVertexAttrib4bv"); + context->VertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC) load(userptr, "glVertexAttrib4d"); + context->VertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC) load(userptr, "glVertexAttrib4dv"); + context->VertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) load(userptr, "glVertexAttrib4f"); + context->VertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) load(userptr, "glVertexAttrib4fv"); + context->VertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC) load(userptr, "glVertexAttrib4iv"); + context->VertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC) load(userptr, "glVertexAttrib4s"); + context->VertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC) load(userptr, "glVertexAttrib4sv"); + context->VertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC) load(userptr, "glVertexAttrib4ubv"); + context->VertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC) load(userptr, "glVertexAttrib4uiv"); + context->VertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC) load(userptr, "glVertexAttrib4usv"); + context->VertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) load(userptr, "glVertexAttribPointer"); +} +static void glad_gl_load_GL_VERSION_2_1(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_2_1) return; + context->UniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC) load(userptr, "glUniformMatrix2x3fv"); + context->UniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC) load(userptr, "glUniformMatrix2x4fv"); + context->UniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC) load(userptr, "glUniformMatrix3x2fv"); + context->UniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC) load(userptr, "glUniformMatrix3x4fv"); + context->UniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC) load(userptr, "glUniformMatrix4x2fv"); + context->UniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC) load(userptr, "glUniformMatrix4x3fv"); +} +static void glad_gl_load_GL_VERSION_3_0(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_3_0) return; + context->BeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC) load(userptr, "glBeginConditionalRender"); + context->BeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC) load(userptr, "glBeginTransformFeedback"); + context->BindBufferBase = (PFNGLBINDBUFFERBASEPROC) load(userptr, "glBindBufferBase"); + context->BindBufferRange = (PFNGLBINDBUFFERRANGEPROC) load(userptr, "glBindBufferRange"); + context->BindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC) load(userptr, "glBindFragDataLocation"); + context->BindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) load(userptr, "glBindFramebuffer"); + context->BindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) load(userptr, "glBindRenderbuffer"); + context->BindVertexArray = (PFNGLBINDVERTEXARRAYPROC) load(userptr, "glBindVertexArray"); + context->BlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) load(userptr, "glBlitFramebuffer"); + context->CheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) load(userptr, "glCheckFramebufferStatus"); + context->ClampColor = (PFNGLCLAMPCOLORPROC) load(userptr, "glClampColor"); + context->ClearBufferfi = (PFNGLCLEARBUFFERFIPROC) load(userptr, "glClearBufferfi"); + context->ClearBufferfv = (PFNGLCLEARBUFFERFVPROC) load(userptr, "glClearBufferfv"); + context->ClearBufferiv = (PFNGLCLEARBUFFERIVPROC) load(userptr, "glClearBufferiv"); + context->ClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC) load(userptr, "glClearBufferuiv"); + context->ColorMaski = (PFNGLCOLORMASKIPROC) load(userptr, "glColorMaski"); + context->DeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) load(userptr, "glDeleteFramebuffers"); + context->DeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) load(userptr, "glDeleteRenderbuffers"); + context->DeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) load(userptr, "glDeleteVertexArrays"); + context->Disablei = (PFNGLDISABLEIPROC) load(userptr, "glDisablei"); + context->Enablei = (PFNGLENABLEIPROC) load(userptr, "glEnablei"); + context->EndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC) load(userptr, "glEndConditionalRender"); + context->EndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC) load(userptr, "glEndTransformFeedback"); + context->FlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC) load(userptr, "glFlushMappedBufferRange"); + context->FramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) load(userptr, "glFramebufferRenderbuffer"); + context->FramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC) load(userptr, "glFramebufferTexture1D"); + context->FramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) load(userptr, "glFramebufferTexture2D"); + context->FramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC) load(userptr, "glFramebufferTexture3D"); + context->FramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) load(userptr, "glFramebufferTextureLayer"); + context->GenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) load(userptr, "glGenFramebuffers"); + context->GenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) load(userptr, "glGenRenderbuffers"); + context->GenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) load(userptr, "glGenVertexArrays"); + context->GenerateMipmap = (PFNGLGENERATEMIPMAPPROC) load(userptr, "glGenerateMipmap"); + context->GetBooleani_v = (PFNGLGETBOOLEANI_VPROC) load(userptr, "glGetBooleani_v"); + context->GetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC) load(userptr, "glGetFragDataLocation"); + context->GetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetFramebufferAttachmentParameteriv"); + context->GetIntegeri_v = (PFNGLGETINTEGERI_VPROC) load(userptr, "glGetIntegeri_v"); + context->GetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) load(userptr, "glGetRenderbufferParameteriv"); + context->GetStringi = (PFNGLGETSTRINGIPROC) load(userptr, "glGetStringi"); + context->GetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC) load(userptr, "glGetTexParameterIiv"); + context->GetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC) load(userptr, "glGetTexParameterIuiv"); + context->GetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) load(userptr, "glGetTransformFeedbackVarying"); + context->GetUniformuiv = (PFNGLGETUNIFORMUIVPROC) load(userptr, "glGetUniformuiv"); + context->GetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC) load(userptr, "glGetVertexAttribIiv"); + context->GetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC) load(userptr, "glGetVertexAttribIuiv"); + context->IsEnabledi = (PFNGLISENABLEDIPROC) load(userptr, "glIsEnabledi"); + context->IsFramebuffer = (PFNGLISFRAMEBUFFERPROC) load(userptr, "glIsFramebuffer"); + context->IsRenderbuffer = (PFNGLISRENDERBUFFERPROC) load(userptr, "glIsRenderbuffer"); + context->IsVertexArray = (PFNGLISVERTEXARRAYPROC) load(userptr, "glIsVertexArray"); + context->MapBufferRange = (PFNGLMAPBUFFERRANGEPROC) load(userptr, "glMapBufferRange"); + context->RenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) load(userptr, "glRenderbufferStorage"); + context->RenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) load(userptr, "glRenderbufferStorageMultisample"); + context->TexParameterIiv = (PFNGLTEXPARAMETERIIVPROC) load(userptr, "glTexParameterIiv"); + context->TexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC) load(userptr, "glTexParameterIuiv"); + context->TransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC) load(userptr, "glTransformFeedbackVaryings"); + context->Uniform1ui = (PFNGLUNIFORM1UIPROC) load(userptr, "glUniform1ui"); + context->Uniform1uiv = (PFNGLUNIFORM1UIVPROC) load(userptr, "glUniform1uiv"); + context->Uniform2ui = (PFNGLUNIFORM2UIPROC) load(userptr, "glUniform2ui"); + context->Uniform2uiv = (PFNGLUNIFORM2UIVPROC) load(userptr, "glUniform2uiv"); + context->Uniform3ui = (PFNGLUNIFORM3UIPROC) load(userptr, "glUniform3ui"); + context->Uniform3uiv = (PFNGLUNIFORM3UIVPROC) load(userptr, "glUniform3uiv"); + context->Uniform4ui = (PFNGLUNIFORM4UIPROC) load(userptr, "glUniform4ui"); + context->Uniform4uiv = (PFNGLUNIFORM4UIVPROC) load(userptr, "glUniform4uiv"); + context->VertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC) load(userptr, "glVertexAttribI1i"); + context->VertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC) load(userptr, "glVertexAttribI1iv"); + context->VertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC) load(userptr, "glVertexAttribI1ui"); + context->VertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC) load(userptr, "glVertexAttribI1uiv"); + context->VertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC) load(userptr, "glVertexAttribI2i"); + context->VertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC) load(userptr, "glVertexAttribI2iv"); + context->VertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC) load(userptr, "glVertexAttribI2ui"); + context->VertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC) load(userptr, "glVertexAttribI2uiv"); + context->VertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC) load(userptr, "glVertexAttribI3i"); + context->VertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC) load(userptr, "glVertexAttribI3iv"); + context->VertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC) load(userptr, "glVertexAttribI3ui"); + context->VertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC) load(userptr, "glVertexAttribI3uiv"); + context->VertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC) load(userptr, "glVertexAttribI4bv"); + context->VertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC) load(userptr, "glVertexAttribI4i"); + context->VertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC) load(userptr, "glVertexAttribI4iv"); + context->VertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC) load(userptr, "glVertexAttribI4sv"); + context->VertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC) load(userptr, "glVertexAttribI4ubv"); + context->VertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC) load(userptr, "glVertexAttribI4ui"); + context->VertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC) load(userptr, "glVertexAttribI4uiv"); + context->VertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC) load(userptr, "glVertexAttribI4usv"); + context->VertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC) load(userptr, "glVertexAttribIPointer"); +} +static void glad_gl_load_GL_VERSION_3_1(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_3_1) return; + context->BindBufferBase = (PFNGLBINDBUFFERBASEPROC) load(userptr, "glBindBufferBase"); + context->BindBufferRange = (PFNGLBINDBUFFERRANGEPROC) load(userptr, "glBindBufferRange"); + context->CopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC) load(userptr, "glCopyBufferSubData"); + context->DrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC) load(userptr, "glDrawArraysInstanced"); + context->DrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC) load(userptr, "glDrawElementsInstanced"); + context->GetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) load(userptr, "glGetActiveUniformBlockName"); + context->GetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC) load(userptr, "glGetActiveUniformBlockiv"); + context->GetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC) load(userptr, "glGetActiveUniformName"); + context->GetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC) load(userptr, "glGetActiveUniformsiv"); + context->GetIntegeri_v = (PFNGLGETINTEGERI_VPROC) load(userptr, "glGetIntegeri_v"); + context->GetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC) load(userptr, "glGetUniformBlockIndex"); + context->GetUniformIndices = (PFNGLGETUNIFORMINDICESPROC) load(userptr, "glGetUniformIndices"); + context->PrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC) load(userptr, "glPrimitiveRestartIndex"); + context->TexBuffer = (PFNGLTEXBUFFERPROC) load(userptr, "glTexBuffer"); + context->UniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC) load(userptr, "glUniformBlockBinding"); +} +static void glad_gl_load_GL_VERSION_3_2(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_3_2) return; + context->ClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) load(userptr, "glClientWaitSync"); + context->DeleteSync = (PFNGLDELETESYNCPROC) load(userptr, "glDeleteSync"); + context->DrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC) load(userptr, "glDrawElementsBaseVertex"); + context->DrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) load(userptr, "glDrawElementsInstancedBaseVertex"); + context->DrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) load(userptr, "glDrawRangeElementsBaseVertex"); + context->FenceSync = (PFNGLFENCESYNCPROC) load(userptr, "glFenceSync"); + context->FramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC) load(userptr, "glFramebufferTexture"); + context->GetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC) load(userptr, "glGetBufferParameteri64v"); + context->GetInteger64i_v = (PFNGLGETINTEGER64I_VPROC) load(userptr, "glGetInteger64i_v"); + context->GetInteger64v = (PFNGLGETINTEGER64VPROC) load(userptr, "glGetInteger64v"); + context->GetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC) load(userptr, "glGetMultisamplefv"); + context->GetSynciv = (PFNGLGETSYNCIVPROC) load(userptr, "glGetSynciv"); + context->IsSync = (PFNGLISSYNCPROC) load(userptr, "glIsSync"); + context->MultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) load(userptr, "glMultiDrawElementsBaseVertex"); + context->ProvokingVertex = (PFNGLPROVOKINGVERTEXPROC) load(userptr, "glProvokingVertex"); + context->SampleMaski = (PFNGLSAMPLEMASKIPROC) load(userptr, "glSampleMaski"); + context->TexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC) load(userptr, "glTexImage2DMultisample"); + context->TexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC) load(userptr, "glTexImage3DMultisample"); + context->WaitSync = (PFNGLWAITSYNCPROC) load(userptr, "glWaitSync"); +} +static void glad_gl_load_GL_VERSION_3_3(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_3_3) return; + context->BindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) load(userptr, "glBindFragDataLocationIndexed"); + context->BindSampler = (PFNGLBINDSAMPLERPROC) load(userptr, "glBindSampler"); + context->DeleteSamplers = (PFNGLDELETESAMPLERSPROC) load(userptr, "glDeleteSamplers"); + context->GenSamplers = (PFNGLGENSAMPLERSPROC) load(userptr, "glGenSamplers"); + context->GetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC) load(userptr, "glGetFragDataIndex"); + context->GetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC) load(userptr, "glGetQueryObjecti64v"); + context->GetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC) load(userptr, "glGetQueryObjectui64v"); + context->GetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC) load(userptr, "glGetSamplerParameterIiv"); + context->GetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC) load(userptr, "glGetSamplerParameterIuiv"); + context->GetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC) load(userptr, "glGetSamplerParameterfv"); + context->GetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC) load(userptr, "glGetSamplerParameteriv"); + context->IsSampler = (PFNGLISSAMPLERPROC) load(userptr, "glIsSampler"); + context->QueryCounter = (PFNGLQUERYCOUNTERPROC) load(userptr, "glQueryCounter"); + context->SamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC) load(userptr, "glSamplerParameterIiv"); + context->SamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC) load(userptr, "glSamplerParameterIuiv"); + context->SamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC) load(userptr, "glSamplerParameterf"); + context->SamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC) load(userptr, "glSamplerParameterfv"); + context->SamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC) load(userptr, "glSamplerParameteri"); + context->SamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC) load(userptr, "glSamplerParameteriv"); + context->VertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC) load(userptr, "glVertexAttribDivisor"); + context->VertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC) load(userptr, "glVertexAttribP1ui"); + context->VertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC) load(userptr, "glVertexAttribP1uiv"); + context->VertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC) load(userptr, "glVertexAttribP2ui"); + context->VertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC) load(userptr, "glVertexAttribP2uiv"); + context->VertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC) load(userptr, "glVertexAttribP3ui"); + context->VertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC) load(userptr, "glVertexAttribP3uiv"); + context->VertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC) load(userptr, "glVertexAttribP4ui"); + context->VertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC) load(userptr, "glVertexAttribP4uiv"); +} +static void glad_gl_load_GL_VERSION_4_0(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_0) return; + context->BeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC) load(userptr, "glBeginQueryIndexed"); + context->BindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC) load(userptr, "glBindTransformFeedback"); + context->BlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC) load(userptr, "glBlendEquationSeparatei"); + context->BlendEquationi = (PFNGLBLENDEQUATIONIPROC) load(userptr, "glBlendEquationi"); + context->BlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC) load(userptr, "glBlendFuncSeparatei"); + context->BlendFunci = (PFNGLBLENDFUNCIPROC) load(userptr, "glBlendFunci"); + context->DeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC) load(userptr, "glDeleteTransformFeedbacks"); + context->DrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC) load(userptr, "glDrawArraysIndirect"); + context->DrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC) load(userptr, "glDrawElementsIndirect"); + context->DrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC) load(userptr, "glDrawTransformFeedback"); + context->DrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) load(userptr, "glDrawTransformFeedbackStream"); + context->EndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC) load(userptr, "glEndQueryIndexed"); + context->GenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC) load(userptr, "glGenTransformFeedbacks"); + context->GetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC) load(userptr, "glGetActiveSubroutineName"); + context->GetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) load(userptr, "glGetActiveSubroutineUniformName"); + context->GetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) load(userptr, "glGetActiveSubroutineUniformiv"); + context->GetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC) load(userptr, "glGetProgramStageiv"); + context->GetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC) load(userptr, "glGetQueryIndexediv"); + context->GetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC) load(userptr, "glGetSubroutineIndex"); + context->GetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) load(userptr, "glGetSubroutineUniformLocation"); + context->GetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC) load(userptr, "glGetUniformSubroutineuiv"); + context->GetUniformdv = (PFNGLGETUNIFORMDVPROC) load(userptr, "glGetUniformdv"); + context->IsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC) load(userptr, "glIsTransformFeedback"); + context->MinSampleShading = (PFNGLMINSAMPLESHADINGPROC) load(userptr, "glMinSampleShading"); + context->PatchParameterfv = (PFNGLPATCHPARAMETERFVPROC) load(userptr, "glPatchParameterfv"); + context->PatchParameteri = (PFNGLPATCHPARAMETERIPROC) load(userptr, "glPatchParameteri"); + context->PauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC) load(userptr, "glPauseTransformFeedback"); + context->ResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC) load(userptr, "glResumeTransformFeedback"); + context->Uniform1d = (PFNGLUNIFORM1DPROC) load(userptr, "glUniform1d"); + context->Uniform1dv = (PFNGLUNIFORM1DVPROC) load(userptr, "glUniform1dv"); + context->Uniform2d = (PFNGLUNIFORM2DPROC) load(userptr, "glUniform2d"); + context->Uniform2dv = (PFNGLUNIFORM2DVPROC) load(userptr, "glUniform2dv"); + context->Uniform3d = (PFNGLUNIFORM3DPROC) load(userptr, "glUniform3d"); + context->Uniform3dv = (PFNGLUNIFORM3DVPROC) load(userptr, "glUniform3dv"); + context->Uniform4d = (PFNGLUNIFORM4DPROC) load(userptr, "glUniform4d"); + context->Uniform4dv = (PFNGLUNIFORM4DVPROC) load(userptr, "glUniform4dv"); + context->UniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC) load(userptr, "glUniformMatrix2dv"); + context->UniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC) load(userptr, "glUniformMatrix2x3dv"); + context->UniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC) load(userptr, "glUniformMatrix2x4dv"); + context->UniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC) load(userptr, "glUniformMatrix3dv"); + context->UniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC) load(userptr, "glUniformMatrix3x2dv"); + context->UniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC) load(userptr, "glUniformMatrix3x4dv"); + context->UniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC) load(userptr, "glUniformMatrix4dv"); + context->UniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC) load(userptr, "glUniformMatrix4x2dv"); + context->UniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC) load(userptr, "glUniformMatrix4x3dv"); + context->UniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC) load(userptr, "glUniformSubroutinesuiv"); +} +static void glad_gl_load_GL_VERSION_4_1(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_1) return; + context->ActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC) load(userptr, "glActiveShaderProgram"); + context->BindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC) load(userptr, "glBindProgramPipeline"); + context->ClearDepthf = (PFNGLCLEARDEPTHFPROC) load(userptr, "glClearDepthf"); + context->CreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC) load(userptr, "glCreateShaderProgramv"); + context->DeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC) load(userptr, "glDeleteProgramPipelines"); + context->DepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC) load(userptr, "glDepthRangeArrayv"); + context->DepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC) load(userptr, "glDepthRangeIndexed"); + context->DepthRangef = (PFNGLDEPTHRANGEFPROC) load(userptr, "glDepthRangef"); + context->GenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC) load(userptr, "glGenProgramPipelines"); + context->GetDoublei_v = (PFNGLGETDOUBLEI_VPROC) load(userptr, "glGetDoublei_v"); + context->GetFloati_v = (PFNGLGETFLOATI_VPROC) load(userptr, "glGetFloati_v"); + context->GetProgramBinary = (PFNGLGETPROGRAMBINARYPROC) load(userptr, "glGetProgramBinary"); + context->GetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC) load(userptr, "glGetProgramPipelineInfoLog"); + context->GetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC) load(userptr, "glGetProgramPipelineiv"); + context->GetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC) load(userptr, "glGetShaderPrecisionFormat"); + context->GetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC) load(userptr, "glGetVertexAttribLdv"); + context->IsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC) load(userptr, "glIsProgramPipeline"); + context->ProgramBinary = (PFNGLPROGRAMBINARYPROC) load(userptr, "glProgramBinary"); + context->ProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC) load(userptr, "glProgramParameteri"); + context->ProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC) load(userptr, "glProgramUniform1d"); + context->ProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC) load(userptr, "glProgramUniform1dv"); + context->ProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC) load(userptr, "glProgramUniform1f"); + context->ProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC) load(userptr, "glProgramUniform1fv"); + context->ProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC) load(userptr, "glProgramUniform1i"); + context->ProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC) load(userptr, "glProgramUniform1iv"); + context->ProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC) load(userptr, "glProgramUniform1ui"); + context->ProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC) load(userptr, "glProgramUniform1uiv"); + context->ProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC) load(userptr, "glProgramUniform2d"); + context->ProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC) load(userptr, "glProgramUniform2dv"); + context->ProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC) load(userptr, "glProgramUniform2f"); + context->ProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC) load(userptr, "glProgramUniform2fv"); + context->ProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC) load(userptr, "glProgramUniform2i"); + context->ProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC) load(userptr, "glProgramUniform2iv"); + context->ProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC) load(userptr, "glProgramUniform2ui"); + context->ProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC) load(userptr, "glProgramUniform2uiv"); + context->ProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC) load(userptr, "glProgramUniform3d"); + context->ProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC) load(userptr, "glProgramUniform3dv"); + context->ProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC) load(userptr, "glProgramUniform3f"); + context->ProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC) load(userptr, "glProgramUniform3fv"); + context->ProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC) load(userptr, "glProgramUniform3i"); + context->ProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC) load(userptr, "glProgramUniform3iv"); + context->ProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC) load(userptr, "glProgramUniform3ui"); + context->ProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC) load(userptr, "glProgramUniform3uiv"); + context->ProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC) load(userptr, "glProgramUniform4d"); + context->ProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC) load(userptr, "glProgramUniform4dv"); + context->ProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC) load(userptr, "glProgramUniform4f"); + context->ProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC) load(userptr, "glProgramUniform4fv"); + context->ProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC) load(userptr, "glProgramUniform4i"); + context->ProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC) load(userptr, "glProgramUniform4iv"); + context->ProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC) load(userptr, "glProgramUniform4ui"); + context->ProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC) load(userptr, "glProgramUniform4uiv"); + context->ProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC) load(userptr, "glProgramUniformMatrix2dv"); + context->ProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC) load(userptr, "glProgramUniformMatrix2fv"); + context->ProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) load(userptr, "glProgramUniformMatrix2x3dv"); + context->ProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) load(userptr, "glProgramUniformMatrix2x3fv"); + context->ProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) load(userptr, "glProgramUniformMatrix2x4dv"); + context->ProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) load(userptr, "glProgramUniformMatrix2x4fv"); + context->ProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC) load(userptr, "glProgramUniformMatrix3dv"); + context->ProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC) load(userptr, "glProgramUniformMatrix3fv"); + context->ProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) load(userptr, "glProgramUniformMatrix3x2dv"); + context->ProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) load(userptr, "glProgramUniformMatrix3x2fv"); + context->ProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) load(userptr, "glProgramUniformMatrix3x4dv"); + context->ProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) load(userptr, "glProgramUniformMatrix3x4fv"); + context->ProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC) load(userptr, "glProgramUniformMatrix4dv"); + context->ProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC) load(userptr, "glProgramUniformMatrix4fv"); + context->ProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) load(userptr, "glProgramUniformMatrix4x2dv"); + context->ProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) load(userptr, "glProgramUniformMatrix4x2fv"); + context->ProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) load(userptr, "glProgramUniformMatrix4x3dv"); + context->ProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) load(userptr, "glProgramUniformMatrix4x3fv"); + context->ReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC) load(userptr, "glReleaseShaderCompiler"); + context->ScissorArrayv = (PFNGLSCISSORARRAYVPROC) load(userptr, "glScissorArrayv"); + context->ScissorIndexed = (PFNGLSCISSORINDEXEDPROC) load(userptr, "glScissorIndexed"); + context->ScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC) load(userptr, "glScissorIndexedv"); + context->ShaderBinary = (PFNGLSHADERBINARYPROC) load(userptr, "glShaderBinary"); + context->UseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC) load(userptr, "glUseProgramStages"); + context->ValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC) load(userptr, "glValidateProgramPipeline"); + context->VertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC) load(userptr, "glVertexAttribL1d"); + context->VertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC) load(userptr, "glVertexAttribL1dv"); + context->VertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC) load(userptr, "glVertexAttribL2d"); + context->VertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC) load(userptr, "glVertexAttribL2dv"); + context->VertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC) load(userptr, "glVertexAttribL3d"); + context->VertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC) load(userptr, "glVertexAttribL3dv"); + context->VertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC) load(userptr, "glVertexAttribL4d"); + context->VertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC) load(userptr, "glVertexAttribL4dv"); + context->VertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC) load(userptr, "glVertexAttribLPointer"); + context->ViewportArrayv = (PFNGLVIEWPORTARRAYVPROC) load(userptr, "glViewportArrayv"); + context->ViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC) load(userptr, "glViewportIndexedf"); + context->ViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC) load(userptr, "glViewportIndexedfv"); +} +static void glad_gl_load_GL_VERSION_4_2(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_2) return; + context->BindImageTexture = (PFNGLBINDIMAGETEXTUREPROC) load(userptr, "glBindImageTexture"); + context->DrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) load(userptr, "glDrawArraysInstancedBaseInstance"); + context->DrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) load(userptr, "glDrawElementsInstancedBaseInstance"); + context->DrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) load(userptr, "glDrawElementsInstancedBaseVertexBaseInstance"); + context->DrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) load(userptr, "glDrawTransformFeedbackInstanced"); + context->DrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) load(userptr, "glDrawTransformFeedbackStreamInstanced"); + context->GetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) load(userptr, "glGetActiveAtomicCounterBufferiv"); + context->GetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC) load(userptr, "glGetInternalformativ"); + context->MemoryBarrier = (PFNGLMEMORYBARRIERPROC) load(userptr, "glMemoryBarrier"); + context->TexStorage1D = (PFNGLTEXSTORAGE1DPROC) load(userptr, "glTexStorage1D"); + context->TexStorage2D = (PFNGLTEXSTORAGE2DPROC) load(userptr, "glTexStorage2D"); + context->TexStorage3D = (PFNGLTEXSTORAGE3DPROC) load(userptr, "glTexStorage3D"); +} +static void glad_gl_load_GL_VERSION_4_3(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_3) return; + context->BindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC) load(userptr, "glBindVertexBuffer"); + context->ClearBufferData = (PFNGLCLEARBUFFERDATAPROC) load(userptr, "glClearBufferData"); + context->ClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC) load(userptr, "glClearBufferSubData"); + context->CopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC) load(userptr, "glCopyImageSubData"); + context->DebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) load(userptr, "glDebugMessageCallback"); + context->DebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC) load(userptr, "glDebugMessageControl"); + context->DebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC) load(userptr, "glDebugMessageInsert"); + context->DispatchCompute = (PFNGLDISPATCHCOMPUTEPROC) load(userptr, "glDispatchCompute"); + context->DispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC) load(userptr, "glDispatchComputeIndirect"); + context->FramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC) load(userptr, "glFramebufferParameteri"); + context->GetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC) load(userptr, "glGetDebugMessageLog"); + context->GetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC) load(userptr, "glGetFramebufferParameteriv"); + context->GetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC) load(userptr, "glGetInternalformati64v"); + context->GetObjectLabel = (PFNGLGETOBJECTLABELPROC) load(userptr, "glGetObjectLabel"); + context->GetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC) load(userptr, "glGetObjectPtrLabel"); + context->GetPointerv = (PFNGLGETPOINTERVPROC) load(userptr, "glGetPointerv"); + context->GetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC) load(userptr, "glGetProgramInterfaceiv"); + context->GetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC) load(userptr, "glGetProgramResourceIndex"); + context->GetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC) load(userptr, "glGetProgramResourceLocation"); + context->GetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) load(userptr, "glGetProgramResourceLocationIndex"); + context->GetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC) load(userptr, "glGetProgramResourceName"); + context->GetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC) load(userptr, "glGetProgramResourceiv"); + context->InvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC) load(userptr, "glInvalidateBufferData"); + context->InvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC) load(userptr, "glInvalidateBufferSubData"); + context->InvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC) load(userptr, "glInvalidateFramebuffer"); + context->InvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC) load(userptr, "glInvalidateSubFramebuffer"); + context->InvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC) load(userptr, "glInvalidateTexImage"); + context->InvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC) load(userptr, "glInvalidateTexSubImage"); + context->MultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC) load(userptr, "glMultiDrawArraysIndirect"); + context->MultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC) load(userptr, "glMultiDrawElementsIndirect"); + context->ObjectLabel = (PFNGLOBJECTLABELPROC) load(userptr, "glObjectLabel"); + context->ObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC) load(userptr, "glObjectPtrLabel"); + context->PopDebugGroup = (PFNGLPOPDEBUGGROUPPROC) load(userptr, "glPopDebugGroup"); + context->PushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC) load(userptr, "glPushDebugGroup"); + context->ShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC) load(userptr, "glShaderStorageBlockBinding"); + context->TexBufferRange = (PFNGLTEXBUFFERRANGEPROC) load(userptr, "glTexBufferRange"); + context->TexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC) load(userptr, "glTexStorage2DMultisample"); + context->TexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC) load(userptr, "glTexStorage3DMultisample"); + context->TextureView = (PFNGLTEXTUREVIEWPROC) load(userptr, "glTextureView"); + context->VertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC) load(userptr, "glVertexAttribBinding"); + context->VertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC) load(userptr, "glVertexAttribFormat"); + context->VertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC) load(userptr, "glVertexAttribIFormat"); + context->VertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC) load(userptr, "glVertexAttribLFormat"); + context->VertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC) load(userptr, "glVertexBindingDivisor"); +} +static void glad_gl_load_GL_VERSION_4_4(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_4) return; + context->BindBuffersBase = (PFNGLBINDBUFFERSBASEPROC) load(userptr, "glBindBuffersBase"); + context->BindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC) load(userptr, "glBindBuffersRange"); + context->BindImageTextures = (PFNGLBINDIMAGETEXTURESPROC) load(userptr, "glBindImageTextures"); + context->BindSamplers = (PFNGLBINDSAMPLERSPROC) load(userptr, "glBindSamplers"); + context->BindTextures = (PFNGLBINDTEXTURESPROC) load(userptr, "glBindTextures"); + context->BindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC) load(userptr, "glBindVertexBuffers"); + context->BufferStorage = (PFNGLBUFFERSTORAGEPROC) load(userptr, "glBufferStorage"); + context->ClearTexImage = (PFNGLCLEARTEXIMAGEPROC) load(userptr, "glClearTexImage"); + context->ClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC) load(userptr, "glClearTexSubImage"); +} +static void glad_gl_load_GL_VERSION_4_5(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_5) return; + context->BindTextureUnit = (PFNGLBINDTEXTUREUNITPROC) load(userptr, "glBindTextureUnit"); + context->BlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC) load(userptr, "glBlitNamedFramebuffer"); + context->CheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) load(userptr, "glCheckNamedFramebufferStatus"); + context->ClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC) load(userptr, "glClearNamedBufferData"); + context->ClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC) load(userptr, "glClearNamedBufferSubData"); + context->ClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) load(userptr, "glClearNamedFramebufferfi"); + context->ClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) load(userptr, "glClearNamedFramebufferfv"); + context->ClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) load(userptr, "glClearNamedFramebufferiv"); + context->ClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) load(userptr, "glClearNamedFramebufferuiv"); + context->ClipControl = (PFNGLCLIPCONTROLPROC) load(userptr, "glClipControl"); + context->CompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) load(userptr, "glCompressedTextureSubImage1D"); + context->CompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) load(userptr, "glCompressedTextureSubImage2D"); + context->CompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) load(userptr, "glCompressedTextureSubImage3D"); + context->CopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC) load(userptr, "glCopyNamedBufferSubData"); + context->CopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC) load(userptr, "glCopyTextureSubImage1D"); + context->CopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC) load(userptr, "glCopyTextureSubImage2D"); + context->CopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC) load(userptr, "glCopyTextureSubImage3D"); + context->CreateBuffers = (PFNGLCREATEBUFFERSPROC) load(userptr, "glCreateBuffers"); + context->CreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC) load(userptr, "glCreateFramebuffers"); + context->CreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC) load(userptr, "glCreateProgramPipelines"); + context->CreateQueries = (PFNGLCREATEQUERIESPROC) load(userptr, "glCreateQueries"); + context->CreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC) load(userptr, "glCreateRenderbuffers"); + context->CreateSamplers = (PFNGLCREATESAMPLERSPROC) load(userptr, "glCreateSamplers"); + context->CreateTextures = (PFNGLCREATETEXTURESPROC) load(userptr, "glCreateTextures"); + context->CreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC) load(userptr, "glCreateTransformFeedbacks"); + context->CreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC) load(userptr, "glCreateVertexArrays"); + context->DisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC) load(userptr, "glDisableVertexArrayAttrib"); + context->EnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC) load(userptr, "glEnableVertexArrayAttrib"); + context->FlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) load(userptr, "glFlushMappedNamedBufferRange"); + context->GenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC) load(userptr, "glGenerateTextureMipmap"); + context->GetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) load(userptr, "glGetCompressedTextureImage"); + context->GetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) load(userptr, "glGetCompressedTextureSubImage"); + context->GetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC) load(userptr, "glGetGraphicsResetStatus"); + context->GetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) load(userptr, "glGetNamedBufferParameteri64v"); + context->GetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedBufferParameteriv"); + context->GetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC) load(userptr, "glGetNamedBufferPointerv"); + context->GetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC) load(userptr, "glGetNamedBufferSubData"); + context->GetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) load(userptr, "glGetNamedFramebufferAttachmentParameteriv"); + context->GetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedFramebufferParameteriv"); + context->GetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) load(userptr, "glGetNamedRenderbufferParameteriv"); + context->GetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC) load(userptr, "glGetQueryBufferObjecti64v"); + context->GetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC) load(userptr, "glGetQueryBufferObjectiv"); + context->GetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC) load(userptr, "glGetQueryBufferObjectui64v"); + context->GetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC) load(userptr, "glGetQueryBufferObjectuiv"); + context->GetTextureImage = (PFNGLGETTEXTUREIMAGEPROC) load(userptr, "glGetTextureImage"); + context->GetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC) load(userptr, "glGetTextureLevelParameterfv"); + context->GetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC) load(userptr, "glGetTextureLevelParameteriv"); + context->GetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC) load(userptr, "glGetTextureParameterIiv"); + context->GetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC) load(userptr, "glGetTextureParameterIuiv"); + context->GetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC) load(userptr, "glGetTextureParameterfv"); + context->GetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC) load(userptr, "glGetTextureParameteriv"); + context->GetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC) load(userptr, "glGetTextureSubImage"); + context->GetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC) load(userptr, "glGetTransformFeedbacki64_v"); + context->GetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC) load(userptr, "glGetTransformFeedbacki_v"); + context->GetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC) load(userptr, "glGetTransformFeedbackiv"); + context->GetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC) load(userptr, "glGetVertexArrayIndexed64iv"); + context->GetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC) load(userptr, "glGetVertexArrayIndexediv"); + context->GetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC) load(userptr, "glGetVertexArrayiv"); + context->GetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC) load(userptr, "glGetnCompressedTexImage"); + context->GetnTexImage = (PFNGLGETNTEXIMAGEPROC) load(userptr, "glGetnTexImage"); + context->GetnUniformdv = (PFNGLGETNUNIFORMDVPROC) load(userptr, "glGetnUniformdv"); + context->GetnUniformfv = (PFNGLGETNUNIFORMFVPROC) load(userptr, "glGetnUniformfv"); + context->GetnUniformiv = (PFNGLGETNUNIFORMIVPROC) load(userptr, "glGetnUniformiv"); + context->GetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC) load(userptr, "glGetnUniformuiv"); + context->InvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) load(userptr, "glInvalidateNamedFramebufferData"); + context->InvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) load(userptr, "glInvalidateNamedFramebufferSubData"); + context->MapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC) load(userptr, "glMapNamedBuffer"); + context->MapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC) load(userptr, "glMapNamedBufferRange"); + context->MemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC) load(userptr, "glMemoryBarrierByRegion"); + context->NamedBufferData = (PFNGLNAMEDBUFFERDATAPROC) load(userptr, "glNamedBufferData"); + context->NamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC) load(userptr, "glNamedBufferStorage"); + context->NamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC) load(userptr, "glNamedBufferSubData"); + context->NamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) load(userptr, "glNamedFramebufferDrawBuffer"); + context->NamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) load(userptr, "glNamedFramebufferDrawBuffers"); + context->NamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) load(userptr, "glNamedFramebufferParameteri"); + context->NamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) load(userptr, "glNamedFramebufferReadBuffer"); + context->NamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) load(userptr, "glNamedFramebufferRenderbuffer"); + context->NamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) load(userptr, "glNamedFramebufferTexture"); + context->NamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) load(userptr, "glNamedFramebufferTextureLayer"); + context->NamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC) load(userptr, "glNamedRenderbufferStorage"); + context->NamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) load(userptr, "glNamedRenderbufferStorageMultisample"); + context->ReadnPixels = (PFNGLREADNPIXELSPROC) load(userptr, "glReadnPixels"); + context->TextureBarrier = (PFNGLTEXTUREBARRIERPROC) load(userptr, "glTextureBarrier"); + context->TextureBuffer = (PFNGLTEXTUREBUFFERPROC) load(userptr, "glTextureBuffer"); + context->TextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC) load(userptr, "glTextureBufferRange"); + context->TextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC) load(userptr, "glTextureParameterIiv"); + context->TextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC) load(userptr, "glTextureParameterIuiv"); + context->TextureParameterf = (PFNGLTEXTUREPARAMETERFPROC) load(userptr, "glTextureParameterf"); + context->TextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC) load(userptr, "glTextureParameterfv"); + context->TextureParameteri = (PFNGLTEXTUREPARAMETERIPROC) load(userptr, "glTextureParameteri"); + context->TextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC) load(userptr, "glTextureParameteriv"); + context->TextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC) load(userptr, "glTextureStorage1D"); + context->TextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC) load(userptr, "glTextureStorage2D"); + context->TextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) load(userptr, "glTextureStorage2DMultisample"); + context->TextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC) load(userptr, "glTextureStorage3D"); + context->TextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) load(userptr, "glTextureStorage3DMultisample"); + context->TextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC) load(userptr, "glTextureSubImage1D"); + context->TextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC) load(userptr, "glTextureSubImage2D"); + context->TextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC) load(userptr, "glTextureSubImage3D"); + context->TransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) load(userptr, "glTransformFeedbackBufferBase"); + context->TransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) load(userptr, "glTransformFeedbackBufferRange"); + context->UnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC) load(userptr, "glUnmapNamedBuffer"); + context->VertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC) load(userptr, "glVertexArrayAttribBinding"); + context->VertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC) load(userptr, "glVertexArrayAttribFormat"); + context->VertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC) load(userptr, "glVertexArrayAttribIFormat"); + context->VertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC) load(userptr, "glVertexArrayAttribLFormat"); + context->VertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC) load(userptr, "glVertexArrayBindingDivisor"); + context->VertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC) load(userptr, "glVertexArrayElementBuffer"); + context->VertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC) load(userptr, "glVertexArrayVertexBuffer"); + context->VertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC) load(userptr, "glVertexArrayVertexBuffers"); +} +static void glad_gl_load_GL_VERSION_4_6(GladGLContext *context, GLADuserptrloadfunc load, void* userptr) { + if(!context->VERSION_4_6) return; + context->MultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) load(userptr, "glMultiDrawArraysIndirectCount"); + context->MultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) load(userptr, "glMultiDrawElementsIndirectCount"); + context->PolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC) load(userptr, "glPolygonOffsetClamp"); + context->SpecializeShader = (PFNGLSPECIALIZESHADERPROC) load(userptr, "glSpecializeShader"); +} + + + +static void glad_gl_free_extensions(char **exts_i) { + if (exts_i != NULL) { + unsigned int index; + for(index = 0; exts_i[index]; index++) { + free((void *) (exts_i[index])); + } + free((void *)exts_i); + exts_i = NULL; + } +} +static int glad_gl_get_extensions(GladGLContext *context, const char **out_exts, char ***out_exts_i) { +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) + if (context->GetStringi != NULL && context->GetIntegerv != NULL) { + unsigned int index = 0; + unsigned int num_exts_i = 0; + char **exts_i = NULL; + context->GetIntegerv(GL_NUM_EXTENSIONS, (int*) &num_exts_i); + exts_i = (char **) malloc((num_exts_i + 1) * (sizeof *exts_i)); + if (exts_i == NULL) { + return 0; + } + for(index = 0; index < num_exts_i; index++) { + const char *gl_str_tmp = (const char*) context->GetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp) + 1; + + char *local_str = (char*) malloc(len * sizeof(char)); + if(local_str == NULL) { + exts_i[index] = NULL; + glad_gl_free_extensions(exts_i); + return 0; + } + + memcpy(local_str, gl_str_tmp, len * sizeof(char)); + exts_i[index] = local_str; + } + exts_i[index] = NULL; + + *out_exts_i = exts_i; + + return 1; + } +#else + GLAD_UNUSED(out_exts_i); +#endif + if (context->GetString == NULL) { + return 0; + } + *out_exts = (const char *)context->GetString(GL_EXTENSIONS); + return 1; +} +static int glad_gl_has_extension(const char *exts, char **exts_i, const char *ext) { + if(exts_i) { + unsigned int index; + for(index = 0; exts_i[index]; index++) { + const char *e = exts_i[index]; + if(strcmp(e, ext) == 0) { + return 1; + } + } + } else { + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } + } + return 0; +} + +static GLADapiproc glad_gl_get_proc_from_userptr(void *userptr, const char* name) { + return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); +} + +static int glad_gl_find_extensions_gl(GladGLContext *context) { + const char *exts = NULL; + char **exts_i = NULL; + if (!glad_gl_get_extensions(context, &exts, &exts_i)) return 0; + + GLAD_UNUSED(&glad_gl_has_extension); + + glad_gl_free_extensions(exts_i); + + return 1; +} + +static int glad_gl_find_core_gl(GladGLContext *context) { + int i; + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC ", + NULL + }; + int major = 0; + int minor = 0; + version = (const char*) context->GetString(GL_VERSION); + if (!version) return 0; + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + + GLAD_IMPL_UTIL_SSCANF(version, "%d.%d", &major, &minor); + + context->VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + context->VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + context->VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + context->VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + context->VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + context->VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + context->VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + context->VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + context->VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + context->VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + context->VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + context->VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + context->VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; + context->VERSION_4_1 = (major == 4 && minor >= 1) || major > 4; + context->VERSION_4_2 = (major == 4 && minor >= 2) || major > 4; + context->VERSION_4_3 = (major == 4 && minor >= 3) || major > 4; + context->VERSION_4_4 = (major == 4 && minor >= 4) || major > 4; + context->VERSION_4_5 = (major == 4 && minor >= 5) || major > 4; + context->VERSION_4_6 = (major == 4 && minor >= 6) || major > 4; + + return GLAD_MAKE_VERSION(major, minor); +} + +int gladLoadGLContextUserPtr(GladGLContext *context, GLADuserptrloadfunc load, void *userptr) { + int version; + + context->GetString = (PFNGLGETSTRINGPROC) load(userptr, "glGetString"); + if(context->GetString == NULL) return 0; + version = glad_gl_find_core_gl(context); + + glad_gl_load_GL_VERSION_1_0(context, load, userptr); + glad_gl_load_GL_VERSION_1_1(context, load, userptr); + glad_gl_load_GL_VERSION_1_2(context, load, userptr); + glad_gl_load_GL_VERSION_1_3(context, load, userptr); + glad_gl_load_GL_VERSION_1_4(context, load, userptr); + glad_gl_load_GL_VERSION_1_5(context, load, userptr); + glad_gl_load_GL_VERSION_2_0(context, load, userptr); + glad_gl_load_GL_VERSION_2_1(context, load, userptr); + glad_gl_load_GL_VERSION_3_0(context, load, userptr); + glad_gl_load_GL_VERSION_3_1(context, load, userptr); + glad_gl_load_GL_VERSION_3_2(context, load, userptr); + glad_gl_load_GL_VERSION_3_3(context, load, userptr); + glad_gl_load_GL_VERSION_4_0(context, load, userptr); + glad_gl_load_GL_VERSION_4_1(context, load, userptr); + glad_gl_load_GL_VERSION_4_2(context, load, userptr); + glad_gl_load_GL_VERSION_4_3(context, load, userptr); + glad_gl_load_GL_VERSION_4_4(context, load, userptr); + glad_gl_load_GL_VERSION_4_5(context, load, userptr); + glad_gl_load_GL_VERSION_4_6(context, load, userptr); + + if (!glad_gl_find_extensions_gl(context)) return 0; + + + + return version; +} + + +int gladLoadGLContext(GladGLContext *context, GLADloadfunc load) { + return gladLoadGLContextUserPtr(context, glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); +} + + + + + + +#ifdef __cplusplus +} +#endif + +#endif /* GLAD_GL_IMPLEMENTATION */ + diff --git a/StgSharp.GenerateGL/xml/Genglvnd b/StgSharp.GenerateGL/xml/Genglvnd new file mode 100644 index 00000000..14d4060b --- /dev/null +++ b/StgSharp.GenerateGL/xml/Genglvnd @@ -0,0 +1,4 @@ +#!/bin/sh +for header in glcorearb.h glext.h gl.h ; do + ./genglvnd.py -registry drafts/GL/gl.xml drafts/GL/$header +done diff --git a/StgSharp.GenerateGL/xml/Makefile b/StgSharp.GenerateGL/xml/Makefile new file mode 100644 index 00000000..2cf9db25 --- /dev/null +++ b/StgSharp.GenerateGL/xml/Makefile @@ -0,0 +1,74 @@ +# Copyright 2013-2025 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +# Generator scripts and options +# GENOPTS can be e.g. '-noprotect' + +PYFILES = genheaders.py reg.py +GENOPTS = +GENHEADERS = ./genheaders.py $(GENOPTS) + +# Generate all headers for GL / GLES / WGL / GLX +# Different headers depend on different XML registry files +# The $(GENHEADERS) script has targets for the additional headers +# $(API)/GL/gl.h +# $(API)/GL/glx.h +# $(API)/GL/wgl.h +# but these are experimental and not supported by Khronos. OpenGL +# drivers and SDKs provided by OS vendors and IHVs include their own +# platform-specific versions of these headers, where appropriate. + +API = ../api +GLHEADERS = $(API)/GL/glext.h \ + $(API)/GL/glcorearb.h \ + $(API)/GLES/gl.h \ + $(API)/GLES/glext.h \ + $(API)/GLES2/gl2.h \ + $(API)/GLES2/gl2ext.h \ + $(API)/GLES3/gl3.h \ + $(API)/GLSC2/glsc2.h \ + $(API)/GLSC2/glsc2ext.h + +GLXHEADERS = $(API)/GL/glxext.h +WGLHEADERS = $(API)/GL/wglext.h \ + $(API)/GL/wgl.h +ALLHEADERS = $(GLHEADERS) $(GLXHEADERS) $(WGLHEADERS) + +# Generated files to clean up +TEXDIRT = readme.aux readme.idx readme.ilg readme.ind readme.log readme.toc readme.out +PYDIRT = diag.txt dumpReg.txt errwarn.txt reg.pyc + +default: $(ALLHEADERS) + +$(GLHEADERS): gl.xml $(PYFILES) + $(GENHEADERS) $@ + +$(GLXHEADERS): glx.xml $(PYFILES) + $(GENHEADERS) $@ -registry glx.xml + +$(WGLHEADERS): wgl.xml $(PYFILES) + $(GENHEADERS) $@ -registry wgl.xml + +# Generate Relax NG XML schema from Compact schema + +registry.rng: registry.rnc + trang registry.rnc registry.rng + +# Verify all registry XML files against the schema + +validate: + jing -c registry.rnc gl.xml + jing -c registry.rnc glx.xml + jing -c registry.rnc wgl.xml + +# Documentation target + +readme.pdf: readme.tex + touch readme.ind + pdflatex readme.tex + pdflatex readme.tex + makeindex readme.idx + pdflatex readme.tex + +clean: + -rm -f $(PYDIRT) $(TEXDIRT) diff --git a/StgSharp.GenerateGL/xml/README.adoc b/StgSharp.GenerateGL/xml/README.adoc new file mode 100644 index 00000000..d6c4cbe8 --- /dev/null +++ b/StgSharp.GenerateGL/xml/README.adoc @@ -0,0 +1,25 @@ +// Copyright 2017-2021 The Khronos Group Inc. +// SPDX-License-Identifier: CC-BY-4.0 + +# OpenGL XML API Registry + +This directory contains the OpenGL, GLX, and WGL XML API registries, in +gl.xml, glx.xml, and wgl.xml respectively. They are used to reserve +enumerant ranges for vendors working on new extensions, to register +extension interfaces when an extension is published, and to generate the +Khronos-supplied header files in ../api . + +The canonical versions are always found in the master branch of the github +repository at https://github.com/KhronosGroup/OpenGL-Registry + +The 'validate' Makefile target uses the 'jing' tool to confirm that each XML +file is structurally valid and conforms to the registry schema in +registry.rnc. The schema is described in detail in readme.pdf. + +The 'default' Makefile target generates updated headers in ../api/ from the +XML files. + +Note that while there are targets for ../api/{gl.h,glx.h,wgl.h} in +genglvnd.py and genheaders.py, these targets are not generated by default +and are experimental. At present, you should use the versions of these +headers shipped with your OS or IHV SDK. diff --git a/StgSharp.GenerateGL/xml/genglvnd.py b/StgSharp.GenerateGL/xml/genglvnd.py new file mode 100644 index 00000000..d73f9e47 --- /dev/null +++ b/StgSharp.GenerateGL/xml/genglvnd.py @@ -0,0 +1,628 @@ +#!/usr/bin/env python +# +# Copyright 2013-2025 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +import sys, time, pdb, string, cProfile +from reg import * + +# debug - start header generation in debugger +# dump - dump registry after loading +# profile - enable Python profiling +# protect - whether to use #ifndef protections +# registry - use specified XML registry instead of gl.xml +# target - string name of target header, or all targets if None +# timeit - time length of registry loading & header generation +# validate - validate return & parameter group tags against +debug = False +dump = False +profile = False +protect = True +target = None +timeit = False +validate= False +# Default input / log files +errFilename = None +diagFilename = 'diag.txt' +regFilename = 'gl.xml' + +if __name__ == '__main__': + i = 1 + while (i < len(sys.argv)): + arg = sys.argv[i] + i = i + 1 + if (arg == '-debug'): + write('Enabling debug (-debug)', file=sys.stderr) + debug = True + elif (arg == '-dump'): + write('Enabling dump (-dump)', file=sys.stderr) + dump = True + elif (arg == '-noprotect'): + write('Disabling inclusion protection in output headers', file=sys.stderr) + protect = False + elif (arg == '-profile'): + write('Enabling profiling (-profile)', file=sys.stderr) + profile = True + elif (arg == '-registry'): + regFilename = sys.argv[i] + i = i+1 + write('Using registry ', regFilename, file=sys.stderr) + elif (arg == '-time'): + write('Enabling timing (-time)', file=sys.stderr) + timeit = True + elif (arg == '-validate'): + write('Enabling group validation (-validate)', file=sys.stderr) + validate = True + elif (arg[0:1] == '-'): + write('Unrecognized argument:', arg, file=sys.stderr) + exit(1) + else: + target = arg + write('Using target', target, file=sys.stderr) + +# Simple timer functions +startTime = None +def startTimer(): + global startTime + startTime = time.process_time() +def endTimer(msg): + global startTime + endTime = time.process_time() + if (timeit): + write(msg, endTime - startTime) + startTime = None + +# Load & parse registry +reg = Registry() + +startTimer() +tree = etree.parse(regFilename) +endTimer('Time to make ElementTree =') + +startTimer() +reg.loadElementTree(tree) +endTimer('Time to parse ElementTree =') + +if (validate): + reg.validateGroups() + +if (dump): + write('***************************************') + write('Performing Registry dump to regdump.txt') + write('***************************************') + reg.dumpReg(filehandle = open('regdump.txt','w')) + +# Turn a list of strings into a regexp string matching exactly those strings +def makeREstring(list): + return '^(' + '|'.join(list) + ')$' + +# These are "mandatory" OpenGL ES 1 extensions, to +# be included in the core GLES/gl.h header. +es1CoreList = [ + 'GL_OES_read_format', + 'GL_OES_compressed_paletted_texture', + 'GL_OES_point_size_array', + 'GL_OES_point_sprite' +] + +# These are extensions to be included in the libglvnd GL/gl.h header. +glVndList = [ + 'GL_ARB_imaging', + 'GL_ARB_multitexture' +] + +# Descriptive names for various regexp patterns used to select +# versions and extensions + +allVersions = allExtensions = '.*' +noVersions = noExtensions = None +gl13Pat = r'1\.[0-3]' +gl12andLaterPat = r'1\.[2-9]|[234]\.[0-9]' +gles2onlyPat = r'2\.[0-9]' +gles2through30Pat = r'2\.[0-9]|3\.0' +gles2through31Pat = r'2\.[0-9]|3\.[01]' +gles2through32Pat = r'2\.[0-9]|3\.[012]' +es1CorePat = makeREstring(es1CoreList) +glVndPat = makeREstring(glVndList) + +# Extensions in old glcorearb.h but not yet tagged accordingly in gl.xml +glCoreARBPat = None +glx13andLaterPat = r'1\.[3-9]' + +# Copyright text prefixing all headers (list of strings). +prefixStrings = [ + '/*', + '** Copyright 2013-2025 The Khronos Group Inc.', + '** SPDX-' + 'License-Identifier: MIT', + '**', + '** This header is generated from the Khronos OpenGL / OpenGL ES XML', + '** API Registry. The current version of the Registry, generator scripts', + '** used to make the header, and the header can be found at', + '** https://github.com/KhronosGroup/OpenGL-Registry', + '*/', + '' +] + +# glext.h / glcorearb.h define calling conventions inline (no GL *platform.h) +glExtPlatformStrings = [ + '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', + '#ifndef WIN32_LEAN_AND_MEAN', + '#define WIN32_LEAN_AND_MEAN 1', + '#endif', + '#include ', + '#endif', + '', + '#ifndef APIENTRY', + '#define APIENTRY', + '#endif', + '#ifndef APIENTRYP', + '#define APIENTRYP APIENTRY *', + '#endif', + '#ifndef GLAPI', + '#define GLAPI extern', + '#endif', + '' +] + +glCorearbPlatformStrings = glExtPlatformStrings + [ + '/* glcorearb.h is for use with OpenGL core profile implementations.', + '** It should should be placed in the same directory as gl.h and', + '** included as .', + '**', + '** glcorearb.h includes only APIs in the latest OpenGL core profile', + '** implementation together with APIs in newer ARB extensions which ', + '** can be supported by the core profile. It does not, and never will', + '** include functionality removed from the core profile, such as', + '** fixed-function vertex and fragment processing.', + '**', + '** Do not #include both and either of or', + '** in the same source file.', + '*/', + '' +] + +# wglext.h needs Windows include +wglPlatformStrings = [ + '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', + '#define WIN32_LEAN_AND_MEAN 1', + '#include ', + '#endif', + '', +] + +# Different APIs use different *platform.h files to define calling +# conventions +glPlatformStrings = [ '#include ', '' ] +gles1PlatformStrings = [ '#include ', '' ] +gles2PlatformStrings = [ '#include ', '' ] +gles3PlatformStrings = [ '#include ', '' ] +glsc2PlatformStrings = [ '#include ', '' ] +eglPlatformStrings = [ '#include ', '' ] + +# GLES headers have a small addition to calling convention headers for function pointer typedefs +apiEntryPrefixStrings = [ + '#ifndef GL_APIENTRYP', + '#define GL_APIENTRYP GL_APIENTRY*', + '#endif', + '' +] + +# Insert generation date in a comment for headers not having *GLEXT_VERSION macros +genDateCommentString = [ + format("/* Generated on date %s */" % time.strftime("%Y%m%d")), + '' +] + +# GL_GLEXT_VERSION is defined only in glext.h and gl2ext.h +glextVersionStrings = [ + format("#define GL_GLEXT_VERSION %s" % time.strftime("%Y%m%d")), + '' +] +# WGL_WGLEXT_VERSION is defined only in wglext.h +wglextVersionStrings = [ + format("#define WGL_WGLEXT_VERSION %s" % time.strftime("%Y%m%d")), + '' +] +# GLX_GLXEXT_VERSION is defined only in glxext.h +glxextVersionStrings = [ + format("#define GLX_GLXEXT_VERSION %s" % time.strftime("%Y%m%d")), + '' +] +# EGL_EGLEXT_VERSION is defined only in eglext.h +eglextVersionStrings = [ + format("#define EGL_EGLEXT_VERSION %s" % time.strftime("%Y%m%d")), + '' +] + +# Defaults for generating re-inclusion protection wrappers (or not) +protectFile = protect +protectFeature = protect +protectProto = protect + +buildList = [ + # GL API 1.2+ + extensions - GL/glext.h + CGeneratorOptions( + filename = 'drafts/GL/glext.h', + apiname = 'gl', + profile = 'compatibility', + versions = allVersions, + emitversions = gl12andLaterPat, + defaultExtensions = 'gl', # Default extensions for GL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + glExtPlatformStrings + glextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GLAPI ', + apientry = 'APIENTRY ', + apientryp = 'APIENTRYP '), + # GL compatibility profile through GL 1.3 (for libglvnd) - GL/gl.h + CGeneratorOptions( + filename = 'drafts/GL/gl.h', + apiname = 'gl', + profile = 'compatibility', + versions = allVersions, + emitversions = gl13Pat, + defaultExtensions = None, # No extensions for gl.h + addExtensions = glVndPat, + removeExtensions = None, + prefixText = prefixStrings + glPlatformStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, # gl.h always includes prototypes + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GLAPI ', + apientry = 'APIENTRY ', + apientryp = 'APIENTRYP '), + # GL core profile + extensions - GL/glcorearb.h + CGeneratorOptions( + filename = 'drafts/GL/glcorearb.h', + apiname = 'gl', + profile = 'core', + versions = allVersions, + emitversions = allVersions, + defaultExtensions = 'glcore', # Default extensions for GL core profile (only) + addExtensions = glCoreARBPat, + removeExtensions = None, + prefixText = prefixStrings + glCorearbPlatformStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GLAPI ', + apientry = 'APIENTRY ', + apientryp = 'APIENTRYP '), + # GLES 1.x API + mandatory extensions - GLES/gl.h (no function pointers) + CGeneratorOptions( + filename = 'GLES/gl.h', + apiname = 'gles1', + profile = 'common', + versions = allVersions, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = es1CorePat, # Add mandatory ES1 extensions in GLES1/gl.h + removeExtensions = None, + prefixText = prefixStrings + gles1PlatformStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_API ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 1.x extensions - GLES/glext.h + CGeneratorOptions( + filename = 'GLES/glext.h', + apiname = 'gles1', + profile = 'common', + versions = allVersions, + emitversions = noVersions, + defaultExtensions = 'gles1', # Default extensions for GLES 1 + addExtensions = None, + removeExtensions = es1CorePat, # Remove mandatory ES1 extensions in GLES1/glext.h + prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_API ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 2.0 API - GLES2/gl2.h (now with function pointers) + CGeneratorOptions( + filename = 'GLES2/gl2.h', + apiname = 'gles2', + profile = 'common', + versions = gles2onlyPat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles2PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.1 / 3.0 / 2.0 extensions - GLES2/gl2ext.h + CGeneratorOptions( + filename = 'GLES2/gl2ext.h', + apiname = 'gles2', + profile = 'common', + versions = gles2onlyPat, + emitversions = None, + defaultExtensions = 'gles2', # Default extensions for GLES 2 + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + apiEntryPrefixStrings + glextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.2 API - GLES3/gl32.h (now with function pointers) + CGeneratorOptions( + filename = 'GLES3/gl32.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through32Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.1 API - GLES3/gl31.h (now with function pointers) + CGeneratorOptions( + filename = 'GLES3/gl31.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through31Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.0 API - GLES3/gl3.h (now with function pointers) + CGeneratorOptions( + filename = 'GLES3/gl3.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through30Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLSC 2.0 API - GLSC2/glsc2.h + CGeneratorOptions( + filename = 'GLSC2/glsc2.h', + apiname = 'glsc2', + profile = 'common', + versions = gles2onlyPat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + glsc2PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLSC 2.0 extensions - GLSC2/gl2ext.h + CGeneratorOptions( + filename = 'GLSC2/glsc2ext.h', + apiname = 'glsc2', + profile = 'common', + versions = gles2onlyPat, + emitversions = None, + defaultExtensions = 'glsc2', # Default extensions for GLSC 2 + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # EGL API - EGL/egl.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = 'EGL/egl.h', + apiname = 'egl', + profile = None, + versions = allVersions, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + eglPlatformStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, + protectProtoStr = 'EGL_EGLEXT_PROTOTYPES', + apicall = 'EGLAPI ', + apientry = 'EGLAPIENTRY ', + apientryp = 'EGLAPIENTRYP '), + # EGL extensions - EGL/eglext.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = 'EGL/eglext.h', + apiname = 'egl', + profile = None, + versions = allVersions, + emitversions = None, + defaultExtensions = 'egl', # Default extensions for EGL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + eglPlatformStrings + eglextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'EGL_EGLEXT_PROTOTYPES', + apicall = 'EGLAPI ', + apientry = 'EGLAPIENTRY ', + apientryp = 'EGLAPIENTRYP '), + # GLX 1.* API - GL/glx.h + CGeneratorOptions( + filename = 'GL/glx.h', + apiname = 'glx', + profile = None, + versions = allVersions, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + # add glXPlatformStrings? + prefixText = prefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', + apicall = '', + apientry = '', + apientryp = ' *'), + # GLX 1.3+ API + extensions - GL/glxext.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = 'GL/glxext.h', + apiname = 'glx', + profile = None, + versions = allVersions, + emitversions = glx13andLaterPat, + defaultExtensions = 'glx', # Default extensions for GLX + addExtensions = None, + removeExtensions = None, + # add glXPlatformStrings? + prefixText = prefixStrings + glxextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', + apicall = '', + apientry = '', + apientryp = ' *'), + # WGL API + extensions - GL/wgl.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = 'GL/wgl.h', + apiname = 'wgl', + profile = None, + versions = allVersions, + emitversions = allVersions, + defaultExtensions = 'wgl', # Default extensions for WGL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + wglPlatformStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', + apicall = '', + apientry = 'WINAPI ', + apientryp = 'WINAPI * '), + # WGL extensions - GL/wglext.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = 'GL/wglext.h', + apiname = 'wgl', + profile = None, + versions = allVersions, + emitversions = None, + defaultExtensions = 'wgl', # Default extensions for WGL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + wglPlatformStrings + wglextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', + apicall = '', + apientry = 'WINAPI ', + apientryp = 'WINAPI * '), + # End of list + None +] + +# create error/warning & diagnostic files +if (errFilename): + errWarn = open(errFilename,'w') +else: + errWarn = sys.stderr +diag = open(diagFilename, 'w') + +def genHeaders(): + # Loop over targets, building each + generated = 0 + for genOpts in buildList: + if (genOpts == None): + break + if (target and target != genOpts.filename): + # write('*** Skipping', genOpts.filename) + continue + write('*** Building', genOpts.filename) + generated = generated + 1 + startTimer() + gen = COutputGenerator(errFile=errWarn, + warnFile=errWarn, + diagFile=diag) + reg.setGenerator(gen) + reg.apiGen(genOpts) + write('** Generated', genOpts.filename) + endTimer('Time to generate ' + genOpts.filename + ' =') + if (target and generated == 0): + write('Failed to generate target:', target) + +if (debug): + pdb.run('genHeaders()') +elif (profile): + import cProfile, pstats + cProfile.run('genHeaders()', 'profile.txt') + p = pstats.Stats('profile.txt') + p.strip_dirs().sort_stats('time').print_stats(50) +else: + genHeaders() diff --git a/StgSharp.GenerateGL/xml/genheaders.py b/StgSharp.GenerateGL/xml/genheaders.py new file mode 100644 index 00000000..909a8ef0 --- /dev/null +++ b/StgSharp.GenerateGL/xml/genheaders.py @@ -0,0 +1,577 @@ +#!/usr/bin/env python3 +# +# Copyright 2013-2025 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +import sys, time, pdb, string, cProfile +from reg import * + +# debug - start header generation in debugger +# dump - dump registry after loading +# profile - enable Python profiling +# protect - whether to use #ifndef protections +# registry - use specified XML registry instead of gl.xml +# target - string name of target header, or all targets if None +# timeit - time length of registry loading & header generation +# validate - validate return & parameter group tags against +debug = False +dump = False +profile = False +protect = True +target = None +timeit = False +validate= False +# Default input / log files +errFilename = None +diagFilename = 'diag.txt' +regFilename = 'gl.xml' + +# Simple timer functions +startTime = None +def startTimer(): + global startTime + startTime = time.process_time() +def endTimer(msg): + global startTime + endTime = time.process_time() + if (timeit): + write(msg, endTime - startTime) + startTime = None + +# Turn a list of strings into a regexp string matching exactly those strings +def makeREstring(list): + return '^(' + '|'.join(list) + ')$' + +# These are "mandatory" OpenGL ES 1 extensions, to +# be included in the core GLES/gl.h header. +es1CoreList = [ + 'GL_OES_read_format', + 'GL_OES_compressed_paletted_texture', + 'GL_OES_point_size_array', + 'GL_OES_point_sprite' +] + +# Descriptive names for various regexp patterns used to select +# versions and extensions + +allVersions = allExtensions = '.*' +noVersions = noExtensions = None +gl12andLaterPat = r'1\.[2-9]|[234]\.[0-9]' +gles2onlyPat = r'2\.[0-9]' +gles2through30Pat = r'2\.[0-9]|3\.0' +gles2through31Pat = r'2\.[0-9]|3\.[01]' +gles2through32Pat = r'2\.[0-9]|3\.[012]' +es1CorePat = makeREstring(es1CoreList) +# Extensions in old glcorearb.h but not yet tagged accordingly in gl.xml +glCoreARBPat = None +glx13andLaterPat = r'1\.[3-9]' + +# Copyright text prefixing all headers (list of strings). +prefixStrings = [ + '/*', + '** Copyright 2013-2025 The Khronos Group Inc.', + '** SPDX-' + 'License-Identifier: MIT', + '**', + '** This header is generated from the Khronos OpenGL / OpenGL ES XML', + '** API Registry. The current version of the Registry, generator scripts', + '** used to make the header, and the header can be found at', + '** https://github.com/KhronosGroup/OpenGL-Registry', + '*/', + '' +] + +# glext.h / glcorearb.h define calling conventions inline (no GL *platform.h) +glExtPlatformStrings = [ + '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', + '#ifndef WIN32_LEAN_AND_MEAN', + '#define WIN32_LEAN_AND_MEAN 1', + '#endif', + '#include ', + '#endif', + '', + '#ifndef APIENTRY', + '#define APIENTRY', + '#endif', + '#ifndef APIENTRYP', + '#define APIENTRYP APIENTRY *', + '#endif', + '#ifndef GLAPI', + '#define GLAPI extern', + '#endif', + '' +] + +glCorearbPlatformStrings = glExtPlatformStrings + [ + '/* glcorearb.h is for use with OpenGL core profile implementations.', + '** It should should be placed in the same directory as gl.h and', + '** included as .', + '**', + '** glcorearb.h includes only APIs in the latest OpenGL core profile', + '** implementation together with APIs in newer ARB extensions which ', + '** can be supported by the core profile. It does not, and never will', + '** include functionality removed from the core profile, such as', + '** fixed-function vertex and fragment processing.', + '**', + '** Do not #include both and either of or', + '** in the same source file.', + '*/', + '' +] + +# wglext.h needs Windows include +wglPlatformStrings = [ + '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', + '#define WIN32_LEAN_AND_MEAN 1', + '#include ', + '#endif', + '', +] + +# Different APIs use different *platform.h files to define calling +# conventions +gles1PlatformStrings = [ '#include ', '' ] +gles2PlatformStrings = [ '#include ', '' ] +gles3PlatformStrings = [ '#include ', '' ] +glsc2PlatformStrings = [ '#include ', '' ] +eglPlatformStrings = [ '#include ', '' ] + +# GLES headers have a small addition to calling convention headers for function pointer typedefs +apiEntryPrefixStrings = [ + '#ifndef GL_APIENTRYP', + '#define GL_APIENTRYP GL_APIENTRY*', + '#endif', + '' +] + +# GLES 2/3 core API headers use a different protection mechanism for +# prototypes, per bug 14206. +glesProtoPrefixStrings = [ + '#ifndef GL_GLES_PROTOTYPES', + '#define GL_GLES_PROTOTYPES 1', + '#endif', + '' +] + +# Insert generation date in a comment for headers not having *GLEXT_VERSION macros +genDateCommentString = [ + format('/* Generated on date %s */' % time.strftime('%Y%m%d')), + '' +] + +# GL_GLEXT_VERSION is defined only in glext.h and gl2ext.h +glextVersionStrings = [ + format('#define GL_GLEXT_VERSION %s' % time.strftime('%Y%m%d')), + '' +] +# WGL_WGLEXT_VERSION is defined only in wglext.h +wglextVersionStrings = [ + format('#define WGL_WGLEXT_VERSION %s' % time.strftime('%Y%m%d')), + '' +] +# GLX_GLXEXT_VERSION is defined only in glxext.h +glxextVersionStrings = [ + format('#define GLX_GLXEXT_VERSION %s' % time.strftime('%Y%m%d')), + '' +] +# This is a bad but functional workaround for a structural problem in the scripts +# identified in https://github.com/KhronosGroup/OpenGL-Registry/pull/186#issuecomment-416196246 +glextKHRplatformStrings = [ + '#include ', + '' +] +# EGL_EGLEXT_VERSION is defined only in eglext.h +eglextVersionStrings = [ + format('#define EGL_EGLEXT_VERSION %s' % time.strftime('%Y%m%d')), + '' +] + +# Defaults for generating re-inclusion protection wrappers (or not) +protectFile = protect +protectFeature = protect +protectProto = protect + +buildList = [ + # GL API 1.2+ + extensions - GL/glext.h + CGeneratorOptions( + filename = '../api/GL/glext.h', + apiname = 'gl', + profile = 'compatibility', + versions = allVersions, + emitversions = gl12andLaterPat, + defaultExtensions = 'gl', # Default extensions for GL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + glExtPlatformStrings + glextVersionStrings + glextKHRplatformStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GLAPI ', + apientry = 'APIENTRY ', + apientryp = 'APIENTRYP '), + # GL core profile + extensions - GL/glcorearb.h + CGeneratorOptions( + filename = '../api/GL/glcorearb.h', + apiname = 'gl', + profile = 'core', + versions = allVersions, + emitversions = allVersions, + defaultExtensions = 'glcore', # Default extensions for GL core profile (only) + addExtensions = glCoreARBPat, + removeExtensions = None, + prefixText = prefixStrings + glCorearbPlatformStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GLAPI ', + apientry = 'APIENTRY ', + apientryp = 'APIENTRYP '), + # GLES 1.x API + mandatory extensions - GLES/gl.h (no function pointers) + CGeneratorOptions( + filename = '../api/GLES/gl.h', + apiname = 'gles1', + profile = 'common', + versions = allVersions, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = es1CorePat, # Add mandatory ES1 extensions in GLES1/gl.h + removeExtensions = None, + prefixText = prefixStrings + gles1PlatformStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_API ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 1.x extensions - GLES/glext.h + CGeneratorOptions( + filename = '../api/GLES/glext.h', + apiname = 'gles1', + profile = 'common', + versions = allVersions, + emitversions = noVersions, + defaultExtensions = 'gles1', # Default extensions for GLES 1 + addExtensions = None, + removeExtensions = es1CorePat, # Remove mandatory ES1 extensions in GLES1/glext.h + prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_API ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 2.0 API - GLES2/gl2.h (now with function pointers) + CGeneratorOptions( + filename = '../api/GLES2/gl2.h', + apiname = 'gles2', + profile = 'common', + versions = gles2onlyPat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles2PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = 'nonzero', # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLES_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.1 / 3.0 / 2.0 extensions - GLES2/gl2ext.h + CGeneratorOptions( + filename = '../api/GLES2/gl2ext.h', + apiname = 'gles2', + profile = 'common', + versions = gles2onlyPat, + emitversions = None, + defaultExtensions = 'gles2', # Default extensions for GLES 2 + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + apiEntryPrefixStrings + glextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.2 API - GLES3/gl32.h (now with function pointers) + CGeneratorOptions( + filename = '../api/GLES3/gl32.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through32Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = 'nonzero', # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLES_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.1 API - GLES3/gl31.h (now with function pointers) + CGeneratorOptions( + filename = '../api/GLES3/gl31.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through31Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = 'nonzero', # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLES_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLES 3.0 API - GLES3/gl3.h (now with function pointers) + CGeneratorOptions( + filename = '../api/GLES3/gl3.h', + apiname = 'gles2', + profile = 'common', + versions = gles2through30Pat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + glesProtoPrefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = 'nonzero', # Core ES API functions are in the static link libraries + protectProtoStr = 'GL_GLES_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLSC 2.0 API - GLSC2/glsc2.h + CGeneratorOptions( + filename = '../api/GLSC2/glsc2.h', + apiname = 'glsc2', + profile = 'common', + versions = gles2onlyPat, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + glsc2PlatformStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLSC 2.0 extensions - GLSC2/gl2ext.h + CGeneratorOptions( + filename = '../api/GLSC2/glsc2ext.h', + apiname = 'glsc2', + profile = 'common', + versions = gles2onlyPat, + emitversions = None, + defaultExtensions = 'glsc2', # Default extensions for GLSC 2 + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, + genFuncPointers = False, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = False, + protectProtoStr = 'GL_GLEXT_PROTOTYPES', + apicall = 'GL_APICALL ', + apientry = 'GL_APIENTRY ', + apientryp = 'GL_APIENTRYP '), + # GLX 1.* API - GL/glx.h (experimental) + CGeneratorOptions( + filename = '../api/GL/glx.h', + apiname = 'glx', + profile = None, + versions = allVersions, + emitversions = allVersions, + defaultExtensions = None, # No default extensions + addExtensions = None, + removeExtensions = None, + # add glXPlatformStrings? + prefixText = prefixStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', + apicall = '', + apientry = '', + apientryp = ' *'), + # GLX 1.3+ API + extensions - GL/glxext.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = '../api/GL/glxext.h', + apiname = 'glx', + profile = None, + versions = allVersions, + emitversions = glx13andLaterPat, + defaultExtensions = 'glx', # Default extensions for GLX + addExtensions = None, + removeExtensions = None, + # add glXPlatformStrings? + prefixText = prefixStrings + glxextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', + apicall = '', + apientry = '', + apientryp = ' *'), + # WGL API + extensions - GL/wgl.h (experimenta; no function pointers, yet @@@) + CGeneratorOptions( + filename = '../api/GL/wgl.h', + apiname = 'wgl', + profile = None, + versions = allVersions, + emitversions = allVersions, + defaultExtensions = 'wgl', # Default extensions for WGL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + wglPlatformStrings + genDateCommentString, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', + apicall = '', + apientry = 'WINAPI ', + apientryp = 'WINAPI * '), + # WGL extensions - GL/wglext.h (no function pointers, yet @@@) + CGeneratorOptions( + filename = '../api/GL/wglext.h', + apiname = 'wgl', + profile = None, + versions = allVersions, + emitversions = None, + defaultExtensions = 'wgl', # Default extensions for WGL + addExtensions = None, + removeExtensions = None, + prefixText = prefixStrings + wglPlatformStrings + wglextVersionStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = protectFeature, + protectProto = protectProto, + protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', + apicall = '', + apientry = 'WINAPI ', + apientryp = 'WINAPI * '), + # End of list + None +] + +def genHeaders(): + # Loop over targets, building each + generated = 0 + for genOpts in buildList: + if (genOpts == None): + break + if (target and target != genOpts.filename): + # write('*** Skipping', genOpts.filename) + continue + write('*** Building', genOpts.filename) + generated = generated + 1 + startTimer() + gen = COutputGenerator(errFile=errWarn, + warnFile=errWarn, + diagFile=diag) + reg.setGenerator(gen) + reg.apiGen(genOpts) + write('** Generated', genOpts.filename) + endTimer('Time to generate ' + genOpts.filename + ' =') + if (target and generated == 0): + write('Failed to generate target:', target) + + +if __name__ == '__main__': + i = 1 + while (i < len(sys.argv)): + arg = sys.argv[i] + i = i + 1 + if (arg == '-debug'): + write('Enabling debug (-debug)', file=sys.stderr) + debug = True + elif (arg == '-dump'): + write('Enabling dump (-dump)', file=sys.stderr) + dump = True + elif (arg == '-noprotect'): + write('Disabling inclusion protection in output headers', file=sys.stderr) + protect = False + elif (arg == '-profile'): + write('Enabling profiling (-profile)', file=sys.stderr) + profile = True + elif (arg == '-registry'): + regFilename = sys.argv[i] + i = i+1 + write('Using registry ', regFilename, file=sys.stderr) + elif (arg == '-time'): + write('Enabling timing (-time)', file=sys.stderr) + timeit = True + elif (arg == '-validate'): + write('Enabling group validation (-validate)', file=sys.stderr) + validate = True + elif (arg[0:1] == '-'): + write('Unrecognized argument:', arg, file=sys.stderr) + exit(1) + else: + target = arg + write('Using target', target, file=sys.stderr) + + # Load & parse registry + reg = Registry() + + startTimer() + tree = etree.parse(regFilename) + endTimer('Time to make ElementTree =') + + startTimer() + reg.loadElementTree(tree) + endTimer('Time to parse ElementTree =') + + if (validate): + reg.validateGroups() + + if (dump): + write('***************************************') + write('Performing Registry dump to regdump.txt') + write('***************************************') + reg.dumpReg(filehandle = open('regdump.txt','w')) + + # create error/warning & diagnostic files + if (errFilename): + errWarn = open(errFilename,'w') + else: + errWarn = sys.stderr + diag = open(diagFilename, 'w') + + if (debug): + pdb.run('genHeaders()') + elif (profile): + import cProfile, pstats + cProfile.run('genHeaders()', 'profile.txt') + p = pstats.Stats('profile.txt') + p.strip_dirs().sort_stats('time').print_stats(50) + else: + genHeaders() diff --git a/StgSharp.GenerateGL/xml/gl.xml b/StgSharp.GenerateGL/xml/gl.xml new file mode 100644 index 00000000..aabe69ea --- /dev/null +++ b/StgSharp.GenerateGL/xml/gl.xml @@ -0,0 +1,47736 @@ + + + +Copyright 2013-2025 The Khronos Group Inc. +SPDX-License-Identifier: Apache-2.0 + +This file, gl.xml, is the OpenGL and OpenGL API Registry. The canonical +version of the registry, together with documentation, schema, and Python +generator scripts used to generate C header files for OpenGL and OpenGL ES, +can always be found in the Khronos Registry at +https://github.com/KhronosGroup/OpenGL-Registry + + + + + + #include <KHR/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; + typedef khronos_intptr_t GLintptr; + typedef khronos_intptr_t GLintptrARB; + typedef khronos_ssize_t GLsizeiptr; + typedef khronos_ssize_t GLsizeiptrARB; + typedef khronos_int64_t GLint64; + typedef khronos_int64_t GLint64EXT; + typedef khronos_uint64_t GLuint64; + typedef khronos_uint64_t GLuint64EXT; + typedef struct __GLsync *GLsync; + struct _cl_context; + struct _cl_event; + typedef void ( *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + typedef void ( *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + typedef void ( *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + + + typedef void ( *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); + typedef unsigned short GLhalfNV; + typedef GLintptr GLvdpauSurfaceNV; + typedef void ( *GLVULKANPROCNV)(void); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + void glAccum + GLenum op + GLfloat value + + + + void glAccumxOES + GLenum op + GLfixed value + + + void glActiveProgramEXT + GLuint program + + + void glActiveShaderProgram + GLuint pipeline + GLuint program + + + void glActiveShaderProgramEXT + GLuint pipeline + GLuint program + + + void glActiveStencilFaceEXT + GLenum face + + + + void glActiveTexture + GLenum texture + + + + void glActiveTextureARB + GLenum texture + + + + + void glActiveVaryingNV + GLuint program + const GLchar *name + + + void glAlphaFragmentOp1ATI + GLenum op + GLuint dst + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + + + void glAlphaFragmentOp2ATI + GLenum op + GLuint dst + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + GLuint arg2 + GLuint arg2Rep + GLuint arg2Mod + + + void glAlphaFragmentOp3ATI + GLenum op + GLuint dst + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + GLuint arg2 + GLuint arg2Rep + GLuint arg2Mod + GLuint arg3 + GLuint arg3Rep + GLuint arg3Mod + + + void glAlphaFunc + GLenum func + GLfloat ref + + + + void glAlphaFuncQCOM + GLenum func + GLclampf ref + + + void glAlphaFuncx + GLenum func + GLfixed ref + + + void glAlphaFuncxOES + GLenum func + GLfixed ref + + + void glAlphaToCoverageDitherControlNV + GLenum mode + + + void glApplyFramebufferAttachmentCMAAINTEL + + + void glApplyTextureEXT + GLenum mode + + + GLboolean glAcquireKeyedMutexWin32EXT + GLuint memory + GLuint64 key + GLuint timeout + + + GLboolean glAreProgramsResidentNV + GLsizei n + const GLuint *programs + GLboolean *residences + + + + GLboolean glAreTexturesResident + GLsizei n + const GLuint *textures + GLboolean *residences + + + + GLboolean glAreTexturesResidentEXT + GLsizei n + const GLuint *textures + GLboolean *residences + + + + void glArrayElement + GLint i + + + void glArrayElementEXT + GLint i + + + + void glArrayObjectATI + GLenum array + GLint size + GLenum type + GLsizei stride + GLuint buffer + GLuint offset + + + GLuint glAsyncCopyBufferSubDataNVX + GLsizei waitSemaphoreCount + const GLuint *waitSemaphoreArray + const GLuint64 *fenceValueArray + GLuint readGpu + GLbitfield writeGpuMask + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + GLsizei signalSemaphoreCount + const GLuint *signalSemaphoreArray + const GLuint64 *signalValueArray + + + GLuint glAsyncCopyImageSubDataNVX + GLsizei waitSemaphoreCount + const GLuint *waitSemaphoreArray + const GLuint64 *waitValueArray + GLuint srcGpu + GLbitfield dstGpuMask + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + GLsizei signalSemaphoreCount + const GLuint *signalSemaphoreArray + const GLuint64 *signalValueArray + + + void glAsyncMarkerSGIX + GLuint marker + + + void glAttachObjectARB + GLhandleARB containerObj + GLhandleARB obj + + + + void glAttachShader + GLuint program + GLuint shader + + + void glBegin + GLenum mode + + + + void glBeginConditionalRender + GLuint id + GLenum mode + + + void glBeginConditionalRenderNV + GLuint id + GLenum mode + + + + + void glBeginConditionalRenderNVX + GLuint id + + + void glBeginFragmentShaderATI + + + void glBeginOcclusionQueryNV + GLuint id + + + void glBeginPerfMonitorAMD + GLuint monitor + + + void glBeginPerfQueryINTEL + GLuint queryHandle + + + void glBeginQuery + GLenum target + GLuint id + + + + void glBeginQueryARB + GLenum target + GLuint id + + + + void glBeginQueryEXT + GLenum target + GLuint id + + + void glBeginQueryIndexed + GLenum target + GLuint index + GLuint id + + + void glBeginTransformFeedback + GLenum primitiveMode + + + + void glBeginTransformFeedbackEXT + GLenum primitiveMode + + + + void glBeginTransformFeedbackNV + GLenum primitiveMode + + + + void glBeginVertexShaderEXT + + + void glBeginVideoCaptureNV + GLuint video_capture_slot + + + void glBindAttribLocation + GLuint program + GLuint index + const GLchar *name + + + void glBindAttribLocationARB + GLhandleARB programObj + GLuint index + const GLcharARB *name + + + + void glBindBuffer + GLenum target + GLuint buffer + + + void glBindBufferARB + GLenum target + GLuint buffer + + + + void glBindBufferBase + GLenum target + GLuint index + GLuint buffer + + + + void glBindBufferBaseEXT + GLenum target + GLuint index + GLuint buffer + + + + void glBindBufferBaseNV + GLenum target + GLuint index + GLuint buffer + + + + void glBindBufferOffsetEXT + GLenum target + GLuint index + GLuint buffer + GLintptr offset + + + void glBindBufferOffsetNV + GLenum target + GLuint index + GLuint buffer + GLintptr offset + + + + void glBindBufferRange + GLenum target + GLuint index + GLuint buffer + GLintptr offset + GLsizeiptr size + + + + void glBindBufferRangeEXT + GLenum target + GLuint index + GLuint buffer + GLintptr offset + GLsizeiptr size + + + + void glBindBufferRangeNV + GLenum target + GLuint index + GLuint buffer + GLintptr offset + GLsizeiptr size + + + + void glBindBuffersBase + GLenum target + GLuint first + GLsizei count + const GLuint *buffers + + + void glBindBuffersRange + GLenum target + GLuint first + GLsizei count + const GLuint *buffers + const GLintptr *offsets + const GLsizeiptr *sizes + + + void glBindFragDataLocation + GLuint program + GLuint color + const GLchar *name + + + void glBindFragDataLocationEXT + GLuint program + GLuint color + const GLchar *name + + + + void glBindFragDataLocationIndexed + GLuint program + GLuint colorNumber + GLuint index + const GLchar *name + + + void glBindFragDataLocationIndexedEXT + GLuint program + GLuint colorNumber + GLuint index + const GLchar *name + + + + void glBindFragmentShaderATI + GLuint id + + + void glBindFramebuffer + GLenum target + GLuint framebuffer + + + + void glBindFramebufferEXT + GLenum target + GLuint framebuffer + + + + void glBindFramebufferOES + GLenum target + GLuint framebuffer + + + void glBindImageTexture + GLuint unit + GLuint texture + GLint level + GLboolean layered + GLint layer + GLenum access + GLenum format + + + void glBindImageTextureEXT + GLuint index + GLuint texture + GLint level + GLboolean layered + GLint layer + GLenum access + GLint format + + + void glBindImageTextures + GLuint first + GLsizei count + const GLuint *textures + + + GLuint glBindLightParameterEXT + GLenum light + GLenum value + + + GLuint glBindMaterialParameterEXT + GLenum face + GLenum value + + + void glBindMultiTextureEXT + GLenum texunit + GLenum target + GLuint texture + + + GLuint glBindParameterEXT + GLenum value + + + void glBindProgramARB + GLenum target + GLuint program + + + + void glBindProgramNV + GLenum target + GLuint id + + + + + void glBindProgramPipeline + GLuint pipeline + + + void glBindProgramPipelineEXT + GLuint pipeline + + + void glBindRenderbuffer + GLenum target + GLuint renderbuffer + + + + void glBindRenderbufferEXT + GLenum target + GLuint renderbuffer + + + + void glBindRenderbufferOES + GLenum target + GLuint renderbuffer + + + void glBindSampler + GLuint unit + GLuint sampler + + + void glBindSamplers + GLuint first + GLsizei count + const GLuint *samplers + + + void glBindShadingRateImageNV + GLuint texture + + + GLuint glBindTexGenParameterEXT + GLenum unit + GLenum coord + GLenum value + + + void glBindTexture + GLenum target + GLuint texture + + + + void glBindTextureEXT + GLenum target + GLuint texture + + + + + void glBindTextureUnit + GLuint unit + GLuint texture + + + GLuint glBindTextureUnitParameterEXT + GLenum unit + GLenum value + + + void glBindTextures + GLuint first + GLsizei count + const GLuint *textures + + + void glBindTransformFeedback + GLenum target + GLuint id + + + void glBindTransformFeedbackNV + GLenum target + GLuint id + + + void glBindVertexArray + GLuint array + + + + void glBindVertexArrayAPPLE + GLuint array + + + void glBindVertexArrayOES + GLuint array + + + + void glBindVertexBuffer + GLuint bindingindex + GLuint buffer + GLintptr offset + GLsizei stride + + + void glBindVertexBuffers + GLuint first + GLsizei count + const GLuint *buffers + const GLintptr *offsets + const GLsizei *strides + + + void glBindVertexShaderEXT + GLuint id + + + void glBindVideoCaptureStreamBufferNV + GLuint video_capture_slot + GLuint stream + GLenum frame_region + GLintptrARB offset + + + void glBindVideoCaptureStreamTextureNV + GLuint video_capture_slot + GLuint stream + GLenum frame_region + GLenum target + GLuint texture + + + void glBinormal3bEXT + GLbyte bx + GLbyte by + GLbyte bz + + + + void glBinormal3bvEXT + const GLbyte *v + + + void glBinormal3dEXT + GLdouble bx + GLdouble by + GLdouble bz + + + + void glBinormal3dvEXT + const GLdouble *v + + + void glBinormal3fEXT + GLfloat bx + GLfloat by + GLfloat bz + + + + void glBinormal3fvEXT + const GLfloat *v + + + void glBinormal3iEXT + GLint bx + GLint by + GLint bz + + + + void glBinormal3ivEXT + const GLint *v + + + void glBinormal3sEXT + GLshort bx + GLshort by + GLshort bz + + + + void glBinormal3svEXT + const GLshort *v + + + void glBinormalPointerEXT + GLenum type + GLsizei stride + const void *pointer + + + void glBitmap + GLsizei width + GLsizei height + GLfloat xorig + GLfloat yorig + GLfloat xmove + GLfloat ymove + const GLubyte *bitmap + + + + + void glBitmapxOES + GLsizei width + GLsizei height + GLfixed xorig + GLfixed yorig + GLfixed xmove + GLfixed ymove + const GLubyte *bitmap + + + void glBlendBarrier + + + void glBlendBarrierKHR + + + + void glBlendBarrierNV + + + + void glBlendColor + GLfloat red + GLfloat green + GLfloat blue + GLfloat alpha + + + + void glBlendColorEXT + GLfloat red + GLfloat green + GLfloat blue + GLfloat alpha + + + + + void glBlendColorxOES + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glBlendEquation + GLenum mode + + + + void glBlendEquationEXT + GLenum mode + + + + + void glBlendEquationIndexedAMD + GLuint buf + GLenum mode + + + + void glBlendEquationOES + GLenum mode + + + void glBlendEquationSeparate + GLenum modeRGB + GLenum modeAlpha + + + + void glBlendEquationSeparateEXT + GLenum modeRGB + GLenum modeAlpha + + + + + void glBlendEquationSeparateIndexedAMD + GLuint buf + GLenum modeRGB + GLenum modeAlpha + + + + void glBlendEquationSeparateOES + GLenum modeRGB + GLenum modeAlpha + + + void glBlendEquationSeparatei + GLuint buf + GLenum modeRGB + GLenum modeAlpha + + + void glBlendEquationSeparateiARB + GLuint buf + GLenum modeRGB + GLenum modeAlpha + + + + void glBlendEquationSeparateiEXT + GLuint buf + GLenum modeRGB + GLenum modeAlpha + + + + void glBlendEquationSeparateiOES + GLuint buf + GLenum modeRGB + GLenum modeAlpha + + + + void glBlendEquationi + GLuint buf + GLenum mode + + + void glBlendEquationiARB + GLuint buf + GLenum mode + + + + void glBlendEquationiEXT + GLuint buf + GLenum mode + + + + void glBlendEquationiOES + GLuint buf + GLenum mode + + + + void glBlendFunc + GLenum sfactor + GLenum dfactor + + + + void glBlendFuncIndexedAMD + GLuint buf + GLenum src + GLenum dst + + + + void glBlendFuncSeparate + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha + + + + void glBlendFuncSeparateEXT + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha + + + + + void glBlendFuncSeparateINGR + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha + + + + + void glBlendFuncSeparateIndexedAMD + GLuint buf + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + + void glBlendFuncSeparateOES + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + void glBlendFuncSeparatei + GLuint buf + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + void glBlendFuncSeparateiARB + GLuint buf + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + + void glBlendFuncSeparateiEXT + GLuint buf + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + + void glBlendFuncSeparateiOES + GLuint buf + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha + + + + void glBlendFunci + GLuint buf + GLenum src + GLenum dst + + + void glBlendFunciARB + GLuint buf + GLenum src + GLenum dst + + + + void glBlendFunciEXT + GLuint buf + GLenum src + GLenum dst + + + + void glBlendFunciOES + GLuint buf + GLenum src + GLenum dst + + + + void glBlendParameteriNV + GLenum pname + GLint value + + + void glBlitFramebuffer + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + + void glBlitFramebufferANGLE + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + void glBlitFramebufferEXT + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + + + void glBlitFramebufferLayerEXT + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint srcLayer + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLint dstLayer + GLbitfield mask + GLenum filter + + + void glBlitFramebufferLayersEXT + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + void glBlitFramebufferNV + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + + void glBlitNamedFramebuffer + GLuint readFramebuffer + GLuint drawFramebuffer + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + void glBufferAddressRangeNV + GLenum pname + GLuint index + GLuint64EXT address + GLsizeiptr length + + + void glBufferAttachMemoryNV + GLenum target + GLuint memory + GLuint64 offset + + + void glBufferData + GLenum target + GLsizeiptr size + const void *data + GLenum usage + + + void glBufferDataARB + GLenum target + GLsizeiptrARB size + const void *data + GLenum usage + + + + void glBufferPageCommitmentARB + GLenum target + GLintptr offset + GLsizeiptr size + GLboolean commit + + + void glBufferPageCommitmentMemNV + GLenum target + GLintptr offset + GLsizeiptr size + GLuint memory + GLuint64 memOffset + GLboolean commit + + + void glBufferParameteriAPPLE + GLenum target + GLenum pname + GLint param + + + void glBufferStorage + GLenum target + GLsizeiptr size + const void *data + GLbitfield flags + + + void glBufferStorageEXT + GLenum target + GLsizeiptr size + const void *data + GLbitfield flags + + + + void glBufferStorageExternalEXT + GLenum target + GLintptr offset + GLsizeiptr size + GLeglClientBufferEXT clientBuffer + GLbitfield flags + + + void glBufferStorageMemEXT + GLenum target + GLsizeiptr size + GLuint memory + GLuint64 offset + + + void glBufferSubData + GLenum target + GLintptr offset + GLsizeiptr size + const void *data + + + void glBufferSubDataARB + GLenum target + GLintptrARB offset + GLsizeiptrARB size + const void *data + + + + void glCallCommandListNV + GLuint list + + + void glCallList + GLuint list + + + + void glCallLists + GLsizei n + GLenum type + const void *lists + + + + GLenum glCheckFramebufferStatus + GLenum target + + + + GLenum glCheckFramebufferStatusEXT + GLenum target + + + + + GLenum glCheckFramebufferStatusOES + GLenum target + + + GLenum glCheckNamedFramebufferStatus + GLuint framebuffer + GLenum target + + + GLenum glCheckNamedFramebufferStatusEXT + GLuint framebuffer + GLenum target + + + void glClampColor + GLenum target + GLenum clamp + + + + void glClampColorARB + GLenum target + GLenum clamp + + + + + void glClear + GLbitfield mask + + + + void glClearAccum + GLfloat red + GLfloat green + GLfloat blue + GLfloat alpha + + + + void glClearAccumxOES + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glClearBufferData + GLenum target + GLenum internalformat + GLenum format + GLenum type + const void *data + + + void glClearBufferSubData + GLenum target + GLenum internalformat + GLintptr offset + GLsizeiptr size + GLenum format + GLenum type + const void *data + + + void glClearBufferfi + GLenum buffer + GLint drawbuffer + GLfloat depth + GLint stencil + + + + void glClearBufferfv + GLenum buffer + GLint drawbuffer + const GLfloat *value + + + + void glClearBufferiv + GLenum buffer + GLint drawbuffer + const GLint *value + + + + void glClearBufferuiv + GLenum buffer + GLint drawbuffer + const GLuint *value + + + + void glClearColor + GLfloat red + GLfloat green + GLfloat blue + GLfloat alpha + + + + void glClearColorIiEXT + GLint red + GLint green + GLint blue + GLint alpha + + + + void glClearColorIuiEXT + GLuint red + GLuint green + GLuint blue + GLuint alpha + + + + void glClearColorx + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glClearColorxOES + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glClearDepth + GLdouble depth + + + + void glClearDepthdNV + GLdouble depth + + + + void glClearDepthf + GLfloat d + + + void glClearDepthfOES + GLclampf depth + + + + + void glClearDepthx + GLfixed depth + + + void glClearDepthxOES + GLfixed depth + + + void glClearIndex + GLfloat c + + + + void glClearNamedBufferData + GLuint buffer + GLenum internalformat + GLenum format + GLenum type + const void *data + + + void glClearNamedBufferDataEXT + GLuint buffer + GLenum internalformat + GLenum format + GLenum type + const void *data + + + void glClearNamedBufferSubData + GLuint buffer + GLenum internalformat + GLintptr offset + GLsizeiptr size + GLenum format + GLenum type + const void *data + + + void glClearNamedBufferSubDataEXT + GLuint buffer + GLenum internalformat + GLsizeiptr offset + GLsizeiptr size + GLenum format + GLenum type + const void *data + + + void glClearNamedFramebufferfi + GLuint framebuffer + GLenum buffer + GLint drawbuffer + GLfloat depth + GLint stencil + + + void glClearNamedFramebufferfv + GLuint framebuffer + GLenum buffer + GLint drawbuffer + const GLfloat *value + + + void glClearNamedFramebufferiv + GLuint framebuffer + GLenum buffer + GLint drawbuffer + const GLint *value + + + void glClearNamedFramebufferuiv + GLuint framebuffer + GLenum buffer + GLint drawbuffer + const GLuint *value + + + void glClearPixelLocalStorageuiEXT + GLsizei offset + GLsizei n + const GLuint *values + + + void glClearStencil + GLint s + + + + void glClearTexImage + GLuint texture + GLint level + GLenum format + GLenum type + const void *data + + + void glClearTexImageEXT + GLuint texture + GLint level + GLenum format + GLenum type + const void *data + + + + void glClearTexSubImage + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *data + + + void glClearTexSubImageEXT + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *data + + + + void glClientActiveTexture + GLenum texture + + + void glClientActiveTextureARB + GLenum texture + + + + void glClientActiveVertexStreamATI + GLenum stream + + + void glClientAttribDefaultEXT + GLbitfield mask + + + void glClientWaitSemaphoreui64NVX + GLsizei fenceObjectCount + const GLuint *semaphoreArray + const GLuint64 *fenceValueArray + + + GLenum glClientWaitSync + GLsync sync + GLbitfield flags + GLuint64 timeout + + + GLenum glClientWaitSyncAPPLE + GLsync sync + GLbitfield flags + GLuint64 timeout + + + + void glClipControl + GLenum origin + GLenum depth + + + void glClipControlEXT + GLenum origin + GLenum depth + + + + void glClipPlane + GLenum plane + const GLdouble *equation + + + + void glClipPlanef + GLenum p + const GLfloat *eqn + + + void glClipPlanefIMG + GLenum p + const GLfloat *eqn + + + void glClipPlanefOES + GLenum plane + const GLfloat *equation + + + + void glClipPlanex + GLenum plane + const GLfixed *equation + + + void glClipPlanexIMG + GLenum p + const GLfixed *eqn + + + void glClipPlanexOES + GLenum plane + const GLfixed *equation + + + void glColor3b + GLbyte red + GLbyte green + GLbyte blue + + + + void glColor3bv + const GLbyte *v + + + + void glColor3d + GLdouble red + GLdouble green + GLdouble blue + + + + void glColor3dv + const GLdouble *v + + + + void glColor3f + GLfloat red + GLfloat green + GLfloat blue + + + + void glColor3fVertex3fSUN + GLfloat r + GLfloat g + GLfloat b + GLfloat x + GLfloat y + GLfloat z + + + void glColor3fVertex3fvSUN + const GLfloat *c + const GLfloat *v + + + void glColor3fv + const GLfloat *v + + + + void glColor3hNV + GLhalfNV red + GLhalfNV green + GLhalfNV blue + + + + void glColor3hvNV + const GLhalfNV *v + + + + void glColor3i + GLint red + GLint green + GLint blue + + + + void glColor3iv + const GLint *v + + + + void glColor3s + GLshort red + GLshort green + GLshort blue + + + + void glColor3sv + const GLshort *v + + + + void glColor3ub + GLubyte red + GLubyte green + GLubyte blue + + + + void glColor3ubv + const GLubyte *v + + + + void glColor3ui + GLuint red + GLuint green + GLuint blue + + + + void glColor3uiv + const GLuint *v + + + + void glColor3us + GLushort red + GLushort green + GLushort blue + + + + void glColor3usv + const GLushort *v + + + + void glColor3xOES + GLfixed red + GLfixed green + GLfixed blue + + + void glColor3xvOES + const GLfixed *components + + + void glColor4b + GLbyte red + GLbyte green + GLbyte blue + GLbyte alpha + + + + void glColor4bv + const GLbyte *v + + + + void glColor4d + GLdouble red + GLdouble green + GLdouble blue + GLdouble alpha + + + + void glColor4dv + const GLdouble *v + + + + void glColor4f + GLfloat red + GLfloat green + GLfloat blue + GLfloat alpha + + + + void glColor4fNormal3fVertex3fSUN + GLfloat r + GLfloat g + GLfloat b + GLfloat a + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glColor4fNormal3fVertex3fvSUN + const GLfloat *c + const GLfloat *n + const GLfloat *v + + + void glColor4fv + const GLfloat *v + + + + void glColor4hNV + GLhalfNV red + GLhalfNV green + GLhalfNV blue + GLhalfNV alpha + + + + void glColor4hvNV + const GLhalfNV *v + + + + void glColor4i + GLint red + GLint green + GLint blue + GLint alpha + + + + void glColor4iv + const GLint *v + + + + void glColor4s + GLshort red + GLshort green + GLshort blue + GLshort alpha + + + + void glColor4sv + const GLshort *v + + + + void glColor4ub + GLubyte red + GLubyte green + GLubyte blue + GLubyte alpha + + + + void glColor4ubVertex2fSUN + GLubyte r + GLubyte g + GLubyte b + GLubyte a + GLfloat x + GLfloat y + + + void glColor4ubVertex2fvSUN + const GLubyte *c + const GLfloat *v + + + void glColor4ubVertex3fSUN + GLubyte r + GLubyte g + GLubyte b + GLubyte a + GLfloat x + GLfloat y + GLfloat z + + + void glColor4ubVertex3fvSUN + const GLubyte *c + const GLfloat *v + + + void glColor4ubv + const GLubyte *v + + + + void glColor4ui + GLuint red + GLuint green + GLuint blue + GLuint alpha + + + + void glColor4uiv + const GLuint *v + + + + void glColor4us + GLushort red + GLushort green + GLushort blue + GLushort alpha + + + + void glColor4usv + const GLushort *v + + + + void glColor4x + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glColor4xOES + GLfixed red + GLfixed green + GLfixed blue + GLfixed alpha + + + void glColor4xvOES + const GLfixed *components + + + void glColorFormatNV + GLint size + GLenum type + GLsizei stride + + + void glColorFragmentOp1ATI + GLenum op + GLuint dst + GLuint dstMask + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + + + void glColorFragmentOp2ATI + GLenum op + GLuint dst + GLuint dstMask + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + GLuint arg2 + GLuint arg2Rep + GLuint arg2Mod + + + void glColorFragmentOp3ATI + GLenum op + GLuint dst + GLuint dstMask + GLuint dstMod + GLuint arg1 + GLuint arg1Rep + GLuint arg1Mod + GLuint arg2 + GLuint arg2Rep + GLuint arg2Mod + GLuint arg3 + GLuint arg3Rep + GLuint arg3Mod + + + void glColorMask + GLboolean red + GLboolean green + GLboolean blue + GLboolean alpha + + + + void glColorMaskIndexedEXT + GLuint index + GLboolean r + GLboolean g + GLboolean b + GLboolean a + + + + + void glColorMaski + GLuint index + GLboolean r + GLboolean g + GLboolean b + GLboolean a + + + void glColorMaskiEXT + GLuint index + GLboolean r + GLboolean g + GLboolean b + GLboolean a + + + + void glColorMaskiOES + GLuint index + GLboolean r + GLboolean g + GLboolean b + GLboolean a + + + + void glColorMaterial + GLenum face + GLenum mode + + + + void glColorP3ui + GLenum type + GLuint color + + + void glColorP3uiv + GLenum type + const GLuint *color + + + void glColorP4ui + GLenum type + GLuint color + + + void glColorP4uiv + GLenum type + const GLuint *color + + + void glColorPointer + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glColorPointerEXT + GLint size + GLenum type + GLsizei stride + GLsizei count + const void *pointer + + + void glColorPointerListIBM + GLint size + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glColorPointervINTEL + GLint size + GLenum type + const void **pointer + + + void glColorSubTable + GLenum target + GLsizei start + GLsizei count + GLenum format + GLenum type + const void *data + + + + + void glColorSubTableEXT + GLenum target + GLsizei start + GLsizei count + GLenum format + GLenum type + const void *data + + + + void glColorTable + GLenum target + GLenum internalformat + GLsizei width + GLenum format + GLenum type + const void *table + + + + + void glColorTableEXT + GLenum target + GLenum internalFormat + GLsizei width + GLenum format + GLenum type + const void *table + + + + void glColorTableParameterfv + GLenum target + GLenum pname + const GLfloat *params + + + + void glColorTableParameterfvSGI + GLenum target + GLenum pname + const GLfloat *params + + + + + void glColorTableParameteriv + GLenum target + GLenum pname + const GLint *params + + + + void glColorTableParameterivSGI + GLenum target + GLenum pname + const GLint *params + + + + + void glColorTableSGI + GLenum target + GLenum internalformat + GLsizei width + GLenum format + GLenum type + const void *table + + + + + void glCombinerInputNV + GLenum stage + GLenum portion + GLenum variable + GLenum input + GLenum mapping + GLenum componentUsage + + + + void glCombinerOutputNV + GLenum stage + GLenum portion + GLenum abOutput + GLenum cdOutput + GLenum sumOutput + GLenum scale + GLenum bias + GLboolean abDotProduct + GLboolean cdDotProduct + GLboolean muxSum + + + + void glCombinerParameterfNV + GLenum pname + GLfloat param + + + + void glCombinerParameterfvNV + GLenum pname + const GLfloat *params + + + + void glCombinerParameteriNV + GLenum pname + GLint param + + + + void glCombinerParameterivNV + GLenum pname + const GLint *params + + + + void glCombinerStageParameterfvNV + GLenum stage + GLenum pname + const GLfloat *params + + + void glCommandListSegmentsNV + GLuint list + GLuint segments + + + void glCompileCommandListNV + GLuint list + + + void glCompileShader + GLuint shader + + + void glCompileShaderARB + GLhandleARB shaderObj + + + + void glCompileShaderIncludeARB + GLuint shader + GLsizei count + const GLchar *const*path + const GLint *length + + + void glCompressedMultiTexImage1DEXT + GLenum texunit + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedMultiTexImage2DEXT + GLenum texunit + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedMultiTexImage3DEXT + GLenum texunit + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedMultiTexSubImage1DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLsizei imageSize + const void *bits + + + void glCompressedMultiTexSubImage2DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLsizei imageSize + const void *bits + + + void glCompressedMultiTexSubImage3DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *bits + + + void glCompressedTexImage1D + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage1DARB + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage2D + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage2DARB + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage3D + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage3DARB + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLsizei imageSize + const void *data + + + + + void glCompressedTexImage3DOES + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLsizei imageSize + const void *data + + + void glCompressedTexSubImage1D + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage1DARB + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage2D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage2DARB + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage3D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage3DARB + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *data + + + + + void glCompressedTexSubImage3DOES + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *data + + + void glCompressedTextureImage1DEXT + GLuint texture + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedTextureImage2DEXT + GLuint texture + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedTextureImage3DEXT + GLuint texture + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLsizei imageSize + const void *bits + + + void glCompressedTextureSubImage1D + GLuint texture + GLint level + GLint xoffset + GLsizei width + GLenum format + GLsizei imageSize + const void *data + + + void glCompressedTextureSubImage1DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLsizei imageSize + const void *bits + + + void glCompressedTextureSubImage2D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLsizei imageSize + const void *data + + + void glCompressedTextureSubImage2DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLsizei imageSize + const void *bits + + + void glCompressedTextureSubImage3D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *data + + + void glCompressedTextureSubImage3DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLsizei imageSize + const void *bits + + + void glConservativeRasterParameterfNV + GLenum pname + GLfloat value + + + void glConservativeRasterParameteriNV + GLenum pname + GLint param + + + void glConvolutionFilter1D + GLenum target + GLenum internalformat + GLsizei width + GLenum format + GLenum type + const void *image + + + + + void glConvolutionFilter1DEXT + GLenum target + GLenum internalformat + GLsizei width + GLenum format + GLenum type + const void *image + + + + + void glConvolutionFilter2D + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *image + + + + + void glConvolutionFilter2DEXT + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *image + + + + + void glConvolutionParameterf + GLenum target + GLenum pname + GLfloat params + + + + void glConvolutionParameterfEXT + GLenum target + GLenum pname + GLfloat params + + + + + void glConvolutionParameterfv + GLenum target + GLenum pname + const GLfloat *params + + + + void glConvolutionParameterfvEXT + GLenum target + GLenum pname + const GLfloat *params + + + + + void glConvolutionParameteri + GLenum target + GLenum pname + GLint params + + + + void glConvolutionParameteriEXT + GLenum target + GLenum pname + GLint params + + + + + void glConvolutionParameteriv + GLenum target + GLenum pname + const GLint *params + + + + void glConvolutionParameterivEXT + GLenum target + GLenum pname + const GLint *params + + + + + void glConvolutionParameterxOES + GLenum target + GLenum pname + GLfixed param + + + void glConvolutionParameterxvOES + GLenum target + GLenum pname + const GLfixed *params + + + void glCopyBufferSubData + GLenum readTarget + GLenum writeTarget + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + + void glCopyBufferSubDataNV + GLenum readTarget + GLenum writeTarget + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + + void glCopyColorSubTable + GLenum target + GLsizei start + GLint x + GLint y + GLsizei width + + + + void glCopyColorSubTableEXT + GLenum target + GLsizei start + GLint x + GLint y + GLsizei width + + + + void glCopyColorTable + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + + + + void glCopyColorTableSGI + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + + + + + void glCopyConvolutionFilter1D + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + + + + void glCopyConvolutionFilter1DEXT + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + + + + + void glCopyConvolutionFilter2D + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + + + + void glCopyConvolutionFilter2DEXT + GLenum target + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + + + + + void glCopyImageSubData + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + + + void glCopyImageSubDataEXT + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + + + + void glCopyImageSubDataNV + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei width + GLsizei height + GLsizei depth + + + + void glCopyImageSubDataOES + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + + + + void glCopyMultiTexImage1DEXT + GLenum texunit + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLint border + + + void glCopyMultiTexImage2DEXT + GLenum texunit + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + GLint border + + + void glCopyMultiTexSubImage1DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint x + GLint y + GLsizei width + + + void glCopyMultiTexSubImage2DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyMultiTexSubImage3DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyNamedBufferSubData + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glCopyPathNV + GLuint resultPath + GLuint srcPath + + + void glCopyPixels + GLint x + GLint y + GLsizei width + GLsizei height + GLenum type + + + + void glCopyTexImage1D + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLint border + + + + void glCopyTexImage1DEXT + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLint border + + + + + void glCopyTexImage2D + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + GLint border + + + + void glCopyTexImage2DEXT + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + GLint border + + + + + void glCopyTexSubImage1D + GLenum target + GLint level + GLint xoffset + GLint x + GLint y + GLsizei width + + + + void glCopyTexSubImage1DEXT + GLenum target + GLint level + GLint xoffset + GLint x + GLint y + GLsizei width + + + + + void glCopyTexSubImage2D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + + void glCopyTexSubImage2DEXT + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + + + void glCopyTexSubImage3D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + + void glCopyTexSubImage3DEXT + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + + + void glCopyTexSubImage3DOES + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyTextureImage1DEXT + GLuint texture + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLint border + + + void glCopyTextureImage2DEXT + GLuint texture + GLenum target + GLint level + GLenum internalformat + GLint x + GLint y + GLsizei width + GLsizei height + GLint border + + + void glCopyTextureLevelsAPPLE + GLuint destinationTexture + GLuint sourceTexture + GLint sourceBaseLevel + GLsizei sourceLevelCount + + + void glCopyTextureSubImage1D + GLuint texture + GLint level + GLint xoffset + GLint x + GLint y + GLsizei width + + + void glCopyTextureSubImage1DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint x + GLint y + GLsizei width + + + void glCopyTextureSubImage2D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyTextureSubImage2DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyTextureSubImage3D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCopyTextureSubImage3DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint x + GLint y + GLsizei width + GLsizei height + + + void glCoverFillPathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLenum coverMode + GLenum transformType + const GLfloat *transformValues + + + void glCoverFillPathNV + GLuint path + GLenum coverMode + + + void glCoverStrokePathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLenum coverMode + GLenum transformType + const GLfloat *transformValues + + + void glCoverStrokePathNV + GLuint path + GLenum coverMode + + + void glCoverageMaskNV + GLboolean mask + + + void glCoverageModulationNV + GLenum components + + + void glCoverageModulationTableNV + GLsizei n + const GLfloat *v + + + void glCoverageOperationNV + GLenum operation + + + void glCreateBuffers + GLsizei n + GLuint *buffers + + + void glCreateCommandListsNV + GLsizei n + GLuint *lists + + + void glCreateFramebuffers + GLsizei n + GLuint *framebuffers + + + void glCreateMemoryObjectsEXT + GLsizei n + GLuint *memoryObjects + + + void glCreatePerfQueryINTEL + GLuint queryId + GLuint *queryHandle + + + GLuint glCreateProgram + + + GLhandleARB glCreateProgramObjectARB + + + + void glCreateProgramPipelines + GLsizei n + GLuint *pipelines + + + GLuint glCreateProgressFenceNVX + + + void glCreateQueries + GLenum target + GLsizei n + GLuint *ids + + + void glCreateRenderbuffers + GLsizei n + GLuint *renderbuffers + + + void glCreateSamplers + GLsizei n + GLuint *samplers + + + void glCreateSemaphoresNV + GLsizei n + GLuint *semaphores + + + GLuint glCreateShader + GLenum type + + + GLhandleARB glCreateShaderObjectARB + GLenum shaderType + + + + GLuint glCreateShaderProgramEXT + GLenum type + const GLchar *string + + + GLuint glCreateShaderProgramv + GLenum type + GLsizei count + const GLchar *const*strings + + + GLuint glCreateShaderProgramvEXT + GLenum type + GLsizei count + const GLchar *const*strings + + + void glCreateStatesNV + GLsizei n + GLuint *states + + + GLsync glCreateSyncFromCLeventARB + struct _cl_context *context + struct _cl_event *event + GLbitfield flags + + + void glCreateTextures + GLenum target + GLsizei n + GLuint *textures + + + void glCreateTransformFeedbacks + GLsizei n + GLuint *ids + + + void glCreateVertexArrays + GLsizei n + GLuint *arrays + + + void glCullFace + GLenum mode + + + + void glCullParameterdvEXT + GLenum pname + GLdouble *params + + + void glCullParameterfvEXT + GLenum pname + GLfloat *params + + + void glCurrentPaletteMatrixARB + GLint index + + + + void glCurrentPaletteMatrixOES + GLuint matrixpaletteindex + + + void glDebugMessageCallback + GLDEBUGPROC callback + const void *userParam + + + void glDebugMessageCallbackAMD + GLDEBUGPROCAMD callback + void *userParam + + + void glDebugMessageCallbackARB + GLDEBUGPROCARB callback + const void *userParam + + + + void glDebugMessageCallbackKHR + GLDEBUGPROCKHR callback + const void *userParam + + + + void glDebugMessageControl + GLenum source + GLenum type + GLenum severity + GLsizei count + const GLuint *ids + GLboolean enabled + + + void glDebugMessageControlARB + GLenum source + GLenum type + GLenum severity + GLsizei count + const GLuint *ids + GLboolean enabled + + + + void glDebugMessageControlKHR + GLenum source + GLenum type + GLenum severity + GLsizei count + const GLuint *ids + GLboolean enabled + + + + void glDebugMessageEnableAMD + GLenum category + GLenum severity + GLsizei count + const GLuint *ids + GLboolean enabled + + + void glDebugMessageInsert + GLenum source + GLenum type + GLuint id + GLenum severity + GLsizei length + const GLchar *buf + + + void glDebugMessageInsertAMD + GLenum category + GLenum severity + GLuint id + GLsizei length + const GLchar *buf + + + void glDebugMessageInsertARB + GLenum source + GLenum type + GLuint id + GLenum severity + GLsizei length + const GLchar *buf + + + + void glDebugMessageInsertKHR + GLenum source + GLenum type + GLuint id + GLenum severity + GLsizei length + const GLchar *buf + + + + void glDeformSGIX + GLbitfield mask + + + + void glDeformationMap3dSGIX + GLenum target + GLdouble u1 + GLdouble u2 + GLint ustride + GLint uorder + GLdouble v1 + GLdouble v2 + GLint vstride + GLint vorder + GLdouble w1 + GLdouble w2 + GLint wstride + GLint worder + const GLdouble *points + + + + void glDeformationMap3fSGIX + GLenum target + GLfloat u1 + GLfloat u2 + GLint ustride + GLint uorder + GLfloat v1 + GLfloat v2 + GLint vstride + GLint vorder + GLfloat w1 + GLfloat w2 + GLint wstride + GLint worder + const GLfloat *points + + + + void glDeleteAsyncMarkersSGIX + GLuint marker + GLsizei range + + + void glDeleteBuffers + GLsizei n + const GLuint *buffers + + + void glDeleteBuffersARB + GLsizei n + const GLuint *buffers + + + + void glDeleteCommandListsNV + GLsizei n + const GLuint *lists + + + void glDeleteFencesAPPLE + GLsizei n + const GLuint *fences + + + void glDeleteFencesNV + GLsizei n + const GLuint *fences + + + + void glDeleteFragmentShaderATI + GLuint id + + + void glDeleteFramebuffers + GLsizei n + const GLuint *framebuffers + + + + void glDeleteFramebuffersEXT + GLsizei n + const GLuint *framebuffers + + + + + void glDeleteFramebuffersOES + GLsizei n + const GLuint *framebuffers + + + void glDeleteLists + GLuint list + GLsizei range + + + + void glDeleteMemoryObjectsEXT + GLsizei n + const GLuint *memoryObjects + + + void glDeleteNamedStringARB + GLint namelen + const GLchar *name + + + void glDeleteNamesAMD + GLenum identifier + GLuint num + const GLuint *names + + + void glDeleteObjectARB + GLhandleARB obj + + + void glDeleteOcclusionQueriesNV + GLsizei n + const GLuint *ids + + + void glDeletePathsNV + GLuint path + GLsizei range + + + void glDeletePerfMonitorsAMD + GLsizei n + GLuint *monitors + + + void glDeletePerfQueryINTEL + GLuint queryHandle + + + void glDeleteProgram + GLuint program + + + + void glDeleteProgramPipelines + GLsizei n + const GLuint *pipelines + + + void glDeleteProgramPipelinesEXT + GLsizei n + const GLuint *pipelines + + + void glDeleteProgramsARB + GLsizei n + const GLuint *programs + + + + void glDeleteProgramsNV + GLsizei n + const GLuint *programs + + + + + void glDeleteQueries + GLsizei n + const GLuint *ids + + + + void glDeleteQueriesARB + GLsizei n + const GLuint *ids + + + + void glDeleteQueriesEXT + GLsizei n + const GLuint *ids + + + void glDeleteQueryResourceTagNV + GLsizei n + const GLint *tagIds + + + void glDeleteRenderbuffers + GLsizei n + const GLuint *renderbuffers + + + + void glDeleteRenderbuffersEXT + GLsizei n + const GLuint *renderbuffers + + + + + void glDeleteRenderbuffersOES + GLsizei n + const GLuint *renderbuffers + + + void glDeleteSamplers + GLsizei count + const GLuint *samplers + + + void glDeleteSemaphoresEXT + GLsizei n + const GLuint *semaphores + + + void glDeleteShader + GLuint shader + + + + void glDeleteStatesNV + GLsizei n + const GLuint *states + + + void glDeleteSync + GLsync sync + + + void glDeleteSyncAPPLE + GLsync sync + + + + void glDeleteTextures + GLsizei n + const GLuint *textures + + + + void glDeleteTexturesEXT + GLsizei n + const GLuint *textures + + + + void glDeleteTransformFeedbacks + GLsizei n + const GLuint *ids + + + void glDeleteTransformFeedbacksNV + GLsizei n + const GLuint *ids + + + + void glDeleteVertexArrays + GLsizei n + const GLuint *arrays + + + + void glDeleteVertexArraysAPPLE + GLsizei n + const GLuint *arrays + + + + void glDeleteVertexArraysOES + GLsizei n + const GLuint *arrays + + + + void glDeleteVertexShaderEXT + GLuint id + + + void glDepthBoundsEXT + GLclampd zmin + GLclampd zmax + + + + void glDepthBoundsdNV + GLdouble zmin + GLdouble zmax + + + + void glDepthFunc + GLenum func + + + + void glDepthMask + GLboolean flag + + + + void glDepthRange + GLdouble n + GLdouble f + + + + void glDepthRangeArraydvNV + GLuint first + GLsizei count + const GLdouble *v + + + void glDepthRangeArrayfvNV + GLuint first + GLsizei count + const GLfloat *v + + + void glDepthRangeArrayfvOES + GLuint first + GLsizei count + const GLfloat *v + + + void glDepthRangeArrayv + GLuint first + GLsizei count + const GLdouble *v + + + void glDepthRangeIndexed + GLuint index + GLdouble n + GLdouble f + + + void glDepthRangeIndexeddNV + GLuint index + GLdouble n + GLdouble f + + + void glDepthRangeIndexedfNV + GLuint index + GLfloat n + GLfloat f + + + void glDepthRangeIndexedfOES + GLuint index + GLfloat n + GLfloat f + + + void glDepthRangedNV + GLdouble zNear + GLdouble zFar + + + + void glDepthRangef + GLfloat n + GLfloat f + + + void glDepthRangefOES + GLclampf n + GLclampf f + + + + + void glDepthRangex + GLfixed n + GLfixed f + + + void glDepthRangexOES + GLfixed n + GLfixed f + + + void glDetachObjectARB + GLhandleARB containerObj + GLhandleARB attachedObj + + + + void glDetachShader + GLuint program + GLuint shader + + + void glDetailTexFuncSGIS + GLenum target + GLsizei n + const GLfloat *points + + + + void glDisable + GLenum cap + + + + void glDisableClientState + GLenum array + + + void glDisableClientStateIndexedEXT + GLenum array + GLuint index + + + void glDisableClientStateiEXT + GLenum array + GLuint index + + + void glDisableDriverControlQCOM + GLuint driverControl + + + void glDisableIndexedEXT + GLenum target + GLuint index + + + + + void glDisableVariantClientStateEXT + GLuint id + + + void glDisableVertexArrayAttrib + GLuint vaobj + GLuint index + + + void glDisableVertexArrayAttribEXT + GLuint vaobj + GLuint index + + + void glDisableVertexArrayEXT + GLuint vaobj + GLenum array + + + void glDisableVertexAttribAPPLE + GLuint index + GLenum pname + + + void glDisableVertexAttribArray + GLuint index + + + void glDisableVertexAttribArrayARB + GLuint index + + + + void glDisablei + GLenum target + GLuint index + + + void glDisableiEXT + GLenum target + GLuint index + + + + void glDisableiNV + GLenum target + GLuint index + + + + void glDisableiOES + GLenum target + GLuint index + + + + void glDiscardFramebufferEXT + GLenum target + GLsizei numAttachments + const GLenum *attachments + + + void glDispatchCompute + GLuint num_groups_x + GLuint num_groups_y + GLuint num_groups_z + + + void glDispatchComputeGroupSizeARB + GLuint num_groups_x + GLuint num_groups_y + GLuint num_groups_z + GLuint group_size_x + GLuint group_size_y + GLuint group_size_z + + + void glDispatchComputeIndirect + GLintptr indirect + + + void glDrawArrays + GLenum mode + GLint first + GLsizei count + + + + void glDrawArraysEXT + GLenum mode + GLint first + GLsizei count + + + + + void glDrawArraysIndirect + GLenum mode + const void *indirect + + + void glDrawArraysInstanced + GLenum mode + GLint first + GLsizei count + GLsizei instancecount + + + void glDrawArraysInstancedANGLE + GLenum mode + GLint first + GLsizei count + GLsizei primcount + + + + void glDrawArraysInstancedARB + GLenum mode + GLint first + GLsizei count + GLsizei primcount + + + + void glDrawArraysInstancedBaseInstance + GLenum mode + GLint first + GLsizei count + GLsizei instancecount + GLuint baseinstance + + + void glDrawArraysInstancedBaseInstanceEXT + GLenum mode + GLint first + GLsizei count + GLsizei instancecount + GLuint baseinstance + + + + void glDrawArraysInstancedEXT + GLenum mode + GLint start + GLsizei count + GLsizei primcount + + + + void glDrawArraysInstancedNV + GLenum mode + GLint first + GLsizei count + GLsizei primcount + + + + void glDrawBuffer + GLenum buf + + + + void glDrawBuffers + GLsizei n + const GLenum *bufs + + + + void glDrawBuffersARB + GLsizei n + const GLenum *bufs + + + + void glDrawBuffersATI + GLsizei n + const GLenum *bufs + + + + + void glDrawBuffersEXT + GLsizei n + const GLenum *bufs + + + + void glDrawBuffersIndexedEXT + GLint n + const GLenum *location + const GLint *indices + + + void glDrawBuffersNV + GLsizei n + const GLenum *bufs + + + void glDrawCommandsAddressNV + GLenum primitiveMode + const GLuint64 *indirects + const GLsizei *sizes + GLuint count + + + void glDrawCommandsNV + GLenum primitiveMode + GLuint buffer + const GLintptr *indirects + const GLsizei *sizes + GLuint count + + + void glDrawCommandsStatesAddressNV + const GLuint64 *indirects + const GLsizei *sizes + const GLuint *states + const GLuint *fbos + GLuint count + + + void glDrawCommandsStatesNV + GLuint buffer + const GLintptr *indirects + const GLsizei *sizes + const GLuint *states + const GLuint *fbos + GLuint count + + + void glDrawElementArrayAPPLE + GLenum mode + GLint first + GLsizei count + + + void glDrawElementArrayATI + GLenum mode + GLsizei count + + + void glDrawElements + GLenum mode + GLsizei count + GLenum type + const void *indices + + + void glDrawElementsBaseVertex + GLenum mode + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + void glDrawElementsBaseVertexEXT + GLenum mode + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + + void glDrawElementsBaseVertexOES + GLenum mode + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + + void glDrawElementsIndirect + GLenum mode + GLenum type + const void *indirect + + + void glDrawElementsInstanced + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + + + void glDrawElementsInstancedANGLE + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei primcount + + + + void glDrawElementsInstancedARB + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei primcount + + + + void glDrawElementsInstancedBaseInstance + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLuint baseinstance + + + void glDrawElementsInstancedBaseInstanceEXT + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLuint baseinstance + + + + void glDrawElementsInstancedBaseVertex + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLint basevertex + + + void glDrawElementsInstancedBaseVertexBaseInstance + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLint basevertex + GLuint baseinstance + + + void glDrawElementsInstancedBaseVertexBaseInstanceEXT + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLint basevertex + GLuint baseinstance + + + + void glDrawElementsInstancedBaseVertexEXT + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLint basevertex + + + + void glDrawElementsInstancedBaseVertexOES + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei instancecount + GLint basevertex + + + + void glDrawElementsInstancedEXT + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei primcount + + + + void glDrawElementsInstancedNV + GLenum mode + GLsizei count + GLenum type + const void *indices + GLsizei primcount + + + + void glDrawMeshArraysSUN + GLenum mode + GLint first + GLsizei count + GLsizei width + + + void glDrawMeshTasksEXT + GLuint num_groups_x + GLuint num_groups_y + GLuint num_groups_z + + + void glDrawMeshTasksNV + GLuint first + GLuint count + + + void glDrawMeshTasksIndirectEXT + GLintptr indirect + + + void glDrawMeshTasksIndirectNV + GLintptr indirect + + + void glDrawPixels + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + + + void glDrawRangeElementArrayAPPLE + GLenum mode + GLuint start + GLuint end + GLint first + GLsizei count + + + void glDrawRangeElementArrayATI + GLenum mode + GLuint start + GLuint end + GLsizei count + + + void glDrawRangeElements + GLenum mode + GLuint start + GLuint end + GLsizei count + GLenum type + const void *indices + + + void glDrawRangeElementsBaseVertex + GLenum mode + GLuint start + GLuint end + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + void glDrawRangeElementsBaseVertexEXT + GLenum mode + GLuint start + GLuint end + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + + void glDrawRangeElementsBaseVertexOES + GLenum mode + GLuint start + GLuint end + GLsizei count + GLenum type + const void *indices + GLint basevertex + + + + void glDrawRangeElementsEXT + GLenum mode + GLuint start + GLuint end + GLsizei count + GLenum type + const void *indices + + + + void glDrawTexfOES + GLfloat x + GLfloat y + GLfloat z + GLfloat width + GLfloat height + + + + void glDrawTexfvOES + const GLfloat *coords + + + void glDrawTexiOES + GLint x + GLint y + GLint z + GLint width + GLint height + + + + void glDrawTexivOES + const GLint *coords + + + void glDrawTexsOES + GLshort x + GLshort y + GLshort z + GLshort width + GLshort height + + + + void glDrawTexsvOES + const GLshort *coords + + + void glDrawTextureNV + GLuint texture + GLuint sampler + GLfloat x0 + GLfloat y0 + GLfloat x1 + GLfloat y1 + GLfloat z + GLfloat s0 + GLfloat t0 + GLfloat s1 + GLfloat t1 + + + void glDrawTexxOES + GLfixed x + GLfixed y + GLfixed z + GLfixed width + GLfixed height + + + + void glDrawTexxvOES + const GLfixed *coords + + + void glDrawTransformFeedback + GLenum mode + GLuint id + + + void glDrawTransformFeedbackEXT + GLenum mode + GLuint id + + + + void glDrawTransformFeedbackInstanced + GLenum mode + GLuint id + GLsizei instancecount + + + void glDrawTransformFeedbackInstancedEXT + GLenum mode + GLuint id + GLsizei instancecount + + + + void glDrawTransformFeedbackNV + GLenum mode + GLuint id + + + + void glDrawTransformFeedbackStream + GLenum mode + GLuint id + GLuint stream + + + void glDrawTransformFeedbackStreamInstanced + GLenum mode + GLuint id + GLuint stream + GLsizei instancecount + + + void glEGLImageTargetRenderbufferStorageOES + GLenum target + GLeglImageOES image + + + void glEGLImageTargetTexStorageEXT + GLenum target + GLeglImageOES image + const GLint* attrib_list + + + void glEGLImageTargetTexture2DOES + GLenum target + GLeglImageOES image + + + void glEGLImageTargetTextureStorageEXT + GLuint texture + GLeglImageOES image + const GLint* attrib_list + + + void glEdgeFlag + GLboolean flag + + + + void glEdgeFlagFormatNV + GLsizei stride + + + void glEdgeFlagPointer + GLsizei stride + const void *pointer + + + void glEdgeFlagPointerEXT + GLsizei stride + GLsizei count + const GLboolean *pointer + + + void glEdgeFlagPointerListIBM + GLint stride + const GLboolean **pointer + GLint ptrstride + + + void glEdgeFlagv + const GLboolean *flag + + + + void glElementPointerAPPLE + GLenum type + const void *pointer + + + void glElementPointerATI + GLenum type + const void *pointer + + + void glEnable + GLenum cap + + + + void glEnableClientState + GLenum array + + + void glEnableClientStateIndexedEXT + GLenum array + GLuint index + + + void glEnableClientStateiEXT + GLenum array + GLuint index + + + void glEnableDriverControlQCOM + GLuint driverControl + + + void glEnableIndexedEXT + GLenum target + GLuint index + + + + + void glEnableVariantClientStateEXT + GLuint id + + + void glEnableVertexArrayAttrib + GLuint vaobj + GLuint index + + + void glEnableVertexArrayAttribEXT + GLuint vaobj + GLuint index + + + void glEnableVertexArrayEXT + GLuint vaobj + GLenum array + + + void glEnableVertexAttribAPPLE + GLuint index + GLenum pname + + + void glEnableVertexAttribArray + GLuint index + + + void glEnableVertexAttribArrayARB + GLuint index + + + + void glEnablei + GLenum target + GLuint index + + + void glEnableiEXT + GLenum target + GLuint index + + + + void glEnableiNV + GLenum target + GLuint index + + + + void glEnableiOES + GLenum target + GLuint index + + + + void glEnd + + + + void glEndConditionalRender + + + + void glEndConditionalRenderNV + + + + void glEndConditionalRenderNVX + + + + void glEndFragmentShaderATI + + + void glEndList + + + + void glEndOcclusionQueryNV + + + void glEndPerfMonitorAMD + GLuint monitor + + + void glEndPerfQueryINTEL + GLuint queryHandle + + + void glEndQuery + GLenum target + + + + void glEndQueryARB + GLenum target + + + + void glEndQueryEXT + GLenum target + + + void glEndQueryIndexed + GLenum target + GLuint index + + + void glEndTilingQCOM + GLbitfield preserveMask + + + void glEndTransformFeedback + + + + void glEndTransformFeedbackEXT + + + + void glEndTransformFeedbackNV + + + + void glEndVertexShaderEXT + + + void glEndVideoCaptureNV + GLuint video_capture_slot + + + void glEvalCoord1d + GLdouble u + + + + void glEvalCoord1dv + const GLdouble *u + + + + void glEvalCoord1f + GLfloat u + + + + void glEvalCoord1fv + const GLfloat *u + + + + void glEvalCoord1xOES + GLfixed u + + + void glEvalCoord1xvOES + const GLfixed *coords + + + void glEvalCoord2d + GLdouble u + GLdouble v + + + + void glEvalCoord2dv + const GLdouble *u + + + + void glEvalCoord2f + GLfloat u + GLfloat v + + + + void glEvalCoord2fv + const GLfloat *u + + + + void glEvalCoord2xOES + GLfixed u + GLfixed v + + + void glEvalCoord2xvOES + const GLfixed *coords + + + void glEvalMapsNV + GLenum target + GLenum mode + + + void glEvalMesh1 + GLenum mode + GLint i1 + GLint i2 + + + + void glEvalMesh2 + GLenum mode + GLint i1 + GLint i2 + GLint j1 + GLint j2 + + + + void glEvalPoint1 + GLint i + + + + void glEvalPoint2 + GLint i + GLint j + + + + void glEvaluateDepthValuesARB + + + void glExecuteProgramNV + GLenum target + GLuint id + const GLfloat *params + + + + void glExtGetBufferPointervQCOM + GLenum target + void **params + + + void glExtGetBuffersQCOM + GLuint *buffers + GLint maxBuffers + GLint *numBuffers + + + void glExtGetFramebuffersQCOM + GLuint *framebuffers + GLint maxFramebuffers + GLint *numFramebuffers + + + void glExtGetProgramBinarySourceQCOM + GLuint program + GLenum shadertype + GLchar *source + GLint *length + + + void glExtGetProgramsQCOM + GLuint *programs + GLint maxPrograms + GLint *numPrograms + + + void glExtGetRenderbuffersQCOM + GLuint *renderbuffers + GLint maxRenderbuffers + GLint *numRenderbuffers + + + void glExtGetShadersQCOM + GLuint *shaders + GLint maxShaders + GLint *numShaders + + + void glExtGetTexLevelParameterivQCOM + GLuint texture + GLenum face + GLint level + GLenum pname + GLint *params + + + void glExtGetTexSubImageQCOM + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + void *texels + + + void glExtGetTexturesQCOM + GLuint *textures + GLint maxTextures + GLint *numTextures + + + GLboolean glExtIsProgramBinaryQCOM + GLuint program + + + void glExtTexObjectStateOverrideiQCOM + GLenum target + GLenum pname + GLint param + + + void glExtractComponentEXT + GLuint res + GLuint src + GLuint num + + + void glFeedbackBuffer + GLsizei size + GLenum type + GLfloat *buffer + + + + void glFeedbackBufferxOES + GLsizei n + GLenum type + const GLfixed *buffer + + + GLsync glFenceSync + GLenum condition + GLbitfield flags + + + GLsync glFenceSyncAPPLE + GLenum condition + GLbitfield flags + + + + void glFinalCombinerInputNV + GLenum variable + GLenum input + GLenum mapping + GLenum componentUsage + + + + void glFinish + + + + GLint glFinishAsyncSGIX + GLuint *markerp + + + void glFinishFenceAPPLE + GLuint fence + + + void glFinishFenceNV + GLuint fence + + + + void glFinishObjectAPPLE + GLenum object + GLint name + + + void glFinishTextureSUNX + + + void glFlush + + + + void glFlushMappedBufferRange + GLenum target + GLintptr offset + GLsizeiptr length + + + void glFlushMappedBufferRangeAPPLE + GLenum target + GLintptr offset + GLsizeiptr size + + + + void glFlushMappedBufferRangeEXT + GLenum target + GLintptr offset + GLsizeiptr length + + + + void glFlushMappedNamedBufferRange + GLuint buffer + GLintptr offset + GLsizeiptr length + + + void glFlushMappedNamedBufferRangeEXT + GLuint buffer + GLintptr offset + GLsizeiptr length + + + void glFlushPixelDataRangeNV + GLenum target + + + void glFlushRasterSGIX + + + + void glFlushStaticDataIBM + GLenum target + + + void glFlushVertexArrayRangeAPPLE + GLsizei length + void *pointer + + + void glFlushVertexArrayRangeNV + + + void glFogCoordFormatNV + GLenum type + GLsizei stride + + + void glFogCoordPointer + GLenum type + GLsizei stride + const void *pointer + + + void glFogCoordPointerEXT + GLenum type + GLsizei stride + const void *pointer + + + + void glFogCoordPointerListIBM + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glFogCoordd + GLdouble coord + + + + void glFogCoorddEXT + GLdouble coord + + + + + void glFogCoorddv + const GLdouble *coord + + + + void glFogCoorddvEXT + const GLdouble *coord + + + + + void glFogCoordf + GLfloat coord + + + + void glFogCoordfEXT + GLfloat coord + + + + + void glFogCoordfv + const GLfloat *coord + + + + void glFogCoordfvEXT + const GLfloat *coord + + + + + void glFogCoordhNV + GLhalfNV fog + + + + void glFogCoordhvNV + const GLhalfNV *fog + + + + void glFogFuncSGIS + GLsizei n + const GLfloat *points + + + + void glFogf + GLenum pname + GLfloat param + + + + void glFogfv + GLenum pname + const GLfloat *params + + + + void glFogi + GLenum pname + GLint param + + + + void glFogiv + GLenum pname + const GLint *params + + + + void glFogx + GLenum pname + GLfixed param + + + void glFogxOES + GLenum pname + GLfixed param + + + void glFogxv + GLenum pname + const GLfixed *param + + + void glFogxvOES + GLenum pname + const GLfixed *param + + + void glFragmentColorMaterialSGIX + GLenum face + GLenum mode + + + void glFragmentCoverageColorNV + GLuint color + + + void glFragmentLightModelfSGIX + GLenum pname + GLfloat param + + + void glFragmentLightModelfvSGIX + GLenum pname + const GLfloat *params + + + void glFragmentLightModeliSGIX + GLenum pname + GLint param + + + void glFragmentLightModelivSGIX + GLenum pname + const GLint *params + + + void glFragmentLightfSGIX + GLenum light + GLenum pname + GLfloat param + + + void glFragmentLightfvSGIX + GLenum light + GLenum pname + const GLfloat *params + + + void glFragmentLightiSGIX + GLenum light + GLenum pname + GLint param + + + void glFragmentLightivSGIX + GLenum light + GLenum pname + const GLint *params + + + void glFragmentMaterialfSGIX + GLenum face + GLenum pname + GLfloat param + + + void glFragmentMaterialfvSGIX + GLenum face + GLenum pname + const GLfloat *params + + + void glFragmentMaterialiSGIX + GLenum face + GLenum pname + GLint param + + + void glFragmentMaterialivSGIX + GLenum face + GLenum pname + const GLint *params + + + void glFrameTerminatorGREMEDY + + + void glFrameZoomSGIX + GLint factor + + + + void glFramebufferDrawBufferEXT + GLuint framebuffer + GLenum mode + + + void glFramebufferDrawBuffersEXT + GLuint framebuffer + GLsizei n + const GLenum *bufs + + + void glFramebufferFetchBarrierEXT + + + void glFramebufferFetchBarrierQCOM + + + void glFramebufferFoveationConfigQCOM + GLuint framebuffer + GLuint numLayers + GLuint focalPointsPerLayer + GLuint requestedFeatures + GLuint *providedFeatures + + + void glFramebufferFoveationParametersQCOM + GLuint framebuffer + GLuint layer + GLuint focalPoint + GLfloat focalX + GLfloat focalY + GLfloat gainX + GLfloat gainY + GLfloat foveaArea + + + void glFramebufferParameteri + GLenum target + GLenum pname + GLint param + + + void glFramebufferPixelLocalStorageSizeEXT + GLuint target + GLsizei size + + + void glFramebufferReadBufferEXT + GLuint framebuffer + GLenum mode + + + void glFramebufferRenderbuffer + GLenum target + GLenum attachment + GLenum renderbuffertarget + GLuint renderbuffer + + + + void glFramebufferRenderbufferEXT + GLenum target + GLenum attachment + GLenum renderbuffertarget + GLuint renderbuffer + + + + + void glFramebufferRenderbufferOES + GLenum target + GLenum attachment + GLenum renderbuffertarget + GLuint renderbuffer + + + void glFramebufferSampleLocationsfvARB + GLenum target + GLuint start + GLsizei count + const GLfloat *v + + + void glFramebufferSampleLocationsfvNV + GLenum target + GLuint start + GLsizei count + const GLfloat *v + + + void glFramebufferSamplePositionsfvAMD + GLenum target + GLuint numsamples + GLuint pixelindex + const GLfloat *values + + + void glFramebufferShadingRateEXT + GLenum target + GLenum attachment + GLuint texture + GLint baseLayer + GLsizei numLayers + GLsizei texelWidth + GLsizei texelHeight + + + void glFramebufferTexture + GLenum target + GLenum attachment + GLuint texture + GLint level + + + void glFramebufferTexture1D + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + + void glFramebufferTexture1DEXT + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + + + void glFramebufferTexture2D + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + + void glFramebufferTexture2DEXT + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + + + void glFramebufferTexture2DDownsampleIMG + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint xscale + GLint yscale + + + void glFramebufferTexture2DMultisampleEXT + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLsizei samples + + + void glFramebufferTexture2DMultisampleIMG + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLsizei samples + + + void glFramebufferTexture2DOES + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + void glFramebufferTexture3D + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint zoffset + + + + void glFramebufferTexture3DEXT + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint zoffset + + + + + void glFramebufferTexture3DOES + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint zoffset + + + void glFramebufferTextureARB + GLenum target + GLenum attachment + GLuint texture + GLint level + + + + void glFramebufferTextureEXT + GLenum target + GLenum attachment + GLuint texture + GLint level + + + + void glFramebufferTextureFaceARB + GLenum target + GLenum attachment + GLuint texture + GLint level + GLenum face + + + void glFramebufferTextureFaceEXT + GLenum target + GLenum attachment + GLuint texture + GLint level + GLenum face + + + + void glFramebufferTextureLayer + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint layer + + + + void glFramebufferTextureLayerARB + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint layer + + + + void glFramebufferTextureLayerEXT + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint layer + + + + void glFramebufferTextureLayerDownsampleIMG + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint layer + GLint xscale + GLint yscale + + + void glFramebufferTextureMultisampleMultiviewOVR + GLenum target + GLenum attachment + GLuint texture + GLint level + GLsizei samples + GLint baseViewIndex + GLsizei numViews + + + void glFramebufferTextureMultiviewOVR + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint baseViewIndex + GLsizei numViews + + + void glFramebufferTextureOES + GLenum target + GLenum attachment + GLuint texture + GLint level + + + + void glFreeObjectBufferATI + GLuint buffer + + + void glFrontFace + GLenum mode + + + + void glFrustum + GLdouble left + GLdouble right + GLdouble bottom + GLdouble top + GLdouble zNear + GLdouble zFar + + + + void glFrustumf + GLfloat l + GLfloat r + GLfloat b + GLfloat t + GLfloat n + GLfloat f + + + void glFrustumfOES + GLfloat l + GLfloat r + GLfloat b + GLfloat t + GLfloat n + GLfloat f + + + + void glFrustumx + GLfixed l + GLfixed r + GLfixed b + GLfixed t + GLfixed n + GLfixed f + + + void glFrustumxOES + GLfixed l + GLfixed r + GLfixed b + GLfixed t + GLfixed n + GLfixed f + + + GLuint glGenAsyncMarkersSGIX + GLsizei range + + + void glGenBuffers + GLsizei n + GLuint *buffers + + + void glGenBuffersARB + GLsizei n + GLuint *buffers + + + + void glGenFencesAPPLE + GLsizei n + GLuint *fences + + + void glGenFencesNV + GLsizei n + GLuint *fences + + + + GLuint glGenFragmentShadersATI + GLuint range + + + void glGenFramebuffers + GLsizei n + GLuint *framebuffers + + + + void glGenFramebuffersEXT + GLsizei n + GLuint *framebuffers + + + + + void glGenFramebuffersOES + GLsizei n + GLuint *framebuffers + + + GLuint glGenLists + GLsizei range + + + + void glGenNamesAMD + GLenum identifier + GLuint num + GLuint *names + + + void glGenOcclusionQueriesNV + GLsizei n + GLuint *ids + + + GLuint glGenPathsNV + GLsizei range + + + void glGenPerfMonitorsAMD + GLsizei n + GLuint *monitors + + + void glGenProgramPipelines + GLsizei n + GLuint *pipelines + + + void glGenProgramPipelinesEXT + GLsizei n + GLuint *pipelines + + + void glGenProgramsARB + GLsizei n + GLuint *programs + + + + void glGenProgramsNV + GLsizei n + GLuint *programs + + + + + void glGenQueries + GLsizei n + GLuint *ids + + + + void glGenQueriesARB + GLsizei n + GLuint *ids + + + + void glGenQueriesEXT + GLsizei n + GLuint *ids + + + void glGenQueryResourceTagNV + GLsizei n + GLint *tagIds + + + void glGenRenderbuffers + GLsizei n + GLuint *renderbuffers + + + + void glGenRenderbuffersEXT + GLsizei n + GLuint *renderbuffers + + + + + void glGenRenderbuffersOES + GLsizei n + GLuint *renderbuffers + + + void glGenSamplers + GLsizei count + GLuint *samplers + + + void glGenSemaphoresEXT + GLsizei n + GLuint *semaphores + + + GLuint glGenSymbolsEXT + GLenum datatype + GLenum storagetype + GLenum range + GLuint components + + + void glGenTextures + GLsizei n + GLuint *textures + + + + void glGenTexturesEXT + GLsizei n + GLuint *textures + + + + void glGenTransformFeedbacks + GLsizei n + GLuint *ids + + + void glGenTransformFeedbacksNV + GLsizei n + GLuint *ids + + + + void glGenVertexArrays + GLsizei n + GLuint *arrays + + + + void glGenVertexArraysAPPLE + GLsizei n + GLuint *arrays + + + + void glGenVertexArraysOES + GLsizei n + GLuint *arrays + + + + GLuint glGenVertexShadersEXT + GLuint range + + + void glGenerateMipmap + GLenum target + + + + void glGenerateMipmapEXT + GLenum target + + + + + void glGenerateMipmapOES + GLenum target + + + void glGenerateMultiTexMipmapEXT + GLenum texunit + GLenum target + + + void glGenerateTextureMipmap + GLuint texture + + + void glGenerateTextureMipmapEXT + GLuint texture + GLenum target + + + void glGetActiveAtomicCounterBufferiv + GLuint program + GLuint bufferIndex + GLenum pname + GLint *params + + + void glGetActiveAttrib + GLuint program + GLuint index + GLsizei bufSize + GLsizei *length + GLint *size + GLenum *type + GLchar *name + + + void glGetActiveAttribARB + GLhandleARB programObj + GLuint index + GLsizei maxLength + GLsizei *length + GLint *size + GLenum *type + GLcharARB *name + + + + void glGetActiveSubroutineName + GLuint program + GLenum shadertype + GLuint index + GLsizei bufSize + GLsizei *length + GLchar *name + + + void glGetActiveSubroutineUniformName + GLuint program + GLenum shadertype + GLuint index + GLsizei bufSize + GLsizei *length + GLchar *name + + + void glGetActiveSubroutineUniformiv + GLuint program + GLenum shadertype + GLuint index + GLenum pname + GLint *values + + + void glGetActiveUniform + GLuint program + GLuint index + GLsizei bufSize + GLsizei *length + GLint *size + GLenum *type + GLchar *name + + + void glGetActiveUniformARB + GLhandleARB programObj + GLuint index + GLsizei maxLength + GLsizei *length + GLint *size + GLenum *type + GLcharARB *name + + + + void glGetActiveUniformBlockName + GLuint program + GLuint uniformBlockIndex + GLsizei bufSize + GLsizei *length + GLchar *uniformBlockName + + + + void glGetActiveUniformBlockiv + GLuint program + GLuint uniformBlockIndex + GLenum pname + GLint *params + + + + void glGetActiveUniformName + GLuint program + GLuint uniformIndex + GLsizei bufSize + GLsizei *length + GLchar *uniformName + + + + void glGetActiveUniformsiv + GLuint program + GLsizei uniformCount + const GLuint *uniformIndices + GLenum pname + GLint *params + + + + void glGetActiveVaryingNV + GLuint program + GLuint index + GLsizei bufSize + GLsizei *length + GLsizei *size + GLenum *type + GLchar *name + + + void glGetArrayObjectfvATI + GLenum array + GLenum pname + GLfloat *params + + + void glGetArrayObjectivATI + GLenum array + GLenum pname + GLint *params + + + void glGetAttachedObjectsARB + GLhandleARB containerObj + GLsizei maxCount + GLsizei *count + GLhandleARB *obj + + + void glGetAttachedShaders + GLuint program + GLsizei maxCount + GLsizei *count + GLuint *shaders + + + GLint glGetAttribLocation + GLuint program + const GLchar *name + + + GLint glGetAttribLocationARB + GLhandleARB programObj + const GLcharARB *name + + + + void glGetBooleanIndexedvEXT + GLenum target + GLuint index + GLboolean *data + + + + + void glGetBooleani_v + GLenum target + GLuint index + GLboolean *data + + + void glGetBooleanv + GLenum pname + GLboolean *data + + + + void glGetBufferParameteri64v + GLenum target + GLenum pname + GLint64 *params + + + void glGetBufferParameteriv + GLenum target + GLenum pname + GLint *params + + + void glGetBufferParameterivARB + GLenum target + GLenum pname + GLint *params + + + + void glGetBufferParameterui64vNV + GLenum target + GLenum pname + GLuint64EXT *params + + + void glGetBufferPointerv + GLenum target + GLenum pname + void **params + + + void glGetBufferPointervARB + GLenum target + GLenum pname + void **params + + + + void glGetBufferPointervOES + GLenum target + GLenum pname + void **params + + + + void glGetBufferSubData + GLenum target + GLintptr offset + GLsizeiptr size + void *data + + + void glGetBufferSubDataARB + GLenum target + GLintptrARB offset + GLsizeiptrARB size + void *data + + + + void glGetClipPlane + GLenum plane + GLdouble *equation + + + + void glGetClipPlanef + GLenum plane + GLfloat *equation + + + void glGetClipPlanefOES + GLenum plane + GLfloat *equation + + + + void glGetClipPlanex + GLenum plane + GLfixed *equation + + + void glGetClipPlanexOES + GLenum plane + GLfixed *equation + + + void glGetColorTable + GLenum target + GLenum format + GLenum type + void *table + + + + + void glGetColorTableEXT + GLenum target + GLenum format + GLenum type + void *data + + + + void glGetColorTableParameterfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetColorTableParameterfvEXT + GLenum target + GLenum pname + GLfloat *params + + + + void glGetColorTableParameterfvSGI + GLenum target + GLenum pname + GLfloat *params + + + + void glGetColorTableParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetColorTableParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetColorTableParameterivSGI + GLenum target + GLenum pname + GLint *params + + + + void glGetColorTableSGI + GLenum target + GLenum format + GLenum type + void *table + + + + void glGetCombinerInputParameterfvNV + GLenum stage + GLenum portion + GLenum variable + GLenum pname + GLfloat *params + + + + void glGetCombinerInputParameterivNV + GLenum stage + GLenum portion + GLenum variable + GLenum pname + GLint *params + + + + void glGetCombinerOutputParameterfvNV + GLenum stage + GLenum portion + GLenum pname + GLfloat *params + + + + void glGetCombinerOutputParameterivNV + GLenum stage + GLenum portion + GLenum pname + GLint *params + + + + void glGetCombinerStageParameterfvNV + GLenum stage + GLenum pname + GLfloat *params + + + GLuint glGetCommandHeaderNV + GLenum tokenID + GLuint size + + + void glGetCompressedMultiTexImageEXT + GLenum texunit + GLenum target + GLint lod + void *img + + + void glGetCompressedTexImage + GLenum target + GLint level + void *img + + + + + void glGetCompressedTexImageARB + GLenum target + GLint level + void *img + + + + + void glGetCompressedTextureImage + GLuint texture + GLint level + GLsizei bufSize + void *pixels + + + void glGetCompressedTextureImageEXT + GLuint texture + GLenum target + GLint lod + void *img + + + void glGetCompressedTextureSubImage + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLsizei bufSize + void *pixels + + + void glGetConvolutionFilter + GLenum target + GLenum format + GLenum type + void *image + + + + + void glGetConvolutionFilterEXT + GLenum target + GLenum format + GLenum type + void *image + + + + void glGetConvolutionParameterfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetConvolutionParameterfvEXT + GLenum target + GLenum pname + GLfloat *params + + + + void glGetConvolutionParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetConvolutionParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetConvolutionParameterxvOES + GLenum target + GLenum pname + GLfixed *params + + + void glGetCoverageModulationTableNV + GLsizei bufSize + GLfloat *v + + + GLuint glGetDebugMessageLog + GLuint count + GLsizei bufSize + GLenum *sources + GLenum *types + GLuint *ids + GLenum *severities + GLsizei *lengths + GLchar *messageLog + + + GLuint glGetDebugMessageLogAMD + GLuint count + GLsizei bufSize + GLenum *categories + GLenum *severities + GLuint *ids + GLsizei *lengths + GLchar *message + + + GLuint glGetDebugMessageLogARB + GLuint count + GLsizei bufSize + GLenum *sources + GLenum *types + GLuint *ids + GLenum *severities + GLsizei *lengths + GLchar *messageLog + + + + GLuint glGetDebugMessageLogKHR + GLuint count + GLsizei bufSize + GLenum *sources + GLenum *types + GLuint *ids + GLenum *severities + GLsizei *lengths + GLchar *messageLog + + + + void glGetDetailTexFuncSGIS + GLenum target + GLfloat *points + + + + void glGetDoubleIndexedvEXT + GLenum target + GLuint index + GLdouble *data + + + + void glGetDoublei_v + GLenum target + GLuint index + GLdouble *data + + + void glGetDoublei_vEXT + GLenum pname + GLuint index + GLdouble *params + + + + void glGetDoublev + GLenum pname + GLdouble *data + + + + void glGetDriverControlStringQCOM + GLuint driverControl + GLsizei bufSize + GLsizei *length + GLchar *driverControlString + + + void glGetDriverControlsQCOM + GLint *num + GLsizei size + GLuint *driverControls + + + GLenum glGetError + + + + void glGetFenceivNV + GLuint fence + GLenum pname + GLint *params + + + + void glGetFinalCombinerInputParameterfvNV + GLenum variable + GLenum pname + GLfloat *params + + + + void glGetFinalCombinerInputParameterivNV + GLenum variable + GLenum pname + GLint *params + + + + void glGetFirstPerfQueryIdINTEL + GLuint *queryId + + + void glGetFixedv + GLenum pname + GLfixed *params + + + void glGetFixedvOES + GLenum pname + GLfixed *params + + + void glGetFloatIndexedvEXT + GLenum target + GLuint index + GLfloat *data + + + + void glGetFloati_v + GLenum target + GLuint index + GLfloat *data + + + void glGetFloati_vEXT + GLenum pname + GLuint index + GLfloat *params + + + + void glGetFloati_vNV + GLenum target + GLuint index + GLfloat *data + + + + void glGetFloati_vOES + GLenum target + GLuint index + GLfloat *data + + + + void glGetFloatv + GLenum pname + GLfloat *data + + + + void glGetFogFuncSGIS + GLfloat *points + + + GLint glGetFragDataIndex + GLuint program + const GLchar *name + + + GLint glGetFragDataIndexEXT + GLuint program + const GLchar *name + + + + GLint glGetFragDataLocation + GLuint program + const GLchar *name + + + GLint glGetFragDataLocationEXT + GLuint program + const GLchar *name + + + + void glGetFragmentLightfvSGIX + GLenum light + GLenum pname + GLfloat *params + + + void glGetFragmentLightivSGIX + GLenum light + GLenum pname + GLint *params + + + void glGetFragmentMaterialfvSGIX + GLenum face + GLenum pname + GLfloat *params + + + void glGetFragmentMaterialivSGIX + GLenum face + GLenum pname + GLint *params + + + void glGetFragmentShadingRatesEXT + GLsizei samples + GLsizei maxCount + GLsizei *count + GLenum *shadingRates + + + void glGetFramebufferAttachmentParameteriv + GLenum target + GLenum attachment + GLenum pname + GLint *params + + + + void glGetFramebufferAttachmentParameterivEXT + GLenum target + GLenum attachment + GLenum pname + GLint *params + + + + + void glGetFramebufferAttachmentParameterivOES + GLenum target + GLenum attachment + GLenum pname + GLint *params + + + void glGetFramebufferParameterfvAMD + GLenum target + GLenum pname + GLuint numsamples + GLuint pixelindex + GLsizei size + GLfloat *values + + + void glGetFramebufferParameteriv + GLenum target + GLenum pname + GLint *params + + + void glGetFramebufferParameterivEXT + GLuint framebuffer + GLenum pname + GLint *params + + + GLsizei glGetFramebufferPixelLocalStorageSizeEXT + GLuint target + + + GLenum glGetGraphicsResetStatus + + + GLenum glGetGraphicsResetStatusARB + + + GLenum glGetGraphicsResetStatusEXT + + + + GLenum glGetGraphicsResetStatusKHR + + + + GLhandleARB glGetHandleARB + GLenum pname + + + void glGetHistogram + GLenum target + GLboolean reset + GLenum format + GLenum type + void *values + + + + + void glGetHistogramEXT + GLenum target + GLboolean reset + GLenum format + GLenum type + void *values + + + + void glGetHistogramParameterfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetHistogramParameterfvEXT + GLenum target + GLenum pname + GLfloat *params + + + + void glGetHistogramParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetHistogramParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetHistogramParameterxvOES + GLenum target + GLenum pname + GLfixed *params + + + GLuint64 glGetImageHandleARB + GLuint texture + GLint level + GLboolean layered + GLint layer + GLenum format + + + GLuint64 glGetImageHandleNV + GLuint texture + GLint level + GLboolean layered + GLint layer + GLenum format + + + void glGetImageTransformParameterfvHP + GLenum target + GLenum pname + GLfloat *params + + + void glGetImageTransformParameterivHP + GLenum target + GLenum pname + GLint *params + + + void glGetInfoLogARB + GLhandleARB obj + GLsizei maxLength + GLsizei *length + GLcharARB *infoLog + + + GLint glGetInstrumentsSGIX + + + + void glGetInteger64i_v + GLenum target + GLuint index + GLint64 *data + + + void glGetInteger64v + GLenum pname + GLint64 *data + + + void glGetInteger64vAPPLE + GLenum pname + GLint64 *params + + + + void glGetInteger64vEXT + GLenum pname + GLint64 *data + + + + void glGetIntegerIndexedvEXT + GLenum target + GLuint index + GLint *data + + + + + void glGetIntegeri_v + GLenum target + GLuint index + GLint *data + + + void glGetIntegeri_vEXT + GLenum target + GLuint index + GLint *data + + + void glGetIntegerui64i_vNV + GLenum value + GLuint index + GLuint64EXT *result + + + void glGetIntegerui64vNV + GLenum value + GLuint64EXT *result + + + void glGetIntegerv + GLenum pname + GLint *data + + + + void glGetInternalformatSampleivNV + GLenum target + GLenum internalformat + GLsizei samples + GLenum pname + GLsizei count + GLint *params + + + void glGetInternalformati64v + GLenum target + GLenum internalformat + GLenum pname + GLsizei count + GLint64 *params + + + void glGetInternalformativ + GLenum target + GLenum internalformat + GLenum pname + GLsizei count + GLint *params + + + void glGetInvariantBooleanvEXT + GLuint id + GLenum value + GLboolean *data + + + void glGetInvariantFloatvEXT + GLuint id + GLenum value + GLfloat *data + + + void glGetInvariantIntegervEXT + GLuint id + GLenum value + GLint *data + + + void glGetLightfv + GLenum light + GLenum pname + GLfloat *params + + + + void glGetLightiv + GLenum light + GLenum pname + GLint *params + + + + void glGetLightxOES + GLenum light + GLenum pname + GLfixed *params + + + void glGetLightxv + GLenum light + GLenum pname + GLfixed *params + + + void glGetLightxvOES + GLenum light + GLenum pname + GLfixed *params + + + void glGetListParameterfvSGIX + GLuint list + GLenum pname + GLfloat *params + + + void glGetListParameterivSGIX + GLuint list + GLenum pname + GLint *params + + + void glGetLocalConstantBooleanvEXT + GLuint id + GLenum value + GLboolean *data + + + void glGetLocalConstantFloatvEXT + GLuint id + GLenum value + GLfloat *data + + + void glGetLocalConstantIntegervEXT + GLuint id + GLenum value + GLint *data + + + void glGetMapAttribParameterfvNV + GLenum target + GLuint index + GLenum pname + GLfloat *params + + + void glGetMapAttribParameterivNV + GLenum target + GLuint index + GLenum pname + GLint *params + + + void glGetMapControlPointsNV + GLenum target + GLuint index + GLenum type + GLsizei ustride + GLsizei vstride + GLboolean packed + void *points + + + void glGetMapParameterfvNV + GLenum target + GLenum pname + GLfloat *params + + + void glGetMapParameterivNV + GLenum target + GLenum pname + GLint *params + + + void glGetMapdv + GLenum target + GLenum query + GLdouble *v + + + + void glGetMapfv + GLenum target + GLenum query + GLfloat *v + + + + void glGetMapiv + GLenum target + GLenum query + GLint *v + + + + void glGetMapxvOES + GLenum target + GLenum query + GLfixed *v + + + void glGetMaterialfv + GLenum face + GLenum pname + GLfloat *params + + + + void glGetMaterialiv + GLenum face + GLenum pname + GLint *params + + + + void glGetMaterialxOES + GLenum face + GLenum pname + GLfixed param + + + void glGetMaterialxv + GLenum face + GLenum pname + GLfixed *params + + + void glGetMaterialxvOES + GLenum face + GLenum pname + GLfixed *params + + + void glGetMemoryObjectDetachedResourcesuivNV + GLuint memory + GLenum pname + GLint first + GLsizei count + GLuint *params + + + void glGetMemoryObjectParameterivEXT + GLuint memoryObject + GLenum pname + GLint *params + + + void glGetMinmax + GLenum target + GLboolean reset + GLenum format + GLenum type + void *values + + + + + void glGetMinmaxEXT + GLenum target + GLboolean reset + GLenum format + GLenum type + void *values + + + + void glGetMinmaxParameterfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetMinmaxParameterfvEXT + GLenum target + GLenum pname + GLfloat *params + + + + void glGetMinmaxParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetMinmaxParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetMultiTexEnvfvEXT + GLenum texunit + GLenum target + GLenum pname + GLfloat *params + + + void glGetMultiTexEnvivEXT + GLenum texunit + GLenum target + GLenum pname + GLint *params + + + void glGetMultiTexGendvEXT + GLenum texunit + GLenum coord + GLenum pname + GLdouble *params + + + void glGetMultiTexGenfvEXT + GLenum texunit + GLenum coord + GLenum pname + GLfloat *params + + + void glGetMultiTexGenivEXT + GLenum texunit + GLenum coord + GLenum pname + GLint *params + + + void glGetMultiTexImageEXT + GLenum texunit + GLenum target + GLint level + GLenum format + GLenum type + void *pixels + + + void glGetMultiTexLevelParameterfvEXT + GLenum texunit + GLenum target + GLint level + GLenum pname + GLfloat *params + + + void glGetMultiTexLevelParameterivEXT + GLenum texunit + GLenum target + GLint level + GLenum pname + GLint *params + + + void glGetMultiTexParameterIivEXT + GLenum texunit + GLenum target + GLenum pname + GLint *params + + + void glGetMultiTexParameterIuivEXT + GLenum texunit + GLenum target + GLenum pname + GLuint *params + + + void glGetMultiTexParameterfvEXT + GLenum texunit + GLenum target + GLenum pname + GLfloat *params + + + void glGetMultiTexParameterivEXT + GLenum texunit + GLenum target + GLenum pname + GLint *params + + + void glGetMultisamplefv + GLenum pname + GLuint index + GLfloat *val + + + void glGetMultisamplefvNV + GLenum pname + GLuint index + GLfloat *val + + + + void glGetNamedBufferParameteri64v + GLuint buffer + GLenum pname + GLint64 *params + + + void glGetNamedBufferParameteriv + GLuint buffer + GLenum pname + GLint *params + + + void glGetNamedBufferParameterivEXT + GLuint buffer + GLenum pname + GLint *params + + + void glGetNamedBufferParameterui64vNV + GLuint buffer + GLenum pname + GLuint64EXT *params + + + void glGetNamedBufferPointerv + GLuint buffer + GLenum pname + void **params + + + void glGetNamedBufferPointervEXT + GLuint buffer + GLenum pname + void **params + + + void glGetNamedBufferSubData + GLuint buffer + GLintptr offset + GLsizeiptr size + void *data + + + void glGetNamedBufferSubDataEXT + GLuint buffer + GLintptr offset + GLsizeiptr size + void *data + + + void glGetNamedFramebufferParameterfvAMD + GLuint framebuffer + GLenum pname + GLuint numsamples + GLuint pixelindex + GLsizei size + GLfloat *values + + + void glGetNamedFramebufferAttachmentParameteriv + GLuint framebuffer + GLenum attachment + GLenum pname + GLint *params + + + void glGetNamedFramebufferAttachmentParameterivEXT + GLuint framebuffer + GLenum attachment + GLenum pname + GLint *params + + + void glGetNamedFramebufferParameteriv + GLuint framebuffer + GLenum pname + GLint *param + + + void glGetNamedFramebufferParameterivEXT + GLuint framebuffer + GLenum pname + GLint *params + + + void glGetNamedProgramLocalParameterIivEXT + GLuint program + GLenum target + GLuint index + GLint *params + + + void glGetNamedProgramLocalParameterIuivEXT + GLuint program + GLenum target + GLuint index + GLuint *params + + + void glGetNamedProgramLocalParameterdvEXT + GLuint program + GLenum target + GLuint index + GLdouble *params + + + void glGetNamedProgramLocalParameterfvEXT + GLuint program + GLenum target + GLuint index + GLfloat *params + + + void glGetNamedProgramStringEXT + GLuint program + GLenum target + GLenum pname + void *string + + + void glGetNamedProgramivEXT + GLuint program + GLenum target + GLenum pname + GLint *params + + + void glGetNamedRenderbufferParameteriv + GLuint renderbuffer + GLenum pname + GLint *params + + + void glGetNamedRenderbufferParameterivEXT + GLuint renderbuffer + GLenum pname + GLint *params + + + void glGetNamedStringARB + GLint namelen + const GLchar *name + GLsizei bufSize + GLint *stringlen + GLchar *string + + + void glGetNamedStringivARB + GLint namelen + const GLchar *name + GLenum pname + GLint *params + + + void glGetNextPerfQueryIdINTEL + GLuint queryId + GLuint *nextQueryId + + + void glGetObjectBufferfvATI + GLuint buffer + GLenum pname + GLfloat *params + + + void glGetObjectBufferivATI + GLuint buffer + GLenum pname + GLint *params + + + void glGetObjectLabel + GLenum identifier + GLuint name + GLsizei bufSize + GLsizei *length + GLchar *label + + + void glGetObjectLabelEXT + GLenum type + GLuint object + GLsizei bufSize + GLsizei *length + GLchar *label + + + void glGetObjectLabelKHR + GLenum identifier + GLuint name + GLsizei bufSize + GLsizei *length + GLchar *label + + + + void glGetObjectParameterfvARB + GLhandleARB obj + GLenum pname + GLfloat *params + + + void glGetObjectParameterivAPPLE + GLenum objectType + GLuint name + GLenum pname + GLint *params + + + void glGetObjectParameterivARB + GLhandleARB obj + GLenum pname + GLint *params + + + void glGetObjectPtrLabel + const void *ptr + GLsizei bufSize + GLsizei *length + GLchar *label + + + void glGetObjectPtrLabelKHR + const void *ptr + GLsizei bufSize + GLsizei *length + GLchar *label + + + + void glGetOcclusionQueryivNV + GLuint id + GLenum pname + GLint *params + + + void glGetOcclusionQueryuivNV + GLuint id + GLenum pname + GLuint *params + + + void glGetPathColorGenfvNV + GLenum color + GLenum pname + GLfloat *value + + + void glGetPathColorGenivNV + GLenum color + GLenum pname + GLint *value + + + void glGetPathCommandsNV + GLuint path + GLubyte *commands + + + void glGetPathCoordsNV + GLuint path + GLfloat *coords + + + void glGetPathDashArrayNV + GLuint path + GLfloat *dashArray + + + GLfloat glGetPathLengthNV + GLuint path + GLsizei startSegment + GLsizei numSegments + + + void glGetPathMetricRangeNV + GLbitfield metricQueryMask + GLuint firstPathName + GLsizei numPaths + GLsizei stride + GLfloat *metrics + + + void glGetPathMetricsNV + GLbitfield metricQueryMask + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLsizei stride + GLfloat *metrics + + + void glGetPathParameterfvNV + GLuint path + GLenum pname + GLfloat *value + + + void glGetPathParameterivNV + GLuint path + GLenum pname + GLint *value + + + void glGetPathSpacingNV + GLenum pathListMode + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLfloat advanceScale + GLfloat kerningScale + GLenum transformType + GLfloat *returnedSpacing + + + void glGetPathTexGenfvNV + GLenum texCoordSet + GLenum pname + GLfloat *value + + + void glGetPathTexGenivNV + GLenum texCoordSet + GLenum pname + GLint *value + + + void glGetPerfCounterInfoINTEL + GLuint queryId + GLuint counterId + GLuint counterNameLength + GLchar *counterName + GLuint counterDescLength + GLchar *counterDesc + GLuint *counterOffset + GLuint *counterDataSize + GLuint *counterTypeEnum + GLuint *counterDataTypeEnum + GLuint64 *rawCounterMaxValue + + + void glGetPerfMonitorCounterDataAMD + GLuint monitor + GLenum pname + GLsizei dataSize + GLuint *data + GLint *bytesWritten + + + void glGetPerfMonitorCounterInfoAMD + GLuint group + GLuint counter + GLenum pname + void *data + + + void glGetPerfMonitorCounterStringAMD + GLuint group + GLuint counter + GLsizei bufSize + GLsizei *length + GLchar *counterString + + + void glGetPerfMonitorCountersAMD + GLuint group + GLint *numCounters + GLint *maxActiveCounters + GLsizei counterSize + GLuint *counters + + + void glGetPerfMonitorGroupStringAMD + GLuint group + GLsizei bufSize + GLsizei *length + GLchar *groupString + + + void glGetPerfMonitorGroupsAMD + GLint *numGroups + GLsizei groupsSize + GLuint *groups + + + void glGetPerfQueryDataINTEL + GLuint queryHandle + GLuint flags + GLsizei dataSize + void *data + GLuint *bytesWritten + + + void glGetPerfQueryIdByNameINTEL + GLchar *queryName + GLuint *queryId + + + void glGetPerfQueryInfoINTEL + GLuint queryId + GLuint queryNameLength + GLchar *queryName + GLuint *dataSize + GLuint *noCounters + GLuint *noInstances + GLuint *capsMask + + + void glGetPixelMapfv + GLenum map + GLfloat *values + + + + + void glGetPixelMapuiv + GLenum map + GLuint *values + + + + + void glGetPixelMapusv + GLenum map + GLushort *values + + + + + void glGetPixelMapxv + GLenum map + GLint size + GLfixed *values + + + void glGetPixelTexGenParameterfvSGIS + GLenum pname + GLfloat *params + + + void glGetPixelTexGenParameterivSGIS + GLenum pname + GLint *params + + + void glGetPixelTransformParameterfvEXT + GLenum target + GLenum pname + GLfloat *params + + + + void glGetPixelTransformParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetPointerIndexedvEXT + GLenum target + GLuint index + void **data + + + void glGetPointeri_vEXT + GLenum pname + GLuint index + void **params + + + void glGetPointerv + GLenum pname + void **params + + + + void glGetPointervEXT + GLenum pname + void **params + + + + void glGetPointervKHR + GLenum pname + void **params + + + + void glGetPolygonStipple + GLubyte *mask + + + + + void glGetProgramBinary + GLuint program + GLsizei bufSize + GLsizei *length + GLenum *binaryFormat + void *binary + + + void glGetProgramBinaryOES + GLuint program + GLsizei bufSize + GLsizei *length + GLenum *binaryFormat + void *binary + + + + void glGetProgramEnvParameterIivNV + GLenum target + GLuint index + GLint *params + + + void glGetProgramEnvParameterIuivNV + GLenum target + GLuint index + GLuint *params + + + void glGetProgramEnvParameterdvARB + GLenum target + GLuint index + GLdouble *params + + + void glGetProgramEnvParameterfvARB + GLenum target + GLuint index + GLfloat *params + + + void glGetProgramInfoLog + GLuint program + GLsizei bufSize + GLsizei *length + GLchar *infoLog + + + + void glGetProgramInterfaceiv + GLuint program + GLenum programInterface + GLenum pname + GLint *params + + + void glGetProgramLocalParameterIivNV + GLenum target + GLuint index + GLint *params + + + void glGetProgramLocalParameterIuivNV + GLenum target + GLuint index + GLuint *params + + + void glGetProgramLocalParameterdvARB + GLenum target + GLuint index + GLdouble *params + + + void glGetProgramLocalParameterfvARB + GLenum target + GLuint index + GLfloat *params + + + void glGetProgramNamedParameterdvNV + GLuint id + GLsizei len + const GLubyte *name + GLdouble *params + + + + void glGetProgramNamedParameterfvNV + GLuint id + GLsizei len + const GLubyte *name + GLfloat *params + + + + void glGetProgramParameterdvNV + GLenum target + GLuint index + GLenum pname + GLdouble *params + + + + void glGetProgramParameterfvNV + GLenum target + GLuint index + GLenum pname + GLfloat *params + + + + void glGetProgramPipelineInfoLog + GLuint pipeline + GLsizei bufSize + GLsizei *length + GLchar *infoLog + + + void glGetProgramPipelineInfoLogEXT + GLuint pipeline + GLsizei bufSize + GLsizei *length + GLchar *infoLog + + + void glGetProgramPipelineiv + GLuint pipeline + GLenum pname + GLint *params + + + void glGetProgramPipelineivEXT + GLuint pipeline + GLenum pname + GLint *params + + + GLuint glGetProgramResourceIndex + GLuint program + GLenum programInterface + const GLchar *name + + + GLint glGetProgramResourceLocation + GLuint program + GLenum programInterface + const GLchar *name + + + GLint glGetProgramResourceLocationIndex + GLuint program + GLenum programInterface + const GLchar *name + + + GLint glGetProgramResourceLocationIndexEXT + GLuint program + GLenum programInterface + const GLchar *name + + + void glGetProgramResourceName + GLuint program + GLenum programInterface + GLuint index + GLsizei bufSize + GLsizei *length + GLchar *name + + + void glGetProgramResourcefvNV + GLuint program + GLenum programInterface + GLuint index + GLsizei propCount + const GLenum *props + GLsizei count + GLsizei *length + GLfloat *params + + + void glGetProgramResourceiv + GLuint program + GLenum programInterface + GLuint index + GLsizei propCount + const GLenum *props + GLsizei count + GLsizei *length + GLint *params + + + void glGetProgramStageiv + GLuint program + GLenum shadertype + GLenum pname + GLint *values + + + void glGetProgramStringARB + GLenum target + GLenum pname + void *string + + + void glGetProgramStringNV + GLuint id + GLenum pname + GLubyte *program + + + + void glGetProgramSubroutineParameteruivNV + GLenum target + GLuint index + GLuint *param + + + void glGetProgramiv + GLuint program + GLenum pname + GLint *params + + + + void glGetProgramivARB + GLenum target + GLenum pname + GLint *params + + + void glGetProgramivNV + GLuint id + GLenum pname + GLint *params + + + + void glGetQueryBufferObjecti64v + GLuint id + GLuint buffer + GLenum pname + GLintptr offset + + + void glGetQueryBufferObjectiv + GLuint id + GLuint buffer + GLenum pname + GLintptr offset + + + void glGetQueryBufferObjectui64v + GLuint id + GLuint buffer + GLenum pname + GLintptr offset + + + void glGetQueryBufferObjectuiv + GLuint id + GLuint buffer + GLenum pname + GLintptr offset + + + void glGetQueryIndexediv + GLenum target + GLuint index + GLenum pname + GLint *params + + + void glGetQueryObjecti64v + GLuint id + GLenum pname + GLint64 *params + + + void glGetQueryObjecti64vEXT + GLuint id + GLenum pname + GLint64 *params + + + + + void glGetQueryObjectiv + GLuint id + GLenum pname + GLint *params + + + + void glGetQueryObjectivARB + GLuint id + GLenum pname + GLint *params + + + + void glGetQueryObjectivEXT + GLuint id + GLenum pname + GLint *params + + + + void glGetQueryObjectui64v + GLuint id + GLenum pname + GLuint64 *params + + + void glGetQueryObjectui64vEXT + GLuint id + GLenum pname + GLuint64 *params + + + + + void glGetQueryObjectuiv + GLuint id + GLenum pname + GLuint *params + + + + void glGetQueryObjectuivARB + GLuint id + GLenum pname + GLuint *params + + + + void glGetQueryObjectuivEXT + GLuint id + GLenum pname + GLuint *params + + + void glGetQueryiv + GLenum target + GLenum pname + GLint *params + + + + void glGetQueryivARB + GLenum target + GLenum pname + GLint *params + + + + void glGetQueryivEXT + GLenum target + GLenum pname + GLint *params + + + void glGetRenderbufferParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetRenderbufferParameterivEXT + GLenum target + GLenum pname + GLint *params + + + + + void glGetRenderbufferParameterivOES + GLenum target + GLenum pname + GLint *params + + + void glGetSamplerParameterIiv + GLuint sampler + GLenum pname + GLint *params + + + void glGetSamplerParameterIivEXT + GLuint sampler + GLenum pname + GLint *params + + + + void glGetSamplerParameterIivOES + GLuint sampler + GLenum pname + GLint *params + + + + void glGetSamplerParameterIuiv + GLuint sampler + GLenum pname + GLuint *params + + + void glGetSamplerParameterIuivEXT + GLuint sampler + GLenum pname + GLuint *params + + + + void glGetSamplerParameterIuivOES + GLuint sampler + GLenum pname + GLuint *params + + + + void glGetSamplerParameterfv + GLuint sampler + GLenum pname + GLfloat *params + + + void glGetSamplerParameteriv + GLuint sampler + GLenum pname + GLint *params + + + void glGetSemaphoreParameterivNV + GLuint semaphore + GLenum pname + GLint *params + + + void glGetSemaphoreParameterui64vEXT + GLuint semaphore + GLenum pname + GLuint64 *params + + + void glGetSeparableFilter + GLenum target + GLenum format + GLenum type + void *row + void *column + void *span + + + + + void glGetSeparableFilterEXT + GLenum target + GLenum format + GLenum type + void *row + void *column + void *span + + + + void glGetShaderInfoLog + GLuint shader + GLsizei bufSize + GLsizei *length + GLchar *infoLog + + + + void glGetShaderPrecisionFormat + GLenum shadertype + GLenum precisiontype + GLint *range + GLint *precision + + + void glGetShaderSource + GLuint shader + GLsizei bufSize + GLsizei *length + GLchar *source + + + void glGetShaderSourceARB + GLhandleARB obj + GLsizei maxLength + GLsizei *length + GLcharARB *source + + + + void glGetShaderiv + GLuint shader + GLenum pname + GLint *params + + + + void glGetShadingRateImagePaletteNV + GLuint viewport + GLuint entry + GLenum *rate + + + void glGetShadingRateSampleLocationivNV + GLenum rate + GLuint samples + GLuint index + GLint *location + + + void glGetSharpenTexFuncSGIS + GLenum target + GLfloat *points + + + + GLushort glGetStageIndexNV + GLenum shadertype + + + + const GLubyte *glGetString + GLenum name + + + + const GLubyte *glGetStringi + GLenum name + GLuint index + + + + GLuint glGetSubroutineIndex + GLuint program + GLenum shadertype + const GLchar *name + + + GLint glGetSubroutineUniformLocation + GLuint program + GLenum shadertype + const GLchar *name + + + void glGetSynciv + GLsync sync + GLenum pname + GLsizei count + GLsizei *length + GLint *values + + + void glGetSyncivAPPLE + GLsync sync + GLenum pname + GLsizei count + GLsizei *length + GLint *values + + + + void glGetTexBumpParameterfvATI + GLenum pname + GLfloat *param + + + void glGetTexBumpParameterivATI + GLenum pname + GLint *param + + + void glGetTexEnvfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetTexEnviv + GLenum target + GLenum pname + GLint *params + + + + void glGetTexEnvxv + GLenum target + GLenum pname + GLfixed *params + + + void glGetTexEnvxvOES + GLenum target + GLenum pname + GLfixed *params + + + void glGetTexFilterFuncSGIS + GLenum target + GLenum filter + GLfloat *weights + + + + void glGetTexGendv + GLenum coord + GLenum pname + GLdouble *params + + + + void glGetTexGenfv + GLenum coord + GLenum pname + GLfloat *params + + + + void glGetTexGenfvOES + GLenum coord + GLenum pname + GLfloat *params + + + void glGetTexGeniv + GLenum coord + GLenum pname + GLint *params + + + + void glGetTexGenivOES + GLenum coord + GLenum pname + GLint *params + + + void glGetTexGenxvOES + GLenum coord + GLenum pname + GLfixed *params + + + void glGetTexImage + GLenum target + GLint level + GLenum format + GLenum type + void *pixels + + + + + void glGetTexLevelParameterfv + GLenum target + GLint level + GLenum pname + GLfloat *params + + + + void glGetTexLevelParameteriv + GLenum target + GLint level + GLenum pname + GLint *params + + + + void glGetTexLevelParameterxvOES + GLenum target + GLint level + GLenum pname + GLfixed *params + + + void glGetTexParameterIiv + GLenum target + GLenum pname + GLint *params + + + + void glGetTexParameterIivEXT + GLenum target + GLenum pname + GLint *params + + + + void glGetTexParameterIivOES + GLenum target + GLenum pname + GLint *params + + + + void glGetTexParameterIuiv + GLenum target + GLenum pname + GLuint *params + + + + void glGetTexParameterIuivEXT + GLenum target + GLenum pname + GLuint *params + + + + void glGetTexParameterIuivOES + GLenum target + GLenum pname + GLuint *params + + + + void glGetTexParameterPointervAPPLE + GLenum target + GLenum pname + void **params + + + void glGetTexParameterfv + GLenum target + GLenum pname + GLfloat *params + + + + void glGetTexParameteriv + GLenum target + GLenum pname + GLint *params + + + + void glGetTexParameterxv + GLenum target + GLenum pname + GLfixed *params + + + void glGetTexParameterxvOES + GLenum target + GLenum pname + GLfixed *params + + + GLuint64 glGetTextureHandleARB + GLuint texture + + + GLuint64 glGetTextureHandleIMG + GLuint texture + + + + GLuint64 glGetTextureHandleNV + GLuint texture + + + void glGetTextureImage + GLuint texture + GLint level + GLenum format + GLenum type + GLsizei bufSize + void *pixels + + + void glGetTextureImageEXT + GLuint texture + GLenum target + GLint level + GLenum format + GLenum type + void *pixels + + + void glGetTextureLevelParameterfv + GLuint texture + GLint level + GLenum pname + GLfloat *params + + + void glGetTextureLevelParameterfvEXT + GLuint texture + GLenum target + GLint level + GLenum pname + GLfloat *params + + + void glGetTextureLevelParameteriv + GLuint texture + GLint level + GLenum pname + GLint *params + + + void glGetTextureLevelParameterivEXT + GLuint texture + GLenum target + GLint level + GLenum pname + GLint *params + + + void glGetTextureParameterIiv + GLuint texture + GLenum pname + GLint *params + + + void glGetTextureParameterIivEXT + GLuint texture + GLenum target + GLenum pname + GLint *params + + + void glGetTextureParameterIuiv + GLuint texture + GLenum pname + GLuint *params + + + void glGetTextureParameterIuivEXT + GLuint texture + GLenum target + GLenum pname + GLuint *params + + + void glGetTextureParameterfv + GLuint texture + GLenum pname + GLfloat *params + + + void glGetTextureParameterfvEXT + GLuint texture + GLenum target + GLenum pname + GLfloat *params + + + void glGetTextureParameteriv + GLuint texture + GLenum pname + GLint *params + + + void glGetTextureParameterivEXT + GLuint texture + GLenum target + GLenum pname + GLint *params + + + GLuint64 glGetTextureSamplerHandleARB + GLuint texture + GLuint sampler + + + GLuint64 glGetTextureSamplerHandleIMG + GLuint texture + GLuint sampler + + + + GLuint64 glGetTextureSamplerHandleNV + GLuint texture + GLuint sampler + + + void glGetTextureSubImage + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + GLsizei bufSize + void *pixels + + + void glGetTrackMatrixivNV + GLenum target + GLuint address + GLenum pname + GLint *params + + + + void glGetTransformFeedbackVarying + GLuint program + GLuint index + GLsizei bufSize + GLsizei *length + GLsizei *size + GLenum *type + GLchar *name + + + + void glGetTransformFeedbackVaryingEXT + GLuint program + GLuint index + GLsizei bufSize + GLsizei *length + GLsizei *size + GLenum *type + GLchar *name + + + + void glGetTransformFeedbackVaryingNV + GLuint program + GLuint index + GLint *location + + + void glGetTransformFeedbacki64_v + GLuint xfb + GLenum pname + GLuint index + GLint64 *param + + + void glGetTransformFeedbacki_v + GLuint xfb + GLenum pname + GLuint index + GLint *param + + + void glGetTransformFeedbackiv + GLuint xfb + GLenum pname + GLint *param + + + void glGetTranslatedShaderSourceANGLE + GLuint shader + GLsizei bufSize + GLsizei *length + GLchar *source + + + GLuint glGetUniformBlockIndex + GLuint program + const GLchar *uniformBlockName + + + + GLint glGetUniformBufferSizeEXT + GLuint program + GLint location + + + void glGetUniformIndices + GLuint program + GLsizei uniformCount + const GLchar *const*uniformNames + GLuint *uniformIndices + + + + GLint glGetUniformLocation + GLuint program + const GLchar *name + + + GLint glGetUniformLocationARB + GLhandleARB programObj + const GLcharARB *name + + + + GLintptr glGetUniformOffsetEXT + GLuint program + GLint location + + + void glGetUniformSubroutineuiv + GLenum shadertype + GLint location + GLuint *params + + + void glGetUniformdv + GLuint program + GLint location + GLdouble *params + + + void glGetUniformfv + GLuint program + GLint location + GLfloat *params + + + void glGetUniformfvARB + GLhandleARB programObj + GLint location + GLfloat *params + + + + void glGetUniformi64vARB + GLuint program + GLint location + GLint64 *params + + + void glGetUniformi64vNV + GLuint program + GLint location + GLint64EXT *params + + + void glGetUniformiv + GLuint program + GLint location + GLint *params + + + void glGetUniformivARB + GLhandleARB programObj + GLint location + GLint *params + + + + void glGetUniformui64vARB + GLuint program + GLint location + GLuint64 *params + + + void glGetUniformui64vNV + GLuint program + GLint location + GLuint64EXT *params + + + void glGetUniformuiv + GLuint program + GLint location + GLuint *params + + + void glGetUniformuivEXT + GLuint program + GLint location + GLuint *params + + + + void glGetUnsignedBytevEXT + GLenum pname + GLubyte *data + + + void glGetUnsignedBytei_vEXT + GLenum target + GLuint index + GLubyte *data + + + void glGetVariantArrayObjectfvATI + GLuint id + GLenum pname + GLfloat *params + + + void glGetVariantArrayObjectivATI + GLuint id + GLenum pname + GLint *params + + + void glGetVariantBooleanvEXT + GLuint id + GLenum value + GLboolean *data + + + void glGetVariantFloatvEXT + GLuint id + GLenum value + GLfloat *data + + + void glGetVariantIntegervEXT + GLuint id + GLenum value + GLint *data + + + void glGetVariantPointervEXT + GLuint id + GLenum value + void **data + + + GLint glGetVaryingLocationNV + GLuint program + const GLchar *name + + + void glGetVertexArrayIndexed64iv + GLuint vaobj + GLuint index + GLenum pname + GLint64 *param + + + void glGetVertexArrayIndexediv + GLuint vaobj + GLuint index + GLenum pname + GLint *param + + + void glGetVertexArrayIntegeri_vEXT + GLuint vaobj + GLuint index + GLenum pname + GLint *param + + + void glGetVertexArrayIntegervEXT + GLuint vaobj + GLenum pname + GLint *param + + + void glGetVertexArrayPointeri_vEXT + GLuint vaobj + GLuint index + GLenum pname + void **param + + + void glGetVertexArrayPointervEXT + GLuint vaobj + GLenum pname + void **param + + + void glGetVertexArrayiv + GLuint vaobj + GLenum pname + GLint *param + + + void glGetVertexAttribArrayObjectfvATI + GLuint index + GLenum pname + GLfloat *params + + + void glGetVertexAttribArrayObjectivATI + GLuint index + GLenum pname + GLint *params + + + void glGetVertexAttribIiv + GLuint index + GLenum pname + GLint *params + + + void glGetVertexAttribIivEXT + GLuint index + GLenum pname + GLint *params + + + + void glGetVertexAttribIuiv + GLuint index + GLenum pname + GLuint *params + + + void glGetVertexAttribIuivEXT + GLuint index + GLenum pname + GLuint *params + + + + void glGetVertexAttribLdv + GLuint index + GLenum pname + GLdouble *params + + + void glGetVertexAttribLdvEXT + GLuint index + GLenum pname + GLdouble *params + + + + void glGetVertexAttribLi64vNV + GLuint index + GLenum pname + GLint64EXT *params + + + void glGetVertexAttribLui64vARB + GLuint index + GLenum pname + GLuint64EXT *params + + + void glGetVertexAttribLui64vNV + GLuint index + GLenum pname + GLuint64EXT *params + + + void glGetVertexAttribPointerv + GLuint index + GLenum pname + void **pointer + + + + void glGetVertexAttribPointervARB + GLuint index + GLenum pname + void **pointer + + + + void glGetVertexAttribPointervNV + GLuint index + GLenum pname + void **pointer + + + + void glGetVertexAttribdv + GLuint index + GLenum pname + GLdouble *params + + + + void glGetVertexAttribdvARB + GLuint index + GLenum pname + GLdouble *params + + + + + void glGetVertexAttribdvNV + GLuint index + GLenum pname + GLdouble *params + + + + + void glGetVertexAttribfv + GLuint index + GLenum pname + GLfloat *params + + + + void glGetVertexAttribfvARB + GLuint index + GLenum pname + GLfloat *params + + + + + void glGetVertexAttribfvNV + GLuint index + GLenum pname + GLfloat *params + + + + + void glGetVertexAttribiv + GLuint index + GLenum pname + GLint *params + + + + void glGetVertexAttribivARB + GLuint index + GLenum pname + GLint *params + + + + + void glGetVertexAttribivNV + GLuint index + GLenum pname + GLint *params + + + + + void glGetVideoCaptureStreamdvNV + GLuint video_capture_slot + GLuint stream + GLenum pname + GLdouble *params + + + void glGetVideoCaptureStreamfvNV + GLuint video_capture_slot + GLuint stream + GLenum pname + GLfloat *params + + + void glGetVideoCaptureStreamivNV + GLuint video_capture_slot + GLuint stream + GLenum pname + GLint *params + + + void glGetVideoCaptureivNV + GLuint video_capture_slot + GLenum pname + GLint *params + + + void glGetVideoi64vNV + GLuint video_slot + GLenum pname + GLint64EXT *params + + + void glGetVideoivNV + GLuint video_slot + GLenum pname + GLint *params + + + void glGetVideoui64vNV + GLuint video_slot + GLenum pname + GLuint64EXT *params + + + void glGetVideouivNV + GLuint video_slot + GLenum pname + GLuint *params + + + void glGetnColorTable + GLenum target + GLenum format + GLenum type + GLsizei bufSize + void *table + + + void glGetnColorTableARB + GLenum target + GLenum format + GLenum type + GLsizei bufSize + void *table + + + void glGetnCompressedTexImage + GLenum target + GLint lod + GLsizei bufSize + void *pixels + + + void glGetnCompressedTexImageARB + GLenum target + GLint lod + GLsizei bufSize + void *img + + + void glGetnConvolutionFilter + GLenum target + GLenum format + GLenum type + GLsizei bufSize + void *image + + + void glGetnConvolutionFilterARB + GLenum target + GLenum format + GLenum type + GLsizei bufSize + void *image + + + void glGetnHistogram + GLenum target + GLboolean reset + GLenum format + GLenum type + GLsizei bufSize + void *values + + + void glGetnHistogramARB + GLenum target + GLboolean reset + GLenum format + GLenum type + GLsizei bufSize + void *values + + + void glGetnMapdv + GLenum target + GLenum query + GLsizei bufSize + GLdouble *v + + + void glGetnMapdvARB + GLenum target + GLenum query + GLsizei bufSize + GLdouble *v + + + void glGetnMapfv + GLenum target + GLenum query + GLsizei bufSize + GLfloat *v + + + void glGetnMapfvARB + GLenum target + GLenum query + GLsizei bufSize + GLfloat *v + + + void glGetnMapiv + GLenum target + GLenum query + GLsizei bufSize + GLint *v + + + void glGetnMapivARB + GLenum target + GLenum query + GLsizei bufSize + GLint *v + + + void glGetnMinmax + GLenum target + GLboolean reset + GLenum format + GLenum type + GLsizei bufSize + void *values + + + void glGetnMinmaxARB + GLenum target + GLboolean reset + GLenum format + GLenum type + GLsizei bufSize + void *values + + + void glGetnPixelMapfv + GLenum map + GLsizei bufSize + GLfloat *values + + + void glGetnPixelMapfvARB + GLenum map + GLsizei bufSize + GLfloat *values + + + void glGetnPixelMapuiv + GLenum map + GLsizei bufSize + GLuint *values + + + void glGetnPixelMapuivARB + GLenum map + GLsizei bufSize + GLuint *values + + + void glGetnPixelMapusv + GLenum map + GLsizei bufSize + GLushort *values + + + void glGetnPixelMapusvARB + GLenum map + GLsizei bufSize + GLushort *values + + + void glGetnPolygonStipple + GLsizei bufSize + GLubyte *pattern + + + void glGetnPolygonStippleARB + GLsizei bufSize + GLubyte *pattern + + + void glGetnSeparableFilter + GLenum target + GLenum format + GLenum type + GLsizei rowBufSize + void *row + GLsizei columnBufSize + void *column + void *span + + + void glGetnSeparableFilterARB + GLenum target + GLenum format + GLenum type + GLsizei rowBufSize + void *row + GLsizei columnBufSize + void *column + void *span + + + void glGetnTexImage + GLenum target + GLint level + GLenum format + GLenum type + GLsizei bufSize + void *pixels + + + void glGetnTexImageARB + GLenum target + GLint level + GLenum format + GLenum type + GLsizei bufSize + void *img + + + void glGetnUniformdv + GLuint program + GLint location + GLsizei bufSize + GLdouble *params + + + void glGetnUniformdvARB + GLuint program + GLint location + GLsizei bufSize + GLdouble *params + + + void glGetnUniformfv + GLuint program + GLint location + GLsizei bufSize + GLfloat *params + + + void glGetnUniformfvARB + GLuint program + GLint location + GLsizei bufSize + GLfloat *params + + + void glGetnUniformfvEXT + GLuint program + GLint location + GLsizei bufSize + GLfloat *params + + + + void glGetnUniformfvKHR + GLuint program + GLint location + GLsizei bufSize + GLfloat *params + + + + void glGetnUniformi64vARB + GLuint program + GLint location + GLsizei bufSize + GLint64 *params + + + void glGetnUniformiv + GLuint program + GLint location + GLsizei bufSize + GLint *params + + + void glGetnUniformivARB + GLuint program + GLint location + GLsizei bufSize + GLint *params + + + void glGetnUniformivEXT + GLuint program + GLint location + GLsizei bufSize + GLint *params + + + + void glGetnUniformivKHR + GLuint program + GLint location + GLsizei bufSize + GLint *params + + + + void glGetnUniformui64vARB + GLuint program + GLint location + GLsizei bufSize + GLuint64 *params + + + void glGetnUniformuiv + GLuint program + GLint location + GLsizei bufSize + GLuint *params + + + void glGetnUniformuivARB + GLuint program + GLint location + GLsizei bufSize + GLuint *params + + + void glGetnUniformuivKHR + GLuint program + GLint location + GLsizei bufSize + GLuint *params + + + + void glGlobalAlphaFactorbSUN + GLbyte factor + + + void glGlobalAlphaFactordSUN + GLdouble factor + + + void glGlobalAlphaFactorfSUN + GLfloat factor + + + void glGlobalAlphaFactoriSUN + GLint factor + + + void glGlobalAlphaFactorsSUN + GLshort factor + + + void glGlobalAlphaFactorubSUN + GLubyte factor + + + void glGlobalAlphaFactoruiSUN + GLuint factor + + + void glGlobalAlphaFactorusSUN + GLushort factor + + + void glHint + GLenum target + GLenum mode + + + + void glHintPGI + GLenum target + GLint mode + + + void glHistogram + GLenum target + GLsizei width + GLenum internalformat + GLboolean sink + + + + void glHistogramEXT + GLenum target + GLsizei width + GLenum internalformat + GLboolean sink + + + + + void glIglooInterfaceSGIX + GLenum pname + const void *params + + + + void glImageTransformParameterfHP + GLenum target + GLenum pname + GLfloat param + + + void glImageTransformParameterfvHP + GLenum target + GLenum pname + const GLfloat *params + + + void glImageTransformParameteriHP + GLenum target + GLenum pname + GLint param + + + void glImageTransformParameterivHP + GLenum target + GLenum pname + const GLint *params + + + void glImportMemoryFdEXT + GLuint memory + GLuint64 size + GLenum handleType + GLint fd + + + void glImportMemoryWin32HandleEXT + GLuint memory + GLuint64 size + GLenum handleType + void *handle + + + void glImportMemoryWin32NameEXT + GLuint memory + GLuint64 size + GLenum handleType + const void *name + + + void glImportSemaphoreFdEXT + GLuint semaphore + GLenum handleType + GLint fd + + + void glImportSemaphoreWin32HandleEXT + GLuint semaphore + GLenum handleType + void *handle + + + void glImportSemaphoreWin32NameEXT + GLuint semaphore + GLenum handleType + const void *name + + + GLsync glImportSyncEXT + GLenum external_sync_type + GLintptr external_sync + GLbitfield flags + + + void glIndexFormatNV + GLenum type + GLsizei stride + + + void glIndexFuncEXT + GLenum func + GLclampf ref + + + void glIndexMask + GLuint mask + + + + void glIndexMaterialEXT + GLenum face + GLenum mode + + + void glIndexPointer + GLenum type + GLsizei stride + const void *pointer + + + void glIndexPointerEXT + GLenum type + GLsizei stride + GLsizei count + const void *pointer + + + void glIndexPointerListIBM + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glIndexd + GLdouble c + + + + void glIndexdv + const GLdouble *c + + + + void glIndexf + GLfloat c + + + + void glIndexfv + const GLfloat *c + + + + void glIndexi + GLint c + + + + void glIndexiv + const GLint *c + + + + void glIndexs + GLshort c + + + + void glIndexsv + const GLshort *c + + + + void glIndexub + GLubyte c + + + + void glIndexubv + const GLubyte *c + + + + void glIndexxOES + GLfixed component + + + void glIndexxvOES + const GLfixed *component + + + void glInitNames + + + + void glInsertComponentEXT + GLuint res + GLuint src + GLuint num + + + void glInsertEventMarkerEXT + GLsizei length + const GLchar *marker + + + void glInstrumentsBufferSGIX + GLsizei size + GLint *buffer + + + + void glInterleavedArrays + GLenum format + GLsizei stride + const void *pointer + + + void glInterpolatePathsNV + GLuint resultPath + GLuint pathA + GLuint pathB + GLfloat weight + + + void glInvalidateBufferData + GLuint buffer + + + void glInvalidateBufferSubData + GLuint buffer + GLintptr offset + GLsizeiptr length + + + void glInvalidateFramebuffer + GLenum target + GLsizei numAttachments + const GLenum *attachments + + + void glInvalidateNamedFramebufferData + GLuint framebuffer + GLsizei numAttachments + const GLenum *attachments + + + void glInvalidateNamedFramebufferSubData + GLuint framebuffer + GLsizei numAttachments + const GLenum *attachments + GLint x + GLint y + GLsizei width + GLsizei height + + + void glInvalidateSubFramebuffer + GLenum target + GLsizei numAttachments + const GLenum *attachments + GLint x + GLint y + GLsizei width + GLsizei height + + + void glInvalidateTexImage + GLuint texture + GLint level + + + void glInvalidateTexSubImage + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + + + GLboolean glIsAsyncMarkerSGIX + GLuint marker + + + GLboolean glIsBuffer + GLuint buffer + + + GLboolean glIsBufferARB + GLuint buffer + + + + GLboolean glIsBufferResidentNV + GLenum target + + + GLboolean glIsCommandListNV + GLuint list + + + GLboolean glIsEnabled + GLenum cap + + + + GLboolean glIsEnabledIndexedEXT + GLenum target + GLuint index + + + + + GLboolean glIsEnabledi + GLenum target + GLuint index + + + GLboolean glIsEnablediEXT + GLenum target + GLuint index + + + + GLboolean glIsEnablediNV + GLenum target + GLuint index + + + + GLboolean glIsEnablediOES + GLenum target + GLuint index + + + + GLboolean glIsFenceAPPLE + GLuint fence + + + GLboolean glIsFenceNV + GLuint fence + + + + GLboolean glIsFramebuffer + GLuint framebuffer + + + + GLboolean glIsFramebufferEXT + GLuint framebuffer + + + + + GLboolean glIsFramebufferOES + GLuint framebuffer + + + GLboolean glIsImageHandleResidentARB + GLuint64 handle + + + GLboolean glIsImageHandleResidentNV + GLuint64 handle + + + GLboolean glIsList + GLuint list + + + + GLboolean glIsMemoryObjectEXT + GLuint memoryObject + + + GLboolean glIsNameAMD + GLenum identifier + GLuint name + + + GLboolean glIsNamedBufferResidentNV + GLuint buffer + + + GLboolean glIsNamedStringARB + GLint namelen + const GLchar *name + + + GLboolean glIsObjectBufferATI + GLuint buffer + + + GLboolean glIsOcclusionQueryNV + GLuint id + + + GLboolean glIsPathNV + GLuint path + + + GLboolean glIsPointInFillPathNV + GLuint path + GLuint mask + GLfloat x + GLfloat y + + + GLboolean glIsPointInStrokePathNV + GLuint path + GLfloat x + GLfloat y + + + GLboolean glIsProgram + GLuint program + + + + GLboolean glIsProgramARB + GLuint program + + + + GLboolean glIsProgramNV + GLuint id + + + + + GLboolean glIsProgramPipeline + GLuint pipeline + + + GLboolean glIsProgramPipelineEXT + GLuint pipeline + + + GLboolean glIsQuery + GLuint id + + + + GLboolean glIsQueryARB + GLuint id + + + + GLboolean glIsQueryEXT + GLuint id + + + GLboolean glIsRenderbuffer + GLuint renderbuffer + + + + GLboolean glIsRenderbufferEXT + GLuint renderbuffer + + + + + GLboolean glIsRenderbufferOES + GLuint renderbuffer + + + GLboolean glIsSemaphoreEXT + GLuint semaphore + + + GLboolean glIsSampler + GLuint sampler + + + GLboolean glIsShader + GLuint shader + + + + GLboolean glIsStateNV + GLuint state + + + GLboolean glIsSync + GLsync sync + + + GLboolean glIsSyncAPPLE + GLsync sync + + + + GLboolean glIsTexture + GLuint texture + + + + GLboolean glIsTextureEXT + GLuint texture + + + + GLboolean glIsTextureHandleResidentARB + GLuint64 handle + + + GLboolean glIsTextureHandleResidentNV + GLuint64 handle + + + GLboolean glIsTransformFeedback + GLuint id + + + GLboolean glIsTransformFeedbackNV + GLuint id + + + + GLboolean glIsVariantEnabledEXT + GLuint id + GLenum cap + + + GLboolean glIsVertexArray + GLuint array + + + + GLboolean glIsVertexArrayAPPLE + GLuint array + + + + GLboolean glIsVertexArrayOES + GLuint array + + + + GLboolean glIsVertexAttribEnabledAPPLE + GLuint index + GLenum pname + + + void glLGPUCopyImageSubDataNVX + GLuint sourceGpu + GLbitfield destinationGpuMask + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srxY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei width + GLsizei height + GLsizei depth + + + void glLGPUInterlockNVX + + + void glLGPUNamedBufferSubDataNVX + GLbitfield gpuMask + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + + + void glLabelObjectEXT + GLenum type + GLuint object + GLsizei length + const GLchar *label + + + void glLightEnviSGIX + GLenum pname + GLint param + + + void glLightModelf + GLenum pname + GLfloat param + + + + void glLightModelfv + GLenum pname + const GLfloat *params + + + + void glLightModeli + GLenum pname + GLint param + + + + void glLightModeliv + GLenum pname + const GLint *params + + + + void glLightModelx + GLenum pname + GLfixed param + + + void glLightModelxOES + GLenum pname + GLfixed param + + + void glLightModelxv + GLenum pname + const GLfixed *param + + + void glLightModelxvOES + GLenum pname + const GLfixed *param + + + void glLightf + GLenum light + GLenum pname + GLfloat param + + + + void glLightfv + GLenum light + GLenum pname + const GLfloat *params + + + + void glLighti + GLenum light + GLenum pname + GLint param + + + + void glLightiv + GLenum light + GLenum pname + const GLint *params + + + + void glLightx + GLenum light + GLenum pname + GLfixed param + + + void glLightxOES + GLenum light + GLenum pname + GLfixed param + + + void glLightxv + GLenum light + GLenum pname + const GLfixed *params + + + void glLightxvOES + GLenum light + GLenum pname + const GLfixed *params + + + void glLineStipple + GLint factor + GLushort pattern + + + + void glLineWidth + GLfloat width + + + + void glLineWidthx + GLfixed width + + + void glLineWidthxOES + GLfixed width + + + void glLinkProgram + GLuint program + + + void glLinkProgramARB + GLhandleARB programObj + + + + void glListBase + GLuint base + + + + void glListDrawCommandsStatesClientNV + GLuint list + GLuint segment + const void **indirects + const GLsizei *sizes + const GLuint *states + const GLuint *fbos + GLuint count + + + void glListParameterfSGIX + GLuint list + GLenum pname + GLfloat param + + + + void glListParameterfvSGIX + GLuint list + GLenum pname + const GLfloat *params + + + + void glListParameteriSGIX + GLuint list + GLenum pname + GLint param + + + + void glListParameterivSGIX + GLuint list + GLenum pname + const GLint *params + + + + void glLoadIdentity + + + + void glLoadIdentityDeformationMapSGIX + GLbitfield mask + + + + void glLoadMatrixd + const GLdouble *m + + + + void glLoadMatrixf + const GLfloat *m + + + + void glLoadMatrixx + const GLfixed *m + + + void glLoadMatrixxOES + const GLfixed *m + + + void glLoadName + GLuint name + + + + void glLoadPaletteFromModelViewMatrixOES + + + void glLoadProgramNV + GLenum target + GLuint id + GLsizei len + const GLubyte *program + + + + void glLoadTransposeMatrixd + const GLdouble *m + + + void glLoadTransposeMatrixdARB + const GLdouble *m + + + + void glLoadTransposeMatrixf + const GLfloat *m + + + void glLoadTransposeMatrixfARB + const GLfloat *m + + + + void glLoadTransposeMatrixxOES + const GLfixed *m + + + void glLockArraysEXT + GLint first + GLsizei count + + + void glLogicOp + GLenum opcode + + + + void glMakeBufferNonResidentNV + GLenum target + + + void glMakeBufferResidentNV + GLenum target + GLenum access + + + void glMakeImageHandleNonResidentARB + GLuint64 handle + + + void glMakeImageHandleNonResidentNV + GLuint64 handle + + + void glMakeImageHandleResidentARB + GLuint64 handle + GLenum access + + + void glMakeImageHandleResidentNV + GLuint64 handle + GLenum access + + + void glMakeNamedBufferNonResidentNV + GLuint buffer + + + void glMakeNamedBufferResidentNV + GLuint buffer + GLenum access + + + void glMakeTextureHandleNonResidentARB + GLuint64 handle + + + void glMakeTextureHandleNonResidentNV + GLuint64 handle + + + void glMakeTextureHandleResidentARB + GLuint64 handle + + + void glMakeTextureHandleResidentNV + GLuint64 handle + + + void glMap1d + GLenum target + GLdouble u1 + GLdouble u2 + GLint stride + GLint order + const GLdouble *points + + + + void glMap1f + GLenum target + GLfloat u1 + GLfloat u2 + GLint stride + GLint order + const GLfloat *points + + + + void glMap1xOES + GLenum target + GLfixed u1 + GLfixed u2 + GLint stride + GLint order + GLfixed points + + + void glMap2d + GLenum target + GLdouble u1 + GLdouble u2 + GLint ustride + GLint uorder + GLdouble v1 + GLdouble v2 + GLint vstride + GLint vorder + const GLdouble *points + + + + void glMap2f + GLenum target + GLfloat u1 + GLfloat u2 + GLint ustride + GLint uorder + GLfloat v1 + GLfloat v2 + GLint vstride + GLint vorder + const GLfloat *points + + + + void glMap2xOES + GLenum target + GLfixed u1 + GLfixed u2 + GLint ustride + GLint uorder + GLfixed v1 + GLfixed v2 + GLint vstride + GLint vorder + GLfixed points + + + void *glMapBuffer + GLenum target + GLenum access + + + void *glMapBufferARB + GLenum target + GLenum access + + + + void *glMapBufferOES + GLenum target + GLenum access + + + + void *glMapBufferRange + GLenum target + GLintptr offset + GLsizeiptr length + GLbitfield access + + + + void *glMapBufferRangeEXT + GLenum target + GLintptr offset + GLsizeiptr length + GLbitfield access + + + + void glMapControlPointsNV + GLenum target + GLuint index + GLenum type + GLsizei ustride + GLsizei vstride + GLint uorder + GLint vorder + GLboolean packed + const void *points + + + void glMapGrid1d + GLint un + GLdouble u1 + GLdouble u2 + + + + void glMapGrid1f + GLint un + GLfloat u1 + GLfloat u2 + + + + void glMapGrid1xOES + GLint n + GLfixed u1 + GLfixed u2 + + + void glMapGrid2d + GLint un + GLdouble u1 + GLdouble u2 + GLint vn + GLdouble v1 + GLdouble v2 + + + + void glMapGrid2f + GLint un + GLfloat u1 + GLfloat u2 + GLint vn + GLfloat v1 + GLfloat v2 + + + + void glMapGrid2xOES + GLint n + GLfixed u1 + GLfixed u2 + GLfixed v1 + GLfixed v2 + + + void *glMapNamedBuffer + GLuint buffer + GLenum access + + + void *glMapNamedBufferEXT + GLuint buffer + GLenum access + + + void *glMapNamedBufferRange + GLuint buffer + GLintptr offset + GLsizeiptr length + GLbitfield access + + + void *glMapNamedBufferRangeEXT + GLuint buffer + GLintptr offset + GLsizeiptr length + GLbitfield access + + + void *glMapObjectBufferATI + GLuint buffer + + + void glMapParameterfvNV + GLenum target + GLenum pname + const GLfloat *params + + + void glMapParameterivNV + GLenum target + GLenum pname + const GLint *params + + + void *glMapTexture2DINTEL + GLuint texture + GLint level + GLbitfield access + GLint *stride + GLenum *layout + + + void glMapVertexAttrib1dAPPLE + GLuint index + GLuint size + GLdouble u1 + GLdouble u2 + GLint stride + GLint order + const GLdouble *points + + + void glMapVertexAttrib1fAPPLE + GLuint index + GLuint size + GLfloat u1 + GLfloat u2 + GLint stride + GLint order + const GLfloat *points + + + void glMapVertexAttrib2dAPPLE + GLuint index + GLuint size + GLdouble u1 + GLdouble u2 + GLint ustride + GLint uorder + GLdouble v1 + GLdouble v2 + GLint vstride + GLint vorder + const GLdouble *points + + + void glMapVertexAttrib2fAPPLE + GLuint index + GLuint size + GLfloat u1 + GLfloat u2 + GLint ustride + GLint uorder + GLfloat v1 + GLfloat v2 + GLint vstride + GLint vorder + const GLfloat *points + + + void glMaterialf + GLenum face + GLenum pname + GLfloat param + + + + void glMaterialfv + GLenum face + GLenum pname + const GLfloat *params + + + + void glMateriali + GLenum face + GLenum pname + GLint param + + + + void glMaterialiv + GLenum face + GLenum pname + const GLint *params + + + + void glMaterialx + GLenum face + GLenum pname + GLfixed param + + + void glMaterialxOES + GLenum face + GLenum pname + GLfixed param + + + void glMaterialxv + GLenum face + GLenum pname + const GLfixed *param + + + void glMaterialxvOES + GLenum face + GLenum pname + const GLfixed *param + + + void glMatrixFrustumEXT + GLenum mode + GLdouble left + GLdouble right + GLdouble bottom + GLdouble top + GLdouble zNear + GLdouble zFar + + + void glMatrixIndexPointerARB + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glMatrixIndexPointerOES + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glMatrixIndexubvARB + GLint size + const GLubyte *indices + + + + void glMatrixIndexuivARB + GLint size + const GLuint *indices + + + + void glMatrixIndexusvARB + GLint size + const GLushort *indices + + + + void glMatrixLoad3x2fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixLoad3x3fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixLoadIdentityEXT + GLenum mode + + + void glMatrixLoadTranspose3x3fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixLoadTransposedEXT + GLenum mode + const GLdouble *m + + + void glMatrixLoadTransposefEXT + GLenum mode + const GLfloat *m + + + void glMatrixLoaddEXT + GLenum mode + const GLdouble *m + + + void glMatrixLoadfEXT + GLenum mode + const GLfloat *m + + + void glMatrixMode + GLenum mode + + + + void glMatrixMult3x2fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixMult3x3fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixMultTranspose3x3fNV + GLenum matrixMode + const GLfloat *m + + + void glMatrixMultTransposedEXT + GLenum mode + const GLdouble *m + + + void glMatrixMultTransposefEXT + GLenum mode + const GLfloat *m + + + void glMatrixMultdEXT + GLenum mode + const GLdouble *m + + + void glMatrixMultfEXT + GLenum mode + const GLfloat *m + + + void glMatrixOrthoEXT + GLenum mode + GLdouble left + GLdouble right + GLdouble bottom + GLdouble top + GLdouble zNear + GLdouble zFar + + + void glMatrixPopEXT + GLenum mode + + + void glMatrixPushEXT + GLenum mode + + + void glMatrixRotatedEXT + GLenum mode + GLdouble angle + GLdouble x + GLdouble y + GLdouble z + + + void glMatrixRotatefEXT + GLenum mode + GLfloat angle + GLfloat x + GLfloat y + GLfloat z + + + void glMatrixScaledEXT + GLenum mode + GLdouble x + GLdouble y + GLdouble z + + + void glMatrixScalefEXT + GLenum mode + GLfloat x + GLfloat y + GLfloat z + + + void glMatrixTranslatedEXT + GLenum mode + GLdouble x + GLdouble y + GLdouble z + + + void glMatrixTranslatefEXT + GLenum mode + GLfloat x + GLfloat y + GLfloat z + + + void glMaxActiveShaderCoresARM + GLuint count + + + void glMaxShaderCompilerThreadsKHR + GLuint count + + + void glMaxShaderCompilerThreadsARB + GLuint count + + + + void glMemoryBarrier + GLbitfield barriers + + + void glMemoryBarrierByRegion + GLbitfield barriers + + + void glMemoryBarrierEXT + GLbitfield barriers + + + + void glMemoryObjectParameterivEXT + GLuint memoryObject + GLenum pname + const GLint *params + + + void glMinSampleShading + GLfloat value + + + void glMinSampleShadingARB + GLfloat value + + + + void glMinSampleShadingOES + GLfloat value + + + + void glMinmax + GLenum target + GLenum internalformat + GLboolean sink + + + + void glMinmaxEXT + GLenum target + GLenum internalformat + GLboolean sink + + + + + void glMultMatrixd + const GLdouble *m + + + + void glMultMatrixf + const GLfloat *m + + + + void glMultMatrixx + const GLfixed *m + + + void glMultMatrixxOES + const GLfixed *m + + + void glMultTransposeMatrixd + const GLdouble *m + + + void glMultTransposeMatrixdARB + const GLdouble *m + + + + void glMultTransposeMatrixf + const GLfloat *m + + + void glMultTransposeMatrixfARB + const GLfloat *m + + + + void glMultTransposeMatrixxOES + const GLfixed *m + + + void glMultiDrawArrays + GLenum mode + const GLint *first + const GLsizei *count + GLsizei drawcount + + + void glMultiDrawArraysEXT + GLenum mode + const GLint *first + const GLsizei *count + GLsizei primcount + + + + void glMultiDrawArraysIndirect + GLenum mode + const void *indirect + GLsizei drawcount + GLsizei stride + + + void glMultiDrawArraysIndirectAMD + GLenum mode + const void *indirect + GLsizei primcount + GLsizei stride + + + + void glMultiDrawArraysIndirectBindlessCountNV + GLenum mode + const void *indirect + GLsizei drawCount + GLsizei maxDrawCount + GLsizei stride + GLint vertexBufferCount + + + void glMultiDrawArraysIndirectBindlessNV + GLenum mode + const void *indirect + GLsizei drawCount + GLsizei stride + GLint vertexBufferCount + + + void glMultiDrawArraysIndirectCount + GLenum mode + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + void glMultiDrawArraysIndirectCountARB + GLenum mode + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + + void glMultiDrawArraysIndirectEXT + GLenum mode + const void *indirect + GLsizei drawcount + GLsizei stride + + + + void glMultiDrawElementArrayAPPLE + GLenum mode + const GLint *first + const GLsizei *count + GLsizei primcount + + + void glMultiDrawElements + GLenum mode + const GLsizei *count + GLenum type + const void *const*indices + GLsizei drawcount + + + void glMultiDrawElementsBaseVertex + GLenum mode + const GLsizei *count + GLenum type + const void *const*indices + GLsizei drawcount + const GLint *basevertex + + + void glMultiDrawElementsBaseVertexEXT + GLenum mode + const GLsizei *count + GLenum type + const void *const*indices + GLsizei drawcount + const GLint *basevertex + + + + void glMultiDrawElementsEXT + GLenum mode + const GLsizei *count + GLenum type + const void *const*indices + GLsizei primcount + + + + void glMultiDrawElementsIndirect + GLenum mode + GLenum type + const void *indirect + GLsizei drawcount + GLsizei stride + + + void glMultiDrawElementsIndirectAMD + GLenum mode + GLenum type + const void *indirect + GLsizei primcount + GLsizei stride + + + + void glMultiDrawElementsIndirectBindlessCountNV + GLenum mode + GLenum type + const void *indirect + GLsizei drawCount + GLsizei maxDrawCount + GLsizei stride + GLint vertexBufferCount + + + void glMultiDrawElementsIndirectBindlessNV + GLenum mode + GLenum type + const void *indirect + GLsizei drawCount + GLsizei stride + GLint vertexBufferCount + + + void glMultiDrawElementsIndirectCount + GLenum mode + GLenum type + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + void glMultiDrawElementsIndirectCountARB + GLenum mode + GLenum type + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + + void glMultiDrawElementsIndirectEXT + GLenum mode + GLenum type + const void *indirect + GLsizei drawcount + GLsizei stride + + + + void glMultiDrawMeshTasksIndirectEXT + GLintptr indirect + GLsizei drawcount + GLsizei stride + + + void glMultiDrawMeshTasksIndirectNV + GLintptr indirect + GLsizei drawcount + GLsizei stride + + + void glMultiDrawMeshTasksIndirectCountEXT + GLintptr indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + void glMultiDrawMeshTasksIndirectCountNV + GLintptr indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + + void glMultiDrawRangeElementArrayAPPLE + GLenum mode + GLuint start + GLuint end + const GLint *first + const GLsizei *count + GLsizei primcount + + + void glMultiModeDrawArraysIBM + const GLenum *mode + const GLint *first + const GLsizei *count + GLsizei primcount + GLint modestride + + + void glMultiModeDrawElementsIBM + const GLenum *mode + const GLsizei *count + GLenum type + const void *const*indices + GLsizei primcount + GLint modestride + + + void glMultiTexBufferEXT + GLenum texunit + GLenum target + GLenum internalformat + GLuint buffer + + + void glMultiTexCoord1bOES + GLenum texture + GLbyte s + + + void glMultiTexCoord1bvOES + GLenum texture + const GLbyte *coords + + + void glMultiTexCoord1d + GLenum target + GLdouble s + + + + void glMultiTexCoord1dARB + GLenum target + GLdouble s + + + + + void glMultiTexCoord1dv + GLenum target + const GLdouble *v + + + + void glMultiTexCoord1dvARB + GLenum target + const GLdouble *v + + + + + void glMultiTexCoord1f + GLenum target + GLfloat s + + + + void glMultiTexCoord1fARB + GLenum target + GLfloat s + + + + + void glMultiTexCoord1fv + GLenum target + const GLfloat *v + + + + void glMultiTexCoord1fvARB + GLenum target + const GLfloat *v + + + + + void glMultiTexCoord1hNV + GLenum target + GLhalfNV s + + + + void glMultiTexCoord1hvNV + GLenum target + const GLhalfNV *v + + + + void glMultiTexCoord1i + GLenum target + GLint s + + + + void glMultiTexCoord1iARB + GLenum target + GLint s + + + + + void glMultiTexCoord1iv + GLenum target + const GLint *v + + + + void glMultiTexCoord1ivARB + GLenum target + const GLint *v + + + + + void glMultiTexCoord1s + GLenum target + GLshort s + + + + void glMultiTexCoord1sARB + GLenum target + GLshort s + + + + + void glMultiTexCoord1sv + GLenum target + const GLshort *v + + + + void glMultiTexCoord1svARB + GLenum target + const GLshort *v + + + + + void glMultiTexCoord1xOES + GLenum texture + GLfixed s + + + void glMultiTexCoord1xvOES + GLenum texture + const GLfixed *coords + + + void glMultiTexCoord2bOES + GLenum texture + GLbyte s + GLbyte t + + + void glMultiTexCoord2bvOES + GLenum texture + const GLbyte *coords + + + void glMultiTexCoord2d + GLenum target + GLdouble s + GLdouble t + + + + void glMultiTexCoord2dARB + GLenum target + GLdouble s + GLdouble t + + + + + void glMultiTexCoord2dv + GLenum target + const GLdouble *v + + + + void glMultiTexCoord2dvARB + GLenum target + const GLdouble *v + + + + + void glMultiTexCoord2f + GLenum target + GLfloat s + GLfloat t + + + + void glMultiTexCoord2fARB + GLenum target + GLfloat s + GLfloat t + + + + + void glMultiTexCoord2fv + GLenum target + const GLfloat *v + + + + void glMultiTexCoord2fvARB + GLenum target + const GLfloat *v + + + + + void glMultiTexCoord2hNV + GLenum target + GLhalfNV s + GLhalfNV t + + + + void glMultiTexCoord2hvNV + GLenum target + const GLhalfNV *v + + + + void glMultiTexCoord2i + GLenum target + GLint s + GLint t + + + + void glMultiTexCoord2iARB + GLenum target + GLint s + GLint t + + + + + void glMultiTexCoord2iv + GLenum target + const GLint *v + + + + void glMultiTexCoord2ivARB + GLenum target + const GLint *v + + + + + void glMultiTexCoord2s + GLenum target + GLshort s + GLshort t + + + + void glMultiTexCoord2sARB + GLenum target + GLshort s + GLshort t + + + + + void glMultiTexCoord2sv + GLenum target + const GLshort *v + + + + void glMultiTexCoord2svARB + GLenum target + const GLshort *v + + + + + void glMultiTexCoord2xOES + GLenum texture + GLfixed s + GLfixed t + + + void glMultiTexCoord2xvOES + GLenum texture + const GLfixed *coords + + + void glMultiTexCoord3bOES + GLenum texture + GLbyte s + GLbyte t + GLbyte r + + + void glMultiTexCoord3bvOES + GLenum texture + const GLbyte *coords + + + void glMultiTexCoord3d + GLenum target + GLdouble s + GLdouble t + GLdouble r + + + + void glMultiTexCoord3dARB + GLenum target + GLdouble s + GLdouble t + GLdouble r + + + + + void glMultiTexCoord3dv + GLenum target + const GLdouble *v + + + + void glMultiTexCoord3dvARB + GLenum target + const GLdouble *v + + + + + void glMultiTexCoord3f + GLenum target + GLfloat s + GLfloat t + GLfloat r + + + + void glMultiTexCoord3fARB + GLenum target + GLfloat s + GLfloat t + GLfloat r + + + + + void glMultiTexCoord3fv + GLenum target + const GLfloat *v + + + + void glMultiTexCoord3fvARB + GLenum target + const GLfloat *v + + + + + void glMultiTexCoord3hNV + GLenum target + GLhalfNV s + GLhalfNV t + GLhalfNV r + + + + void glMultiTexCoord3hvNV + GLenum target + const GLhalfNV *v + + + + void glMultiTexCoord3i + GLenum target + GLint s + GLint t + GLint r + + + + void glMultiTexCoord3iARB + GLenum target + GLint s + GLint t + GLint r + + + + + void glMultiTexCoord3iv + GLenum target + const GLint *v + + + + void glMultiTexCoord3ivARB + GLenum target + const GLint *v + + + + + void glMultiTexCoord3s + GLenum target + GLshort s + GLshort t + GLshort r + + + + void glMultiTexCoord3sARB + GLenum target + GLshort s + GLshort t + GLshort r + + + + + void glMultiTexCoord3sv + GLenum target + const GLshort *v + + + + void glMultiTexCoord3svARB + GLenum target + const GLshort *v + + + + + void glMultiTexCoord3xOES + GLenum texture + GLfixed s + GLfixed t + GLfixed r + + + void glMultiTexCoord3xvOES + GLenum texture + const GLfixed *coords + + + void glMultiTexCoord4bOES + GLenum texture + GLbyte s + GLbyte t + GLbyte r + GLbyte q + + + void glMultiTexCoord4bvOES + GLenum texture + const GLbyte *coords + + + void glMultiTexCoord4d + GLenum target + GLdouble s + GLdouble t + GLdouble r + GLdouble q + + + + void glMultiTexCoord4dARB + GLenum target + GLdouble s + GLdouble t + GLdouble r + GLdouble q + + + + + void glMultiTexCoord4dv + GLenum target + const GLdouble *v + + + + void glMultiTexCoord4dvARB + GLenum target + const GLdouble *v + + + + + void glMultiTexCoord4f + GLenum target + GLfloat s + GLfloat t + GLfloat r + GLfloat q + + + + void glMultiTexCoord4fARB + GLenum target + GLfloat s + GLfloat t + GLfloat r + GLfloat q + + + + + void glMultiTexCoord4fv + GLenum target + const GLfloat *v + + + + void glMultiTexCoord4fvARB + GLenum target + const GLfloat *v + + + + + void glMultiTexCoord4hNV + GLenum target + GLhalfNV s + GLhalfNV t + GLhalfNV r + GLhalfNV q + + + + void glMultiTexCoord4hvNV + GLenum target + const GLhalfNV *v + + + + void glMultiTexCoord4i + GLenum target + GLint s + GLint t + GLint r + GLint q + + + + void glMultiTexCoord4iARB + GLenum target + GLint s + GLint t + GLint r + GLint q + + + + + void glMultiTexCoord4iv + GLenum target + const GLint *v + + + + void glMultiTexCoord4ivARB + GLenum target + const GLint *v + + + + + void glMultiTexCoord4s + GLenum target + GLshort s + GLshort t + GLshort r + GLshort q + + + + void glMultiTexCoord4sARB + GLenum target + GLshort s + GLshort t + GLshort r + GLshort q + + + + + void glMultiTexCoord4sv + GLenum target + const GLshort *v + + + + void glMultiTexCoord4svARB + GLenum target + const GLshort *v + + + + + void glMultiTexCoord4x + GLenum texture + GLfixed s + GLfixed t + GLfixed r + GLfixed q + + + void glMultiTexCoord4xOES + GLenum texture + GLfixed s + GLfixed t + GLfixed r + GLfixed q + + + void glMultiTexCoord4xvOES + GLenum texture + const GLfixed *coords + + + void glMultiTexCoordP1ui + GLenum texture + GLenum type + GLuint coords + + + void glMultiTexCoordP1uiv + GLenum texture + GLenum type + const GLuint *coords + + + void glMultiTexCoordP2ui + GLenum texture + GLenum type + GLuint coords + + + void glMultiTexCoordP2uiv + GLenum texture + GLenum type + const GLuint *coords + + + void glMultiTexCoordP3ui + GLenum texture + GLenum type + GLuint coords + + + void glMultiTexCoordP3uiv + GLenum texture + GLenum type + const GLuint *coords + + + void glMultiTexCoordP4ui + GLenum texture + GLenum type + GLuint coords + + + void glMultiTexCoordP4uiv + GLenum texture + GLenum type + const GLuint *coords + + + void glMultiTexCoordPointerEXT + GLenum texunit + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glMultiTexEnvfEXT + GLenum texunit + GLenum target + GLenum pname + GLfloat param + + + + void glMultiTexEnvfvEXT + GLenum texunit + GLenum target + GLenum pname + const GLfloat *params + + + void glMultiTexEnviEXT + GLenum texunit + GLenum target + GLenum pname + GLint param + + + + void glMultiTexEnvivEXT + GLenum texunit + GLenum target + GLenum pname + const GLint *params + + + void glMultiTexGendEXT + GLenum texunit + GLenum coord + GLenum pname + GLdouble param + + + + void glMultiTexGendvEXT + GLenum texunit + GLenum coord + GLenum pname + const GLdouble *params + + + void glMultiTexGenfEXT + GLenum texunit + GLenum coord + GLenum pname + GLfloat param + + + + void glMultiTexGenfvEXT + GLenum texunit + GLenum coord + GLenum pname + const GLfloat *params + + + void glMultiTexGeniEXT + GLenum texunit + GLenum coord + GLenum pname + GLint param + + + + void glMultiTexGenivEXT + GLenum texunit + GLenum coord + GLenum pname + const GLint *params + + + void glMultiTexImage1DEXT + GLenum texunit + GLenum target + GLint level + GLint internalformat + GLsizei width + GLint border + GLenum format + GLenum type + const void *pixels + + + void glMultiTexImage2DEXT + GLenum texunit + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLint border + GLenum format + GLenum type + const void *pixels + + + void glMultiTexImage3DEXT + GLenum texunit + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLenum format + GLenum type + const void *pixels + + + void glMultiTexParameterIivEXT + GLenum texunit + GLenum target + GLenum pname + const GLint *params + + + void glMultiTexParameterIuivEXT + GLenum texunit + GLenum target + GLenum pname + const GLuint *params + + + void glMultiTexParameterfEXT + GLenum texunit + GLenum target + GLenum pname + GLfloat param + + + + void glMultiTexParameterfvEXT + GLenum texunit + GLenum target + GLenum pname + const GLfloat *params + + + void glMultiTexParameteriEXT + GLenum texunit + GLenum target + GLenum pname + GLint param + + + + void glMultiTexParameterivEXT + GLenum texunit + GLenum target + GLenum pname + const GLint *params + + + void glMultiTexRenderbufferEXT + GLenum texunit + GLenum target + GLuint renderbuffer + + + void glMultiTexSubImage1DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLenum type + const void *pixels + + + void glMultiTexSubImage2DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + void glMultiTexSubImage3DEXT + GLenum texunit + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + void glMulticastBarrierNV + + + void glMulticastBlitFramebufferNV + GLuint srcGpu + GLuint dstGpu + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + void glMulticastBufferSubDataNV + GLbitfield gpuMask + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + + + void glMulticastCopyBufferSubDataNV + GLuint readGpu + GLbitfield writeGpuMask + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glMulticastCopyImageSubDataNV + GLuint srcGpu + GLbitfield dstGpuMask + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + + + void glMulticastFramebufferSampleLocationsfvNV + GLuint gpu + GLuint framebuffer + GLuint start + GLsizei count + const GLfloat *v + + + void glMulticastGetQueryObjecti64vNV + GLuint gpu + GLuint id + GLenum pname + GLint64 *params + + + void glMulticastGetQueryObjectivNV + GLuint gpu + GLuint id + GLenum pname + GLint *params + + + void glMulticastGetQueryObjectui64vNV + GLuint gpu + GLuint id + GLenum pname + GLuint64 *params + + + void glMulticastGetQueryObjectuivNV + GLuint gpu + GLuint id + GLenum pname + GLuint *params + + + void glMulticastScissorArrayvNVX + GLuint gpu + GLuint first + GLsizei count + const GLint *v + + + void glMulticastViewportArrayvNVX + GLuint gpu + GLuint first + GLsizei count + const GLfloat *v + + + void glMulticastViewportPositionWScaleNVX + GLuint gpu + GLuint index + GLfloat xcoeff + GLfloat ycoeff + + + void glMulticastWaitSyncNV + GLuint signalGpu + GLbitfield waitGpuMask + + + void glNamedBufferAttachMemoryNV + GLuint buffer + GLuint memory + GLuint64 offset + + + void glNamedBufferData + GLuint buffer + GLsizeiptr size + const void *data + GLenum usage + + + void glNamedBufferDataEXT + GLuint buffer + GLsizeiptr size + const void *data + GLenum usage + + + void glNamedBufferPageCommitmentARB + GLuint buffer + GLintptr offset + GLsizeiptr size + GLboolean commit + + + void glNamedBufferPageCommitmentEXT + GLuint buffer + GLintptr offset + GLsizeiptr size + GLboolean commit + + + void glNamedBufferPageCommitmentMemNV + GLuint buffer + GLintptr offset + GLsizeiptr size + GLuint memory + GLuint64 memOffset + GLboolean commit + + + void glNamedBufferStorage + GLuint buffer + GLsizeiptr size + const void *data + GLbitfield flags + + + void glNamedBufferStorageExternalEXT + GLuint buffer + GLintptr offset + GLsizeiptr size + GLeglClientBufferEXT clientBuffer + GLbitfield flags + + + void glNamedBufferStorageEXT + GLuint buffer + GLsizeiptr size + const void *data + GLbitfield flags + + + + void glNamedBufferStorageMemEXT + GLuint buffer + GLsizeiptr size + GLuint memory + GLuint64 offset + + + void glNamedBufferSubData + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + + + void glNamedBufferSubDataEXT + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + + + + void glNamedCopyBufferSubDataEXT + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glNamedFramebufferDrawBuffer + GLuint framebuffer + GLenum buf + + + void glNamedFramebufferDrawBuffers + GLuint framebuffer + GLsizei n + const GLenum *bufs + + + void glNamedFramebufferParameteri + GLuint framebuffer + GLenum pname + GLint param + + + void glNamedFramebufferParameteriEXT + GLuint framebuffer + GLenum pname + GLint param + + + void glNamedFramebufferReadBuffer + GLuint framebuffer + GLenum src + + + void glNamedFramebufferRenderbuffer + GLuint framebuffer + GLenum attachment + GLenum renderbuffertarget + GLuint renderbuffer + + + void glNamedFramebufferRenderbufferEXT + GLuint framebuffer + GLenum attachment + GLenum renderbuffertarget + GLuint renderbuffer + + + void glNamedFramebufferSampleLocationsfvARB + GLuint framebuffer + GLuint start + GLsizei count + const GLfloat *v + + + void glNamedFramebufferSampleLocationsfvNV + GLuint framebuffer + GLuint start + GLsizei count + const GLfloat *v + + + void glNamedFramebufferTexture + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + + + void glNamedFramebufferSamplePositionsfvAMD + GLuint framebuffer + GLuint numsamples + GLuint pixelindex + const GLfloat *values + + + void glNamedFramebufferTexture1DEXT + GLuint framebuffer + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + void glNamedFramebufferTexture2DEXT + GLuint framebuffer + GLenum attachment + GLenum textarget + GLuint texture + GLint level + + + void glNamedFramebufferTexture3DEXT + GLuint framebuffer + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint zoffset + + + void glNamedFramebufferTextureEXT + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + + + void glNamedFramebufferTextureFaceEXT + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + GLenum face + + + void glNamedFramebufferTextureLayer + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + GLint layer + + + void glNamedFramebufferTextureLayerEXT + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + GLint layer + + + void glNamedFramebufferTextureMultiviewOVR + GLuint framebuffer + GLenum attachment + GLuint texture + GLint level + GLint baseViewIndex + GLsizei numViews + + + void glNamedProgramLocalParameter4dEXT + GLuint program + GLenum target + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glNamedProgramLocalParameter4dvEXT + GLuint program + GLenum target + GLuint index + const GLdouble *params + + + void glNamedProgramLocalParameter4fEXT + GLuint program + GLenum target + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glNamedProgramLocalParameter4fvEXT + GLuint program + GLenum target + GLuint index + const GLfloat *params + + + void glNamedProgramLocalParameterI4iEXT + GLuint program + GLenum target + GLuint index + GLint x + GLint y + GLint z + GLint w + + + + void glNamedProgramLocalParameterI4ivEXT + GLuint program + GLenum target + GLuint index + const GLint *params + + + void glNamedProgramLocalParameterI4uiEXT + GLuint program + GLenum target + GLuint index + GLuint x + GLuint y + GLuint z + GLuint w + + + + void glNamedProgramLocalParameterI4uivEXT + GLuint program + GLenum target + GLuint index + const GLuint *params + + + void glNamedProgramLocalParameters4fvEXT + GLuint program + GLenum target + GLuint index + GLsizei count + const GLfloat *params + + + void glNamedProgramLocalParametersI4ivEXT + GLuint program + GLenum target + GLuint index + GLsizei count + const GLint *params + + + void glNamedProgramLocalParametersI4uivEXT + GLuint program + GLenum target + GLuint index + GLsizei count + const GLuint *params + + + void glNamedProgramStringEXT + GLuint program + GLenum target + GLenum format + GLsizei len + const void *string + + + void glNamedRenderbufferStorage + GLuint renderbuffer + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedRenderbufferStorageEXT + GLuint renderbuffer + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedRenderbufferStorageMultisample + GLuint renderbuffer + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedRenderbufferStorageMultisampleAdvancedAMD + GLuint renderbuffer + GLsizei samples + GLsizei storageSamples + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedRenderbufferStorageMultisampleCoverageEXT + GLuint renderbuffer + GLsizei coverageSamples + GLsizei colorSamples + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedRenderbufferStorageMultisampleEXT + GLuint renderbuffer + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + void glNamedStringARB + GLenum type + GLint namelen + const GLchar *name + GLint stringlen + const GLchar *string + + + void glNewList + GLuint list + GLenum mode + + + + GLuint glNewObjectBufferATI + GLsizei size + const void *pointer + GLenum usage + + + void glNormal3b + GLbyte nx + GLbyte ny + GLbyte nz + + + + void glNormal3bv + const GLbyte *v + + + + void glNormal3d + GLdouble nx + GLdouble ny + GLdouble nz + + + + void glNormal3dv + const GLdouble *v + + + + void glNormal3f + GLfloat nx + GLfloat ny + GLfloat nz + + + + void glNormal3fVertex3fSUN + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glNormal3fVertex3fvSUN + const GLfloat *n + const GLfloat *v + + + void glNormal3fv + const GLfloat *v + + + + void glNormal3hNV + GLhalfNV nx + GLhalfNV ny + GLhalfNV nz + + + + void glNormal3hvNV + const GLhalfNV *v + + + + void glNormal3i + GLint nx + GLint ny + GLint nz + + + + void glNormal3iv + const GLint *v + + + + void glNormal3s + GLshort nx + GLshort ny + GLshort nz + + + + void glNormal3sv + const GLshort *v + + + + void glNormal3x + GLfixed nx + GLfixed ny + GLfixed nz + + + void glNormal3xOES + GLfixed nx + GLfixed ny + GLfixed nz + + + void glNormal3xvOES + const GLfixed *coords + + + void glNormalFormatNV + GLenum type + GLsizei stride + + + void glNormalP3ui + GLenum type + GLuint coords + + + void glNormalP3uiv + GLenum type + const GLuint *coords + + + void glNormalPointer + GLenum type + GLsizei stride + const void *pointer + + + void glNormalPointerEXT + GLenum type + GLsizei stride + GLsizei count + const void *pointer + + + void glNormalPointerListIBM + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glNormalPointervINTEL + GLenum type + const void **pointer + + + void glNormalStream3bATI + GLenum stream + GLbyte nx + GLbyte ny + GLbyte nz + + + void glNormalStream3bvATI + GLenum stream + const GLbyte *coords + + + void glNormalStream3dATI + GLenum stream + GLdouble nx + GLdouble ny + GLdouble nz + + + void glNormalStream3dvATI + GLenum stream + const GLdouble *coords + + + void glNormalStream3fATI + GLenum stream + GLfloat nx + GLfloat ny + GLfloat nz + + + void glNormalStream3fvATI + GLenum stream + const GLfloat *coords + + + void glNormalStream3iATI + GLenum stream + GLint nx + GLint ny + GLint nz + + + void glNormalStream3ivATI + GLenum stream + const GLint *coords + + + void glNormalStream3sATI + GLenum stream + GLshort nx + GLshort ny + GLshort nz + + + void glNormalStream3svATI + GLenum stream + const GLshort *coords + + + void glObjectLabel + GLenum identifier + GLuint name + GLsizei length + const GLchar *label + + + void glObjectLabelKHR + GLenum identifier + GLuint name + GLsizei length + const GLchar *label + + + + void glObjectPtrLabel + const void *ptr + GLsizei length + const GLchar *label + + + void glObjectPtrLabelKHR + const void *ptr + GLsizei length + const GLchar *label + + + + GLenum glObjectPurgeableAPPLE + GLenum objectType + GLuint name + GLenum option + + + GLenum glObjectUnpurgeableAPPLE + GLenum objectType + GLuint name + GLenum option + + + void glOrtho + GLdouble left + GLdouble right + GLdouble bottom + GLdouble top + GLdouble zNear + GLdouble zFar + + + + void glOrthof + GLfloat l + GLfloat r + GLfloat b + GLfloat t + GLfloat n + GLfloat f + + + void glOrthofOES + GLfloat l + GLfloat r + GLfloat b + GLfloat t + GLfloat n + GLfloat f + + + + void glOrthox + GLfixed l + GLfixed r + GLfixed b + GLfixed t + GLfixed n + GLfixed f + + + void glOrthoxOES + GLfixed l + GLfixed r + GLfixed b + GLfixed t + GLfixed n + GLfixed f + + + void glPNTrianglesfATI + GLenum pname + GLfloat param + + + void glPNTrianglesiATI + GLenum pname + GLint param + + + void glPassTexCoordATI + GLuint dst + GLuint coord + GLenum swizzle + + + void glPassThrough + GLfloat token + + + + void glPassThroughxOES + GLfixed token + + + void glPatchParameterfv + GLenum pname + const GLfloat *values + + + void glPatchParameteri + GLenum pname + GLint value + + + void glPatchParameteriEXT + GLenum pname + GLint value + + + + void glPatchParameteriOES + GLenum pname + GLint value + + + + void glPathColorGenNV + GLenum color + GLenum genMode + GLenum colorFormat + const GLfloat *coeffs + + + void glPathCommandsNV + GLuint path + GLsizei numCommands + const GLubyte *commands + GLsizei numCoords + GLenum coordType + const void *coords + + + void glPathCoordsNV + GLuint path + GLsizei numCoords + GLenum coordType + const void *coords + + + void glPathCoverDepthFuncNV + GLenum func + + + void glPathDashArrayNV + GLuint path + GLsizei dashCount + const GLfloat *dashArray + + + void glPathFogGenNV + GLenum genMode + + + GLenum glPathGlyphIndexArrayNV + GLuint firstPathName + GLenum fontTarget + const void *fontName + GLbitfield fontStyle + GLuint firstGlyphIndex + GLsizei numGlyphs + GLuint pathParameterTemplate + GLfloat emScale + + + GLenum glPathGlyphIndexRangeNV + GLenum fontTarget + const void *fontName + GLbitfield fontStyle + GLuint pathParameterTemplate + GLfloat emScale + GLuint *baseAndCount + + + void glPathGlyphRangeNV + GLuint firstPathName + GLenum fontTarget + const void *fontName + GLbitfield fontStyle + GLuint firstGlyph + GLsizei numGlyphs + GLenum handleMissingGlyphs + GLuint pathParameterTemplate + GLfloat emScale + + + void glPathGlyphsNV + GLuint firstPathName + GLenum fontTarget + const void *fontName + GLbitfield fontStyle + GLsizei numGlyphs + GLenum type + const void *charcodes + GLenum handleMissingGlyphs + GLuint pathParameterTemplate + GLfloat emScale + + + GLenum glPathMemoryGlyphIndexArrayNV + GLuint firstPathName + GLenum fontTarget + GLsizeiptr fontSize + const void *fontData + GLsizei faceIndex + GLuint firstGlyphIndex + GLsizei numGlyphs + GLuint pathParameterTemplate + GLfloat emScale + + + void glPathParameterfNV + GLuint path + GLenum pname + GLfloat value + + + void glPathParameterfvNV + GLuint path + GLenum pname + const GLfloat *value + + + void glPathParameteriNV + GLuint path + GLenum pname + GLint value + + + void glPathParameterivNV + GLuint path + GLenum pname + const GLint *value + + + void glPathStencilDepthOffsetNV + GLfloat factor + GLfloat units + + + void glPathStencilFuncNV + GLenum func + GLint ref + GLuint mask + + + void glPathStringNV + GLuint path + GLenum format + GLsizei length + const void *pathString + + + void glPathSubCommandsNV + GLuint path + GLsizei commandStart + GLsizei commandsToDelete + GLsizei numCommands + const GLubyte *commands + GLsizei numCoords + GLenum coordType + const void *coords + + + void glPathSubCoordsNV + GLuint path + GLsizei coordStart + GLsizei numCoords + GLenum coordType + const void *coords + + + void glPathTexGenNV + GLenum texCoordSet + GLenum genMode + GLint components + const GLfloat *coeffs + + + void glPauseTransformFeedback + + + void glPauseTransformFeedbackNV + + + + void glPixelDataRangeNV + GLenum target + GLsizei length + const void *pointer + + + void glPixelMapfv + GLenum map + GLsizei mapsize + const GLfloat *values + + + + + void glPixelMapuiv + GLenum map + GLsizei mapsize + const GLuint *values + + + + + void glPixelMapusv + GLenum map + GLsizei mapsize + const GLushort *values + + + + + void glPixelMapx + GLenum map + GLint size + const GLfixed *values + + + void glPixelStoref + GLenum pname + GLfloat param + + + + void glPixelStorei + GLenum pname + GLint param + + + + void glPixelStorex + GLenum pname + GLfixed param + + + void glPixelTexGenParameterfSGIS + GLenum pname + GLfloat param + + + void glPixelTexGenParameterfvSGIS + GLenum pname + const GLfloat *params + + + void glPixelTexGenParameteriSGIS + GLenum pname + GLint param + + + void glPixelTexGenParameterivSGIS + GLenum pname + const GLint *params + + + void glPixelTexGenSGIX + GLenum mode + + + + void glPixelTransferf + GLenum pname + GLfloat param + + + + void glPixelTransferi + GLenum pname + GLint param + + + + void glPixelTransferxOES + GLenum pname + GLfixed param + + + void glPixelTransformParameterfEXT + GLenum target + GLenum pname + GLfloat param + + + + void glPixelTransformParameterfvEXT + GLenum target + GLenum pname + const GLfloat *params + + + void glPixelTransformParameteriEXT + GLenum target + GLenum pname + GLint param + + + + void glPixelTransformParameterivEXT + GLenum target + GLenum pname + const GLint *params + + + void glPixelZoom + GLfloat xfactor + GLfloat yfactor + + + + void glPixelZoomxOES + GLfixed xfactor + GLfixed yfactor + + + GLboolean glPointAlongPathNV + GLuint path + GLsizei startSegment + GLsizei numSegments + GLfloat distance + GLfloat *x + GLfloat *y + GLfloat *tangentX + GLfloat *tangentY + + + void glPointParameterf + GLenum pname + GLfloat param + + + + void glPointParameterfARB + GLenum pname + GLfloat param + + + + + void glPointParameterfEXT + GLenum pname + GLfloat param + + + + void glPointParameterfSGIS + GLenum pname + GLfloat param + + + + void glPointParameterfv + GLenum pname + const GLfloat *params + + + + void glPointParameterfvARB + GLenum pname + const GLfloat *params + + + + + void glPointParameterfvEXT + GLenum pname + const GLfloat *params + + + + void glPointParameterfvSGIS + GLenum pname + const GLfloat *params + + + + void glPointParameteri + GLenum pname + GLint param + + + + void glPointParameteriNV + GLenum pname + GLint param + + + + + void glPointParameteriv + GLenum pname + const GLint *params + + + + void glPointParameterivNV + GLenum pname + const GLint *params + + + + + void glPointParameterx + GLenum pname + GLfixed param + + + void glPointParameterxOES + GLenum pname + GLfixed param + + + void glPointParameterxv + GLenum pname + const GLfixed *params + + + void glPointParameterxvOES + GLenum pname + const GLfixed *params + + + void glPointSize + GLfloat size + + + + void glPointSizePointerOES + GLenum type + GLsizei stride + const void *pointer + + + void glPointSizex + GLfixed size + + + void glPointSizexOES + GLfixed size + + + GLint glPollAsyncSGIX + GLuint *markerp + + + GLint glPollInstrumentsSGIX + GLint *marker_p + + + + void glPolygonMode + GLenum face + GLenum mode + + + + void glPolygonModeNV + GLenum face + GLenum mode + + + + void glPolygonOffset + GLfloat factor + GLfloat units + + + + void glPolygonOffsetClamp + GLfloat factor + GLfloat units + GLfloat clamp + + + + void glPolygonOffsetClampEXT + GLfloat factor + GLfloat units + GLfloat clamp + + + + void glPolygonOffsetEXT + GLfloat factor + GLfloat bias + + + + void glPolygonOffsetx + GLfixed factor + GLfixed units + + + void glPolygonOffsetxOES + GLfixed factor + GLfixed units + + + void glPolygonStipple + const GLubyte *mask + + + + + void glPopAttrib + + + + void glPopClientAttrib + + + void glPopDebugGroup + + + void glPopDebugGroupKHR + + + + void glPopGroupMarkerEXT + + + void glPopMatrix + + + + void glPopName + + + + void glPresentFrameDualFillNV + GLuint video_slot + GLuint64EXT minPresentTime + GLuint beginPresentTimeId + GLuint presentDurationId + GLenum type + GLenum target0 + GLuint fill0 + GLenum target1 + GLuint fill1 + GLenum target2 + GLuint fill2 + GLenum target3 + GLuint fill3 + + + void glPresentFrameKeyedNV + GLuint video_slot + GLuint64EXT minPresentTime + GLuint beginPresentTimeId + GLuint presentDurationId + GLenum type + GLenum target0 + GLuint fill0 + GLuint key0 + GLenum target1 + GLuint fill1 + GLuint key1 + + + void glPrimitiveBoundingBox + GLfloat minX + GLfloat minY + GLfloat minZ + GLfloat minW + GLfloat maxX + GLfloat maxY + GLfloat maxZ + GLfloat maxW + + + void glPrimitiveBoundingBoxARB + GLfloat minX + GLfloat minY + GLfloat minZ + GLfloat minW + GLfloat maxX + GLfloat maxY + GLfloat maxZ + GLfloat maxW + + + + void glPrimitiveBoundingBoxEXT + GLfloat minX + GLfloat minY + GLfloat minZ + GLfloat minW + GLfloat maxX + GLfloat maxY + GLfloat maxZ + GLfloat maxW + + + + void glPrimitiveBoundingBoxOES + GLfloat minX + GLfloat minY + GLfloat minZ + GLfloat minW + GLfloat maxX + GLfloat maxY + GLfloat maxZ + GLfloat maxW + + + + void glPrimitiveRestartIndex + GLuint index + + + void glPrimitiveRestartIndexNV + GLuint index + + + + void glPrimitiveRestartNV + + + + void glPrioritizeTextures + GLsizei n + const GLuint *textures + const GLfloat *priorities + + + + void glPrioritizeTexturesEXT + GLsizei n + const GLuint *textures + const GLclampf *priorities + + + + + void glPrioritizeTexturesxOES + GLsizei n + const GLuint *textures + const GLfixed *priorities + + + void glProgramBinary + GLuint program + GLenum binaryFormat + const void *binary + GLsizei length + + + void glProgramBinaryOES + GLuint program + GLenum binaryFormat + const void *binary + GLint length + + + + void glProgramBufferParametersIivNV + GLenum target + GLuint bindingIndex + GLuint wordIndex + GLsizei count + const GLint *params + + + void glProgramBufferParametersIuivNV + GLenum target + GLuint bindingIndex + GLuint wordIndex + GLsizei count + const GLuint *params + + + void glProgramBufferParametersfvNV + GLenum target + GLuint bindingIndex + GLuint wordIndex + GLsizei count + const GLfloat *params + + + void glProgramEnvParameter4dARB + GLenum target + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glProgramEnvParameter4dvARB + GLenum target + GLuint index + const GLdouble *params + + + void glProgramEnvParameter4fARB + GLenum target + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glProgramEnvParameter4fvARB + GLenum target + GLuint index + const GLfloat *params + + + void glProgramEnvParameterI4iNV + GLenum target + GLuint index + GLint x + GLint y + GLint z + GLint w + + + + void glProgramEnvParameterI4ivNV + GLenum target + GLuint index + const GLint *params + + + void glProgramEnvParameterI4uiNV + GLenum target + GLuint index + GLuint x + GLuint y + GLuint z + GLuint w + + + + void glProgramEnvParameterI4uivNV + GLenum target + GLuint index + const GLuint *params + + + void glProgramEnvParameters4fvEXT + GLenum target + GLuint index + GLsizei count + const GLfloat *params + + + + void glProgramEnvParametersI4ivNV + GLenum target + GLuint index + GLsizei count + const GLint *params + + + void glProgramEnvParametersI4uivNV + GLenum target + GLuint index + GLsizei count + const GLuint *params + + + void glProgramLocalParameter4dARB + GLenum target + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glProgramLocalParameter4dvARB + GLenum target + GLuint index + const GLdouble *params + + + void glProgramLocalParameter4fARB + GLenum target + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glProgramLocalParameter4fvARB + GLenum target + GLuint index + const GLfloat *params + + + void glProgramLocalParameterI4iNV + GLenum target + GLuint index + GLint x + GLint y + GLint z + GLint w + + + + void glProgramLocalParameterI4ivNV + GLenum target + GLuint index + const GLint *params + + + void glProgramLocalParameterI4uiNV + GLenum target + GLuint index + GLuint x + GLuint y + GLuint z + GLuint w + + + + void glProgramLocalParameterI4uivNV + GLenum target + GLuint index + const GLuint *params + + + void glProgramLocalParameters4fvEXT + GLenum target + GLuint index + GLsizei count + const GLfloat *params + + + + void glProgramLocalParametersI4ivNV + GLenum target + GLuint index + GLsizei count + const GLint *params + + + void glProgramLocalParametersI4uivNV + GLenum target + GLuint index + GLsizei count + const GLuint *params + + + void glProgramNamedParameter4dNV + GLuint id + GLsizei len + const GLubyte *name + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glProgramNamedParameter4dvNV + GLuint id + GLsizei len + const GLubyte *name + const GLdouble *v + + + + void glProgramNamedParameter4fNV + GLuint id + GLsizei len + const GLubyte *name + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glProgramNamedParameter4fvNV + GLuint id + GLsizei len + const GLubyte *name + const GLfloat *v + + + + void glProgramParameter4dNV + GLenum target + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glProgramParameter4dvNV + GLenum target + GLuint index + const GLdouble *v + + + + void glProgramParameter4fNV + GLenum target + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glProgramParameter4fvNV + GLenum target + GLuint index + const GLfloat *v + + + + void glProgramParameteri + GLuint program + GLenum pname + GLint value + + + void glProgramParameteriARB + GLuint program + GLenum pname + GLint value + + + + void glProgramParameteriEXT + GLuint program + GLenum pname + GLint value + + + + void glProgramParameters4dvNV + GLenum target + GLuint index + GLsizei count + const GLdouble *v + + + + void glProgramParameters4fvNV + GLenum target + GLuint index + GLsizei count + const GLfloat *v + + + + void glProgramPathFragmentInputGenNV + GLuint program + GLint location + GLenum genMode + GLint components + const GLfloat *coeffs + + + void glProgramStringARB + GLenum target + GLenum format + GLsizei len + const void *string + + + void glProgramSubroutineParametersuivNV + GLenum target + GLsizei count + const GLuint *params + + + void glProgramUniform1d + GLuint program + GLint location + GLdouble v0 + + + void glProgramUniform1dEXT + GLuint program + GLint location + GLdouble x + + + void glProgramUniform1dv + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform1dvEXT + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform1f + GLuint program + GLint location + GLfloat v0 + + + void glProgramUniform1fEXT + GLuint program + GLint location + GLfloat v0 + + + + void glProgramUniform1fv + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + void glProgramUniform1fvEXT + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + + void glProgramUniform1i + GLuint program + GLint location + GLint v0 + + + void glProgramUniform1i64ARB + GLuint program + GLint location + GLint64 x + + + void glProgramUniform1i64NV + GLuint program + GLint location + GLint64EXT x + + + void glProgramUniform1i64vARB + GLuint program + GLint location + GLsizei count + const GLint64 *value + + + void glProgramUniform1i64vNV + GLuint program + GLint location + GLsizei count + const GLint64EXT *value + + + void glProgramUniform1iEXT + GLuint program + GLint location + GLint v0 + + + + void glProgramUniform1iv + GLuint program + GLint location + GLsizei count + const GLint *value + + + void glProgramUniform1ivEXT + GLuint program + GLint location + GLsizei count + const GLint *value + + + + void glProgramUniform1ui + GLuint program + GLint location + GLuint v0 + + + void glProgramUniform1ui64ARB + GLuint program + GLint location + GLuint64 x + + + void glProgramUniform1ui64NV + GLuint program + GLint location + GLuint64EXT x + + + void glProgramUniform1ui64vARB + GLuint program + GLint location + GLsizei count + const GLuint64 *value + + + void glProgramUniform1ui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64EXT *value + + + void glProgramUniform1uiEXT + GLuint program + GLint location + GLuint v0 + + + + void glProgramUniform1uiv + GLuint program + GLint location + GLsizei count + const GLuint *value + + + void glProgramUniform1uivEXT + GLuint program + GLint location + GLsizei count + const GLuint *value + + + + void glProgramUniform2d + GLuint program + GLint location + GLdouble v0 + GLdouble v1 + + + void glProgramUniform2dEXT + GLuint program + GLint location + GLdouble x + GLdouble y + + + void glProgramUniform2dv + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform2dvEXT + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform2f + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + + + void glProgramUniform2fEXT + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + + + + void glProgramUniform2fv + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + void glProgramUniform2fvEXT + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + + void glProgramUniform2i + GLuint program + GLint location + GLint v0 + GLint v1 + + + void glProgramUniform2i64ARB + GLuint program + GLint location + GLint64 x + GLint64 y + + + void glProgramUniform2i64NV + GLuint program + GLint location + GLint64EXT x + GLint64EXT y + + + void glProgramUniform2i64vARB + GLuint program + GLint location + GLsizei count + const GLint64 *value + + + void glProgramUniform2i64vNV + GLuint program + GLint location + GLsizei count + const GLint64EXT *value + + + void glProgramUniform2iEXT + GLuint program + GLint location + GLint v0 + GLint v1 + + + + void glProgramUniform2iv + GLuint program + GLint location + GLsizei count + const GLint *value + + + void glProgramUniform2ivEXT + GLuint program + GLint location + GLsizei count + const GLint *value + + + + void glProgramUniform2ui + GLuint program + GLint location + GLuint v0 + GLuint v1 + + + void glProgramUniform2ui64ARB + GLuint program + GLint location + GLuint64 x + GLuint64 y + + + void glProgramUniform2ui64NV + GLuint program + GLint location + GLuint64EXT x + GLuint64EXT y + + + void glProgramUniform2ui64vARB + GLuint program + GLint location + GLsizei count + const GLuint64 *value + + + void glProgramUniform2ui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64EXT *value + + + void glProgramUniform2uiEXT + GLuint program + GLint location + GLuint v0 + GLuint v1 + + + + void glProgramUniform2uiv + GLuint program + GLint location + GLsizei count + const GLuint *value + + + void glProgramUniform2uivEXT + GLuint program + GLint location + GLsizei count + const GLuint *value + + + + void glProgramUniform3d + GLuint program + GLint location + GLdouble v0 + GLdouble v1 + GLdouble v2 + + + void glProgramUniform3dEXT + GLuint program + GLint location + GLdouble x + GLdouble y + GLdouble z + + + void glProgramUniform3dv + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform3dvEXT + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform3f + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + + + void glProgramUniform3fEXT + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + + + + void glProgramUniform3fv + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + void glProgramUniform3fvEXT + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + + void glProgramUniform3i + GLuint program + GLint location + GLint v0 + GLint v1 + GLint v2 + + + void glProgramUniform3i64ARB + GLuint program + GLint location + GLint64 x + GLint64 y + GLint64 z + + + void glProgramUniform3i64NV + GLuint program + GLint location + GLint64EXT x + GLint64EXT y + GLint64EXT z + + + void glProgramUniform3i64vARB + GLuint program + GLint location + GLsizei count + const GLint64 *value + + + void glProgramUniform3i64vNV + GLuint program + GLint location + GLsizei count + const GLint64EXT *value + + + void glProgramUniform3iEXT + GLuint program + GLint location + GLint v0 + GLint v1 + GLint v2 + + + + void glProgramUniform3iv + GLuint program + GLint location + GLsizei count + const GLint *value + + + void glProgramUniform3ivEXT + GLuint program + GLint location + GLsizei count + const GLint *value + + + + void glProgramUniform3ui + GLuint program + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + + + void glProgramUniform3ui64ARB + GLuint program + GLint location + GLuint64 x + GLuint64 y + GLuint64 z + + + void glProgramUniform3ui64NV + GLuint program + GLint location + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + + + void glProgramUniform3ui64vARB + GLuint program + GLint location + GLsizei count + const GLuint64 *value + + + void glProgramUniform3ui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64EXT *value + + + void glProgramUniform3uiEXT + GLuint program + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + + + + void glProgramUniform3uiv + GLuint program + GLint location + GLsizei count + const GLuint *value + + + void glProgramUniform3uivEXT + GLuint program + GLint location + GLsizei count + const GLuint *value + + + + void glProgramUniform4d + GLuint program + GLint location + GLdouble v0 + GLdouble v1 + GLdouble v2 + GLdouble v3 + + + void glProgramUniform4dEXT + GLuint program + GLint location + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + void glProgramUniform4dv + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform4dvEXT + GLuint program + GLint location + GLsizei count + const GLdouble *value + + + void glProgramUniform4f + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + GLfloat v3 + + + void glProgramUniform4fEXT + GLuint program + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + GLfloat v3 + + + + void glProgramUniform4fv + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + void glProgramUniform4fvEXT + GLuint program + GLint location + GLsizei count + const GLfloat *value + + + + void glProgramUniform4i + GLuint program + GLint location + GLint v0 + GLint v1 + GLint v2 + GLint v3 + + + void glProgramUniform4i64ARB + GLuint program + GLint location + GLint64 x + GLint64 y + GLint64 z + GLint64 w + + + void glProgramUniform4i64NV + GLuint program + GLint location + GLint64EXT x + GLint64EXT y + GLint64EXT z + GLint64EXT w + + + void glProgramUniform4i64vARB + GLuint program + GLint location + GLsizei count + const GLint64 *value + + + void glProgramUniform4i64vNV + GLuint program + GLint location + GLsizei count + const GLint64EXT *value + + + void glProgramUniform4iEXT + GLuint program + GLint location + GLint v0 + GLint v1 + GLint v2 + GLint v3 + + + + void glProgramUniform4iv + GLuint program + GLint location + GLsizei count + const GLint *value + + + void glProgramUniform4ivEXT + GLuint program + GLint location + GLsizei count + const GLint *value + + + + void glProgramUniform4ui + GLuint program + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + GLuint v3 + + + void glProgramUniform4ui64ARB + GLuint program + GLint location + GLuint64 x + GLuint64 y + GLuint64 z + GLuint64 w + + + void glProgramUniform4ui64NV + GLuint program + GLint location + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + GLuint64EXT w + + + void glProgramUniform4ui64vARB + GLuint program + GLint location + GLsizei count + const GLuint64 *value + + + void glProgramUniform4ui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64EXT *value + + + void glProgramUniform4uiEXT + GLuint program + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + GLuint v3 + + + + void glProgramUniform4uiv + GLuint program + GLint location + GLsizei count + const GLuint *value + + + void glProgramUniform4uivEXT + GLuint program + GLint location + GLsizei count + const GLuint *value + + + + void glProgramUniformHandleui64ARB + GLuint program + GLint location + GLuint64 value + + + void glProgramUniformHandleui64IMG + GLuint program + GLint location + GLuint64 value + + + + void glProgramUniformHandleui64NV + GLuint program + GLint location + GLuint64 value + + + void glProgramUniformHandleui64vARB + GLuint program + GLint location + GLsizei count + const GLuint64 *values + + + void glProgramUniformHandleui64vIMG + GLuint program + GLint location + GLsizei count + const GLuint64 *values + + + + void glProgramUniformHandleui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64 *values + + + void glProgramUniformMatrix2dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix2fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix2x3dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2x3dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2x3fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix2x3fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix2x4dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2x4dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix2x4fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix2x4fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix3dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix3fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix3x2dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3x2dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3x2fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix3x2fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix3x4dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3x4dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix3x4fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix3x4fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix4dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix4fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix4x2dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4x2dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4x2fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix4x2fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformMatrix4x3dv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4x3dvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glProgramUniformMatrix4x3fv + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glProgramUniformMatrix4x3fvEXT + GLuint program + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glProgramUniformui64NV + GLuint program + GLint location + GLuint64EXT value + + + void glProgramUniformui64vNV + GLuint program + GLint location + GLsizei count + const GLuint64EXT *value + + + void glProgramVertexLimitNV + GLenum target + GLint limit + + + void glProvokingVertex + GLenum mode + + + void glProvokingVertexEXT + GLenum mode + + + + void glPushAttrib + GLbitfield mask + + + + void glPushClientAttrib + GLbitfield mask + + + void glPushClientAttribDefaultEXT + GLbitfield mask + + + void glPushDebugGroup + GLenum source + GLuint id + GLsizei length + const GLchar *message + + + void glPushDebugGroupKHR + GLenum source + GLuint id + GLsizei length + const GLchar *message + + + + void glPushGroupMarkerEXT + GLsizei length + const GLchar *marker + + + void glPushMatrix + + + + void glPushName + GLuint name + + + + void glQueryCounter + GLuint id + GLenum target + + + void glQueryCounterEXT + GLuint id + GLenum target + + + + GLbitfield glQueryMatrixxOES + GLfixed *mantissa + GLint *exponent + + + void glQueryObjectParameteruiAMD + GLenum target + GLuint id + GLenum pname + GLuint param + + + GLint glQueryResourceNV + GLenum queryType + GLint tagId + GLuint count + GLint *buffer + + + void glQueryResourceTagNV + GLint tagId + const GLchar *tagString + + + void glRasterPos2d + GLdouble x + GLdouble y + + + + void glRasterPos2dv + const GLdouble *v + + + + void glRasterPos2f + GLfloat x + GLfloat y + + + + void glRasterPos2fv + const GLfloat *v + + + + void glRasterPos2i + GLint x + GLint y + + + + void glRasterPos2iv + const GLint *v + + + + void glRasterPos2s + GLshort x + GLshort y + + + + void glRasterPos2sv + const GLshort *v + + + + void glRasterPos2xOES + GLfixed x + GLfixed y + + + void glRasterPos2xvOES + const GLfixed *coords + + + void glRasterPos3d + GLdouble x + GLdouble y + GLdouble z + + + + void glRasterPos3dv + const GLdouble *v + + + + void glRasterPos3f + GLfloat x + GLfloat y + GLfloat z + + + + void glRasterPos3fv + const GLfloat *v + + + + void glRasterPos3i + GLint x + GLint y + GLint z + + + + void glRasterPos3iv + const GLint *v + + + + void glRasterPos3s + GLshort x + GLshort y + GLshort z + + + + void glRasterPos3sv + const GLshort *v + + + + void glRasterPos3xOES + GLfixed x + GLfixed y + GLfixed z + + + void glRasterPos3xvOES + const GLfixed *coords + + + void glRasterPos4d + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glRasterPos4dv + const GLdouble *v + + + + void glRasterPos4f + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glRasterPos4fv + const GLfloat *v + + + + void glRasterPos4i + GLint x + GLint y + GLint z + GLint w + + + + void glRasterPos4iv + const GLint *v + + + + void glRasterPos4s + GLshort x + GLshort y + GLshort z + GLshort w + + + + void glRasterPos4sv + const GLshort *v + + + + void glRasterPos4xOES + GLfixed x + GLfixed y + GLfixed z + GLfixed w + + + void glRasterPos4xvOES + const GLfixed *coords + + + void glRasterSamplesEXT + GLuint samples + GLboolean fixedsamplelocations + + + void glReadBuffer + GLenum src + + + + void glReadBufferIndexedEXT + GLenum src + GLint index + + + void glReadBufferNV + GLenum mode + + + void glReadInstrumentsSGIX + GLint marker + + + + void glReadPixels + GLint x + GLint y + GLsizei width + GLsizei height + GLenum format + GLenum type + void *pixels + + + + + void glReadnPixels + GLint x + GLint y + GLsizei width + GLsizei height + GLenum format + GLenum type + GLsizei bufSize + void *data + + + void glReadnPixelsARB + GLint x + GLint y + GLsizei width + GLsizei height + GLenum format + GLenum type + GLsizei bufSize + void *data + + + + void glReadnPixelsEXT + GLint x + GLint y + GLsizei width + GLsizei height + GLenum format + GLenum type + GLsizei bufSize + void *data + + + + void glReadnPixelsKHR + GLint x + GLint y + GLsizei width + GLsizei height + GLenum format + GLenum type + GLsizei bufSize + void *data + + + + GLboolean glReleaseKeyedMutexWin32EXT + GLuint memory + GLuint64 key + + + void glRectd + GLdouble x1 + GLdouble y1 + GLdouble x2 + GLdouble y2 + + + + void glRectdv + const GLdouble *v1 + const GLdouble *v2 + + + + void glRectf + GLfloat x1 + GLfloat y1 + GLfloat x2 + GLfloat y2 + + + + void glRectfv + const GLfloat *v1 + const GLfloat *v2 + + + + void glRecti + GLint x1 + GLint y1 + GLint x2 + GLint y2 + + + + void glRectiv + const GLint *v1 + const GLint *v2 + + + + void glRects + GLshort x1 + GLshort y1 + GLshort x2 + GLshort y2 + + + + void glRectsv + const GLshort *v1 + const GLshort *v2 + + + + void glRectxOES + GLfixed x1 + GLfixed y1 + GLfixed x2 + GLfixed y2 + + + void glRectxvOES + const GLfixed *v1 + const GLfixed *v2 + + + void glReferencePlaneSGIX + const GLdouble *equation + + + + void glReleaseShaderCompiler + + + void glRenderGpuMaskNV + GLbitfield mask + + + GLint glRenderMode + GLenum mode + + + + void glRenderbufferStorage + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + + + + void glRenderbufferStorageEXT + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + + + + + void glRenderbufferStorageMultisample + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + + void glRenderbufferStorageMultisampleANGLE + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + void glRenderbufferStorageMultisampleAPPLE + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + void glRenderbufferStorageMultisampleAdvancedAMD + GLenum target + GLsizei samples + GLsizei storageSamples + GLenum internalformat + GLsizei width + GLsizei height + + + void glRenderbufferStorageMultisampleCoverageNV + GLenum target + GLsizei coverageSamples + GLsizei colorSamples + GLenum internalformat + GLsizei width + GLsizei height + + + void glRenderbufferStorageMultisampleEXT + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + + + void glRenderbufferStorageMultisampleIMG + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + void glRenderbufferStorageMultisampleNV + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + + + + void glRenderbufferStorageOES + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + + + void glReplacementCodePointerSUN + GLenum type + GLsizei stride + const void **pointer + + + void glReplacementCodeubSUN + GLubyte code + + + void glReplacementCodeubvSUN + const GLubyte *code + + + void glReplacementCodeuiColor3fVertex3fSUN + GLuint rc + GLfloat r + GLfloat g + GLfloat b + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiColor3fVertex3fvSUN + const GLuint *rc + const GLfloat *c + const GLfloat *v + + + void glReplacementCodeuiColor4fNormal3fVertex3fSUN + GLuint rc + GLfloat r + GLfloat g + GLfloat b + GLfloat a + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiColor4fNormal3fVertex3fvSUN + const GLuint *rc + const GLfloat *c + const GLfloat *n + const GLfloat *v + + + void glReplacementCodeuiColor4ubVertex3fSUN + GLuint rc + GLubyte r + GLubyte g + GLubyte b + GLubyte a + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiColor4ubVertex3fvSUN + const GLuint *rc + const GLubyte *c + const GLfloat *v + + + void glReplacementCodeuiNormal3fVertex3fSUN + GLuint rc + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiNormal3fVertex3fvSUN + const GLuint *rc + const GLfloat *n + const GLfloat *v + + + void glReplacementCodeuiSUN + GLuint code + + + void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN + GLuint rc + GLfloat s + GLfloat t + GLfloat r + GLfloat g + GLfloat b + GLfloat a + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN + const GLuint *rc + const GLfloat *tc + const GLfloat *c + const GLfloat *n + const GLfloat *v + + + void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN + GLuint rc + GLfloat s + GLfloat t + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN + const GLuint *rc + const GLfloat *tc + const GLfloat *n + const GLfloat *v + + + void glReplacementCodeuiTexCoord2fVertex3fSUN + GLuint rc + GLfloat s + GLfloat t + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiTexCoord2fVertex3fvSUN + const GLuint *rc + const GLfloat *tc + const GLfloat *v + + + void glReplacementCodeuiVertex3fSUN + GLuint rc + GLfloat x + GLfloat y + GLfloat z + + + void glReplacementCodeuiVertex3fvSUN + const GLuint *rc + const GLfloat *v + + + void glReplacementCodeuivSUN + const GLuint *code + + + void glReplacementCodeusSUN + GLushort code + + + void glReplacementCodeusvSUN + const GLushort *code + + + void glRequestResidentProgramsNV + GLsizei n + const GLuint *programs + + + + void glResetHistogram + GLenum target + + + + void glResetHistogramEXT + GLenum target + + + + + void glResetMemoryObjectParameterNV + GLuint memory + GLenum pname + + + void glResetMinmax + GLenum target + + + + void glResetMinmaxEXT + GLenum target + + + + + void glResizeBuffersMESA + + + void glResolveDepthValuesNV + + + void glResolveMultisampleFramebufferAPPLE + + + void glResumeTransformFeedback + + + void glResumeTransformFeedbackNV + + + + void glRotated + GLdouble angle + GLdouble x + GLdouble y + GLdouble z + + + + void glRotatef + GLfloat angle + GLfloat x + GLfloat y + GLfloat z + + + + void glRotatex + GLfixed angle + GLfixed x + GLfixed y + GLfixed z + + + void glRotatexOES + GLfixed angle + GLfixed x + GLfixed y + GLfixed z + + + void glSampleCoverage + GLfloat value + GLboolean invert + + + + void glSampleCoverageARB + GLfloat value + GLboolean invert + + + + void glSampleCoveragex + GLclampx value + GLboolean invert + + + void glSampleCoveragexOES + GLclampx value + GLboolean invert + + + void glSampleMapATI + GLuint dst + GLuint interp + GLenum swizzle + + + void glSampleMaskEXT + GLclampf value + GLboolean invert + + + void glSampleMaskIndexedNV + GLuint index + GLbitfield mask + + + void glSampleMaskSGIS + GLclampf value + GLboolean invert + + + + + void glSampleMaski + GLuint maskNumber + GLbitfield mask + + + void glSamplePatternEXT + GLenum pattern + + + void glSamplePatternSGIS + GLenum pattern + + + + + void glSamplerParameterIiv + GLuint sampler + GLenum pname + const GLint *param + + + void glSamplerParameterIivEXT + GLuint sampler + GLenum pname + const GLint *param + + + + void glSamplerParameterIivOES + GLuint sampler + GLenum pname + const GLint *param + + + + void glSamplerParameterIuiv + GLuint sampler + GLenum pname + const GLuint *param + + + void glSamplerParameterIuivEXT + GLuint sampler + GLenum pname + const GLuint *param + + + + void glSamplerParameterIuivOES + GLuint sampler + GLenum pname + const GLuint *param + + + + void glSamplerParameterf + GLuint sampler + GLenum pname + GLfloat param + + + void glSamplerParameterfv + GLuint sampler + GLenum pname + const GLfloat *param + + + void glSamplerParameteri + GLuint sampler + GLenum pname + GLint param + + + void glSamplerParameteriv + GLuint sampler + GLenum pname + const GLint *param + + + void glScaled + GLdouble x + GLdouble y + GLdouble z + + + + void glScalef + GLfloat x + GLfloat y + GLfloat z + + + + void glScalex + GLfixed x + GLfixed y + GLfixed z + + + void glScalexOES + GLfixed x + GLfixed y + GLfixed z + + + void glScissor + GLint x + GLint y + GLsizei width + GLsizei height + + + + void glScissorArrayv + GLuint first + GLsizei count + const GLint *v + + + void glScissorArrayvNV + GLuint first + GLsizei count + const GLint *v + + + + void glScissorArrayvOES + GLuint first + GLsizei count + const GLint *v + + + + void glScissorExclusiveArrayvNV + GLuint first + GLsizei count + const GLint *v + + + void glScissorExclusiveNV + GLint x + GLint y + GLsizei width + GLsizei height + + + void glScissorIndexed + GLuint index + GLint left + GLint bottom + GLsizei width + GLsizei height + + + void glScissorIndexedNV + GLuint index + GLint left + GLint bottom + GLsizei width + GLsizei height + + + + void glScissorIndexedOES + GLuint index + GLint left + GLint bottom + GLsizei width + GLsizei height + + + + void glScissorIndexedv + GLuint index + const GLint *v + + + void glScissorIndexedvNV + GLuint index + const GLint *v + + + + void glScissorIndexedvOES + GLuint index + const GLint *v + + + + void glSecondaryColor3b + GLbyte red + GLbyte green + GLbyte blue + + + + void glSecondaryColor3bEXT + GLbyte red + GLbyte green + GLbyte blue + + + + + void glSecondaryColor3bv + const GLbyte *v + + + + void glSecondaryColor3bvEXT + const GLbyte *v + + + + + void glSecondaryColor3d + GLdouble red + GLdouble green + GLdouble blue + + + + void glSecondaryColor3dEXT + GLdouble red + GLdouble green + GLdouble blue + + + + + void glSecondaryColor3dv + const GLdouble *v + + + + void glSecondaryColor3dvEXT + const GLdouble *v + + + + + void glSecondaryColor3f + GLfloat red + GLfloat green + GLfloat blue + + + + void glSecondaryColor3fEXT + GLfloat red + GLfloat green + GLfloat blue + + + + + void glSecondaryColor3fv + const GLfloat *v + + + + void glSecondaryColor3fvEXT + const GLfloat *v + + + + + void glSecondaryColor3hNV + GLhalfNV red + GLhalfNV green + GLhalfNV blue + + + + void glSecondaryColor3hvNV + const GLhalfNV *v + + + + void glSecondaryColor3i + GLint red + GLint green + GLint blue + + + + void glSecondaryColor3iEXT + GLint red + GLint green + GLint blue + + + + + void glSecondaryColor3iv + const GLint *v + + + + void glSecondaryColor3ivEXT + const GLint *v + + + + + void glSecondaryColor3s + GLshort red + GLshort green + GLshort blue + + + + void glSecondaryColor3sEXT + GLshort red + GLshort green + GLshort blue + + + + + void glSecondaryColor3sv + const GLshort *v + + + + void glSecondaryColor3svEXT + const GLshort *v + + + + + void glSecondaryColor3ub + GLubyte red + GLubyte green + GLubyte blue + + + + void glSecondaryColor3ubEXT + GLubyte red + GLubyte green + GLubyte blue + + + + + void glSecondaryColor3ubv + const GLubyte *v + + + + void glSecondaryColor3ubvEXT + const GLubyte *v + + + + + void glSecondaryColor3ui + GLuint red + GLuint green + GLuint blue + + + + void glSecondaryColor3uiEXT + GLuint red + GLuint green + GLuint blue + + + + + void glSecondaryColor3uiv + const GLuint *v + + + + void glSecondaryColor3uivEXT + const GLuint *v + + + + + void glSecondaryColor3us + GLushort red + GLushort green + GLushort blue + + + + void glSecondaryColor3usEXT + GLushort red + GLushort green + GLushort blue + + + + + void glSecondaryColor3usv + const GLushort *v + + + + void glSecondaryColor3usvEXT + const GLushort *v + + + + + void glSecondaryColorFormatNV + GLint size + GLenum type + GLsizei stride + + + void glSecondaryColorP3ui + GLenum type + GLuint color + + + void glSecondaryColorP3uiv + GLenum type + const GLuint *color + + + void glSecondaryColorPointer + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glSecondaryColorPointerEXT + GLint size + GLenum type + GLsizei stride + const void *pointer + + + + void glSecondaryColorPointerListIBM + GLint size + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glSelectBuffer + GLsizei size + GLuint *buffer + + + + void glSelectPerfMonitorCountersAMD + GLuint monitor + GLboolean enable + GLuint group + GLint numCounters + GLuint *counterList + + + void glSemaphoreParameterivNV + GLuint semaphore + GLenum pname + const GLint *params + + + void glSemaphoreParameterui64vEXT + GLuint semaphore + GLenum pname + const GLuint64 *params + + + void glSeparableFilter2D + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *row + const void *column + + + + + void glSeparableFilter2DEXT + GLenum target + GLenum internalformat + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *row + const void *column + + + + + void glSetFenceAPPLE + GLuint fence + + + void glSetFenceNV + GLuint fence + GLenum condition + + + void glSetFragmentShaderConstantATI + GLuint dst + const GLfloat *value + + + void glSetInvariantEXT + GLuint id + GLenum type + const void *addr + + + void glSetLocalConstantEXT + GLuint id + GLenum type + const void *addr + + + void glSetMultisamplefvAMD + GLenum pname + GLuint index + const GLfloat *val + + + void glShadeModel + GLenum mode + + + + void glShaderBinary + GLsizei count + const GLuint *shaders + GLenum binaryFormat + const void *binary + GLsizei length + + + void glShaderOp1EXT + GLenum op + GLuint res + GLuint arg1 + + + void glShaderOp2EXT + GLenum op + GLuint res + GLuint arg1 + GLuint arg2 + + + void glShaderOp3EXT + GLenum op + GLuint res + GLuint arg1 + GLuint arg2 + GLuint arg3 + + + void glShaderSource + GLuint shader + GLsizei count + const GLchar *const*string + const GLint *length + + + void glShaderSourceARB + GLhandleARB shaderObj + GLsizei count + const GLcharARB **string + const GLint *length + + + + void glShaderStorageBlockBinding + GLuint program + GLuint storageBlockIndex + GLuint storageBlockBinding + + + void glShadingRateEXT + GLenum rate + + + void glShadingRateCombinerOpsEXT + GLenum combinerOp0 + GLenum combinerOp1 + + + void glShadingRateImageBarrierNV + GLboolean synchronize + + + void glShadingRateQCOM + GLenum rate + + + void glShadingRateImagePaletteNV + GLuint viewport + GLuint first + GLsizei count + const GLenum *rates + + + void glShadingRateSampleOrderNV + GLenum order + + + void glShadingRateSampleOrderCustomNV + GLenum rate + GLuint samples + const GLint *locations + + + void glSharpenTexFuncSGIS + GLenum target + GLsizei n + const GLfloat *points + + + + void glSignalSemaphoreEXT + GLuint semaphore + GLuint numBufferBarriers + const GLuint *buffers + GLuint numTextureBarriers + const GLuint *textures + const GLenum *dstLayouts + + + void glSignalSemaphoreui64NVX + GLuint signalGpu + GLsizei fenceObjectCount + const GLuint *semaphoreArray + const GLuint64 *fenceValueArray + + + void glSpecializeShader + GLuint shader + const GLchar *pEntryPoint + GLuint numSpecializationConstants + const GLuint *pConstantIndex + const GLuint *pConstantValue + + + void glSpecializeShaderARB + GLuint shader + const GLchar *pEntryPoint + GLuint numSpecializationConstants + const GLuint *pConstantIndex + const GLuint *pConstantValue + + + + void glSpriteParameterfSGIX + GLenum pname + GLfloat param + + + + void glSpriteParameterfvSGIX + GLenum pname + const GLfloat *params + + + + void glSpriteParameteriSGIX + GLenum pname + GLint param + + + + void glSpriteParameterivSGIX + GLenum pname + const GLint *params + + + + void glStartInstrumentsSGIX + + + + void glStartTilingQCOM + GLuint x + GLuint y + GLuint width + GLuint height + GLbitfield preserveMask + + + void glStateCaptureNV + GLuint state + GLenum mode + + + void glStencilClearTagEXT + GLsizei stencilTagBits + GLuint stencilClearTag + + + + void glStencilFillPathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLenum fillMode + GLuint mask + GLenum transformType + const GLfloat *transformValues + + + void glStencilFillPathNV + GLuint path + GLenum fillMode + GLuint mask + + + void glStencilFunc + GLenum func + GLint ref + GLuint mask + + + + void glStencilFuncSeparate + GLenum face + GLenum func + GLint ref + GLuint mask + + + void glStencilFuncSeparateATI + GLenum frontfunc + GLenum backfunc + GLint ref + GLuint mask + + + void glStencilMask + GLuint mask + + + + void glStencilMaskSeparate + GLenum face + GLuint mask + + + void glStencilOp + GLenum fail + GLenum zfail + GLenum zpass + + + + void glStencilOpSeparate + GLenum face + GLenum sfail + GLenum dpfail + GLenum dppass + + + void glStencilOpSeparateATI + GLenum face + GLenum sfail + GLenum dpfail + GLenum dppass + + + + void glStencilOpValueAMD + GLenum face + GLuint value + + + void glStencilStrokePathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLint reference + GLuint mask + GLenum transformType + const GLfloat *transformValues + + + void glStencilStrokePathNV + GLuint path + GLint reference + GLuint mask + + + void glStencilThenCoverFillPathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLenum fillMode + GLuint mask + GLenum coverMode + GLenum transformType + const GLfloat *transformValues + + + void glStencilThenCoverFillPathNV + GLuint path + GLenum fillMode + GLuint mask + GLenum coverMode + + + void glStencilThenCoverStrokePathInstancedNV + GLsizei numPaths + GLenum pathNameType + const void *paths + GLuint pathBase + GLint reference + GLuint mask + GLenum coverMode + GLenum transformType + const GLfloat *transformValues + + + void glStencilThenCoverStrokePathNV + GLuint path + GLint reference + GLuint mask + GLenum coverMode + + + void glStopInstrumentsSGIX + GLint marker + + + + void glStringMarkerGREMEDY + GLsizei len + const void *string + + + void glSubpixelPrecisionBiasNV + GLuint xbits + GLuint ybits + + + void glSwizzleEXT + GLuint res + GLuint in + GLenum outX + GLenum outY + GLenum outZ + GLenum outW + + + void glSyncTextureINTEL + GLuint texture + + + void glTagSampleBufferSGIX + + + + void glTangent3bEXT + GLbyte tx + GLbyte ty + GLbyte tz + + + + void glTangent3bvEXT + const GLbyte *v + + + void glTangent3dEXT + GLdouble tx + GLdouble ty + GLdouble tz + + + + void glTangent3dvEXT + const GLdouble *v + + + void glTangent3fEXT + GLfloat tx + GLfloat ty + GLfloat tz + + + + void glTangent3fvEXT + const GLfloat *v + + + void glTangent3iEXT + GLint tx + GLint ty + GLint tz + + + + void glTangent3ivEXT + const GLint *v + + + void glTangent3sEXT + GLshort tx + GLshort ty + GLshort tz + + + + void glTangent3svEXT + const GLshort *v + + + void glTangentPointerEXT + GLenum type + GLsizei stride + const void *pointer + + + void glTbufferMask3DFX + GLuint mask + + + void glTessellationFactorAMD + GLfloat factor + + + void glTessellationModeAMD + GLenum mode + + + GLboolean glTestFenceAPPLE + GLuint fence + + + GLboolean glTestFenceNV + GLuint fence + + + + GLboolean glTestObjectAPPLE + GLenum object + GLuint name + + + void glTexAttachMemoryNV + GLenum target + GLuint memory + GLuint64 offset + + + void glTexBuffer + GLenum target + GLenum internalformat + GLuint buffer + + + void glTexBufferARB + GLenum target + GLenum internalformat + GLuint buffer + + + + + void glTexBufferEXT + GLenum target + GLenum internalformat + GLuint buffer + + + + void glTexBufferOES + GLenum target + GLenum internalformat + GLuint buffer + + + + void glTexBufferRange + GLenum target + GLenum internalformat + GLuint buffer + GLintptr offset + GLsizeiptr size + + + void glTexBufferRangeEXT + GLenum target + GLenum internalformat + GLuint buffer + GLintptr offset + GLsizeiptr size + + + + void glTexBufferRangeOES + GLenum target + GLenum internalformat + GLuint buffer + GLintptr offset + GLsizeiptr size + + + + void glTexBumpParameterfvATI + GLenum pname + const GLfloat *param + + + void glTexBumpParameterivATI + GLenum pname + const GLint *param + + + void glTexCoord1bOES + GLbyte s + + + void glTexCoord1bvOES + const GLbyte *coords + + + void glTexCoord1d + GLdouble s + + + + void glTexCoord1dv + const GLdouble *v + + + + void glTexCoord1f + GLfloat s + + + + void glTexCoord1fv + const GLfloat *v + + + + void glTexCoord1hNV + GLhalfNV s + + + + void glTexCoord1hvNV + const GLhalfNV *v + + + + void glTexCoord1i + GLint s + + + + void glTexCoord1iv + const GLint *v + + + + void glTexCoord1s + GLshort s + + + + void glTexCoord1sv + const GLshort *v + + + + void glTexCoord1xOES + GLfixed s + + + void glTexCoord1xvOES + const GLfixed *coords + + + void glTexCoord2bOES + GLbyte s + GLbyte t + + + void glTexCoord2bvOES + const GLbyte *coords + + + void glTexCoord2d + GLdouble s + GLdouble t + + + + void glTexCoord2dv + const GLdouble *v + + + + void glTexCoord2f + GLfloat s + GLfloat t + + + + void glTexCoord2fColor3fVertex3fSUN + GLfloat s + GLfloat t + GLfloat r + GLfloat g + GLfloat b + GLfloat x + GLfloat y + GLfloat z + + + void glTexCoord2fColor3fVertex3fvSUN + const GLfloat *tc + const GLfloat *c + const GLfloat *v + + + void glTexCoord2fColor4fNormal3fVertex3fSUN + GLfloat s + GLfloat t + GLfloat r + GLfloat g + GLfloat b + GLfloat a + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glTexCoord2fColor4fNormal3fVertex3fvSUN + const GLfloat *tc + const GLfloat *c + const GLfloat *n + const GLfloat *v + + + void glTexCoord2fColor4ubVertex3fSUN + GLfloat s + GLfloat t + GLubyte r + GLubyte g + GLubyte b + GLubyte a + GLfloat x + GLfloat y + GLfloat z + + + void glTexCoord2fColor4ubVertex3fvSUN + const GLfloat *tc + const GLubyte *c + const GLfloat *v + + + void glTexCoord2fNormal3fVertex3fSUN + GLfloat s + GLfloat t + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + + + void glTexCoord2fNormal3fVertex3fvSUN + const GLfloat *tc + const GLfloat *n + const GLfloat *v + + + void glTexCoord2fVertex3fSUN + GLfloat s + GLfloat t + GLfloat x + GLfloat y + GLfloat z + + + void glTexCoord2fVertex3fvSUN + const GLfloat *tc + const GLfloat *v + + + void glTexCoord2fv + const GLfloat *v + + + + void glTexCoord2hNV + GLhalfNV s + GLhalfNV t + + + + void glTexCoord2hvNV + const GLhalfNV *v + + + + void glTexCoord2i + GLint s + GLint t + + + + void glTexCoord2iv + const GLint *v + + + + void glTexCoord2s + GLshort s + GLshort t + + + + void glTexCoord2sv + const GLshort *v + + + + void glTexCoord2xOES + GLfixed s + GLfixed t + + + void glTexCoord2xvOES + const GLfixed *coords + + + void glTexCoord3bOES + GLbyte s + GLbyte t + GLbyte r + + + void glTexCoord3bvOES + const GLbyte *coords + + + void glTexCoord3d + GLdouble s + GLdouble t + GLdouble r + + + + void glTexCoord3dv + const GLdouble *v + + + + void glTexCoord3f + GLfloat s + GLfloat t + GLfloat r + + + + void glTexCoord3fv + const GLfloat *v + + + + void glTexCoord3hNV + GLhalfNV s + GLhalfNV t + GLhalfNV r + + + + void glTexCoord3hvNV + const GLhalfNV *v + + + + void glTexCoord3i + GLint s + GLint t + GLint r + + + + void glTexCoord3iv + const GLint *v + + + + void glTexCoord3s + GLshort s + GLshort t + GLshort r + + + + void glTexCoord3sv + const GLshort *v + + + + void glTexCoord3xOES + GLfixed s + GLfixed t + GLfixed r + + + void glTexCoord3xvOES + const GLfixed *coords + + + void glTexCoord4bOES + GLbyte s + GLbyte t + GLbyte r + GLbyte q + + + void glTexCoord4bvOES + const GLbyte *coords + + + void glTexCoord4d + GLdouble s + GLdouble t + GLdouble r + GLdouble q + + + + void glTexCoord4dv + const GLdouble *v + + + + void glTexCoord4f + GLfloat s + GLfloat t + GLfloat r + GLfloat q + + + + void glTexCoord4fColor4fNormal3fVertex4fSUN + GLfloat s + GLfloat t + GLfloat p + GLfloat q + GLfloat r + GLfloat g + GLfloat b + GLfloat a + GLfloat nx + GLfloat ny + GLfloat nz + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + void glTexCoord4fColor4fNormal3fVertex4fvSUN + const GLfloat *tc + const GLfloat *c + const GLfloat *n + const GLfloat *v + + + void glTexCoord4fVertex4fSUN + GLfloat s + GLfloat t + GLfloat p + GLfloat q + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + void glTexCoord4fVertex4fvSUN + const GLfloat *tc + const GLfloat *v + + + void glTexCoord4fv + const GLfloat *v + + + + void glTexCoord4hNV + GLhalfNV s + GLhalfNV t + GLhalfNV r + GLhalfNV q + + + + void glTexCoord4hvNV + const GLhalfNV *v + + + + void glTexCoord4i + GLint s + GLint t + GLint r + GLint q + + + + void glTexCoord4iv + const GLint *v + + + + void glTexCoord4s + GLshort s + GLshort t + GLshort r + GLshort q + + + + void glTexCoord4sv + const GLshort *v + + + + void glTexCoord4xOES + GLfixed s + GLfixed t + GLfixed r + GLfixed q + + + void glTexCoord4xvOES + const GLfixed *coords + + + void glTexCoordFormatNV + GLint size + GLenum type + GLsizei stride + + + void glTexCoordP1ui + GLenum type + GLuint coords + + + void glTexCoordP1uiv + GLenum type + const GLuint *coords + + + void glTexCoordP2ui + GLenum type + GLuint coords + + + void glTexCoordP2uiv + GLenum type + const GLuint *coords + + + void glTexCoordP3ui + GLenum type + GLuint coords + + + void glTexCoordP3uiv + GLenum type + const GLuint *coords + + + void glTexCoordP4ui + GLenum type + GLuint coords + + + void glTexCoordP4uiv + GLenum type + const GLuint *coords + + + void glTexCoordPointer + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glTexCoordPointerEXT + GLint size + GLenum type + GLsizei stride + GLsizei count + const void *pointer + + + void glTexCoordPointerListIBM + GLint size + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glTexCoordPointervINTEL + GLint size + GLenum type + const void **pointer + + + void glTexEnvf + GLenum target + GLenum pname + GLfloat param + + + + void glTexEnvfv + GLenum target + GLenum pname + const GLfloat *params + + + + void glTexEnvi + GLenum target + GLenum pname + GLint param + + + + void glTexEnviv + GLenum target + GLenum pname + const GLint *params + + + + void glTexEnvx + GLenum target + GLenum pname + GLfixed param + + + void glTexEnvxOES + GLenum target + GLenum pname + GLfixed param + + + void glTexEnvxv + GLenum target + GLenum pname + const GLfixed *params + + + void glTexEnvxvOES + GLenum target + GLenum pname + const GLfixed *params + + + void glTexEstimateMotionQCOM + GLuint ref + GLuint target + GLuint output + + + void glTexEstimateMotionRegionsQCOM + GLuint ref + GLuint target + GLuint output + GLuint mask + + + void glExtrapolateTex2DQCOM + GLuint src1 + GLuint src2 + GLuint output + GLfloat scaleFactor + + + void glTexFilterFuncSGIS + GLenum target + GLenum filter + GLsizei n + const GLfloat *weights + + + + void glTexGend + GLenum coord + GLenum pname + GLdouble param + + + + void glTexGendv + GLenum coord + GLenum pname + const GLdouble *params + + + + void glTexGenf + GLenum coord + GLenum pname + GLfloat param + + + + void glTexGenfOES + GLenum coord + GLenum pname + GLfloat param + + + void glTexGenfv + GLenum coord + GLenum pname + const GLfloat *params + + + + void glTexGenfvOES + GLenum coord + GLenum pname + const GLfloat *params + + + void glTexGeni + GLenum coord + GLenum pname + GLint param + + + + void glTexGeniOES + GLenum coord + GLenum pname + GLint param + + + void glTexGeniv + GLenum coord + GLenum pname + const GLint *params + + + + void glTexGenivOES + GLenum coord + GLenum pname + const GLint *params + + + void glTexGenxOES + GLenum coord + GLenum pname + GLfixed param + + + void glTexGenxvOES + GLenum coord + GLenum pname + const GLfixed *params + + + void glTexImage1D + GLenum target + GLint level + GLint internalformat + GLsizei width + GLint border + GLenum format + GLenum type + const void *pixels + + + + + void glTexImage2D + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLint border + GLenum format + GLenum type + const void *pixels + + + + + void glTexImage2DMultisample + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLboolean fixedsamplelocations + + + void glTexImage2DMultisampleCoverageNV + GLenum target + GLsizei coverageSamples + GLsizei colorSamples + GLint internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + + + void glTexImage3D + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLenum format + GLenum type + const void *pixels + + + + + void glTexImage3DEXT + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLenum format + GLenum type + const void *pixels + + + + + void glTexImage3DMultisample + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedsamplelocations + + + void glTexImage3DMultisampleCoverageNV + GLenum target + GLsizei coverageSamples + GLsizei colorSamples + GLint internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + + + void glTexImage3DOES + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLenum format + GLenum type + const void *pixels + + + void glTexImage4DSGIS + GLenum target + GLint level + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLsizei size4d + GLint border + GLenum format + GLenum type + const void *pixels + + + + void glTexPageCommitmentARB + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLboolean commit + + + void glTexPageCommitmentEXT + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLboolean commit + + + + void glTexPageCommitmentMemNV + GLenum target + GLint layer + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + GLboolean commit + + + void glTexParameterIiv + GLenum target + GLenum pname + const GLint *params + + + + void glTexParameterIivEXT + GLenum target + GLenum pname + const GLint *params + + + + void glTexParameterIivOES + GLenum target + GLenum pname + const GLint *params + + + + void glTexParameterIuiv + GLenum target + GLenum pname + const GLuint *params + + + + void glTexParameterIuivEXT + GLenum target + GLenum pname + const GLuint *params + + + + void glTexParameterIuivOES + GLenum target + GLenum pname + const GLuint *params + + + + void glTexParameterf + GLenum target + GLenum pname + GLfloat param + + + + void glTexParameterfv + GLenum target + GLenum pname + const GLfloat *params + + + + void glTexParameteri + GLenum target + GLenum pname + GLint param + + + + void glTexParameteriv + GLenum target + GLenum pname + const GLint *params + + + + void glTexParameterx + GLenum target + GLenum pname + GLfixed param + + + void glTexParameterxOES + GLenum target + GLenum pname + GLfixed param + + + void glTexParameterxv + GLenum target + GLenum pname + const GLfixed *params + + + void glTexParameterxvOES + GLenum target + GLenum pname + const GLfixed *params + + + void glTexRenderbufferNV + GLenum target + GLuint renderbuffer + + + void glTexStorage1D + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + + + void glTexStorage1DEXT + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + + + + void glTexStorage2D + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + + + void glTexStorage2DEXT + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + + + + void glTexStorage2DMultisample + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLboolean fixedsamplelocations + + + void glTexStorage3D + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + + + void glTexStorage3DEXT + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + + + + void glTexStorage3DMultisample + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedsamplelocations + + + void glTexStorage3DMultisampleOES + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedsamplelocations + + + + void glTexStorageAttribs2DEXT + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + const GLint* attrib_list + + + void glTexStorageAttribs3DEXT + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + const GLint* attrib_list + + + void glTexStorageMem1DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLuint memory + GLuint64 offset + + + void glTexStorageMem2DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLuint memory + GLuint64 offset + + + void glTexStorageMem2DMultisampleEXT + GLenum target + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTexStorageMem3DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + + + void glTexStorageMem3DMultisampleEXT + GLenum target + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTexStorageSparseAMD + GLenum target + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLsizei layers + GLbitfield flags + + + void glTexSubImage1D + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage1DEXT + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage2D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage2DEXT + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage3D + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage3DEXT + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + + + void glTexSubImage3DOES + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + void glTexSubImage4DSGIS + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLint woffset + GLsizei width + GLsizei height + GLsizei depth + GLsizei size4d + GLenum format + GLenum type + const void *pixels + + + + void glTextureAttachMemoryNV + GLuint texture + GLuint memory + GLuint64 offset + + + void glTextureBarrier + + + void glTextureBarrierNV + + + + void glTextureBuffer + GLuint texture + GLenum internalformat + GLuint buffer + + + void glTextureBufferEXT + GLuint texture + GLenum target + GLenum internalformat + GLuint buffer + + + void glTextureBufferRange + GLuint texture + GLenum internalformat + GLuint buffer + GLintptr offset + GLsizeiptr size + + + void glTextureBufferRangeEXT + GLuint texture + GLenum target + GLenum internalformat + GLuint buffer + GLintptr offset + GLsizeiptr size + + + void glTextureColorMaskSGIS + GLboolean red + GLboolean green + GLboolean blue + GLboolean alpha + + + + void glTextureFoveationParametersQCOM + GLuint texture + GLuint layer + GLuint focalPoint + GLfloat focalX + GLfloat focalY + GLfloat gainX + GLfloat gainY + GLfloat foveaArea + + + void glTextureImage1DEXT + GLuint texture + GLenum target + GLint level + GLint internalformat + GLsizei width + GLint border + GLenum format + GLenum type + const void *pixels + + + void glTextureImage2DEXT + GLuint texture + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLint border + GLenum format + GLenum type + const void *pixels + + + void glTextureImage2DMultisampleCoverageNV + GLuint texture + GLenum target + GLsizei coverageSamples + GLsizei colorSamples + GLint internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + + + void glTextureImage2DMultisampleNV + GLuint texture + GLenum target + GLsizei samples + GLint internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + + + void glTextureImage3DEXT + GLuint texture + GLenum target + GLint level + GLint internalformat + GLsizei width + GLsizei height + GLsizei depth + GLint border + GLenum format + GLenum type + const void *pixels + + + void glTextureImage3DMultisampleCoverageNV + GLuint texture + GLenum target + GLsizei coverageSamples + GLsizei colorSamples + GLint internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + + + void glTextureImage3DMultisampleNV + GLuint texture + GLenum target + GLsizei samples + GLint internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + + + void glTextureLightEXT + GLenum pname + + + void glTextureMaterialEXT + GLenum face + GLenum mode + + + void glTextureNormalEXT + GLenum mode + + + void glTexturePageCommitmentEXT + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLboolean commit + + + void glTexturePageCommitmentMemNV + GLuint texture + GLint layer + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + GLboolean commit + + + void glTextureParameterIiv + GLuint texture + GLenum pname + const GLint *params + + + void glTextureParameterIivEXT + GLuint texture + GLenum target + GLenum pname + const GLint *params + + + void glTextureParameterIuiv + GLuint texture + GLenum pname + const GLuint *params + + + void glTextureParameterIuivEXT + GLuint texture + GLenum target + GLenum pname + const GLuint *params + + + void glTextureParameterf + GLuint texture + GLenum pname + GLfloat param + + + void glTextureParameterfEXT + GLuint texture + GLenum target + GLenum pname + GLfloat param + + + + void glTextureParameterfv + GLuint texture + GLenum pname + const GLfloat *param + + + void glTextureParameterfvEXT + GLuint texture + GLenum target + GLenum pname + const GLfloat *params + + + void glTextureParameteri + GLuint texture + GLenum pname + GLint param + + + void glTextureParameteriEXT + GLuint texture + GLenum target + GLenum pname + GLint param + + + + void glTextureParameteriv + GLuint texture + GLenum pname + const GLint *param + + + void glTextureParameterivEXT + GLuint texture + GLenum target + GLenum pname + const GLint *params + + + void glTextureRangeAPPLE + GLenum target + GLsizei length + const void *pointer + + + void glTextureRenderbufferEXT + GLuint texture + GLenum target + GLuint renderbuffer + + + void glTextureStorage1D + GLuint texture + GLsizei levels + GLenum internalformat + GLsizei width + + + void glTextureStorage1DEXT + GLuint texture + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + + + void glTextureStorage2D + GLuint texture + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + + + void glTextureStorage2DEXT + GLuint texture + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + + + void glTextureStorage2DMultisample + GLuint texture + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLboolean fixedsamplelocations + + + void glTextureStorage2DMultisampleEXT + GLuint texture + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLboolean fixedsamplelocations + + + void glTextureStorage3D + GLuint texture + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + + + void glTextureStorage3DEXT + GLuint texture + GLenum target + GLsizei levels + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + + + void glTextureStorage3DMultisample + GLuint texture + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedsamplelocations + + + void glTextureStorage3DMultisampleEXT + GLuint texture + GLenum target + GLsizei samples + GLenum internalformat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedsamplelocations + + + void glTextureStorageMem1DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLuint memory + GLuint64 offset + + + void glTextureStorageMem2DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLuint memory + GLuint64 offset + + + void glTextureStorageMem2DMultisampleEXT + GLuint texture + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTextureStorageMem3DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + + + void glTextureStorageMem3DMultisampleEXT + GLuint texture + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTextureStorageSparseAMD + GLuint texture + GLenum target + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLsizei layers + GLbitfield flags + + + void glTextureSubImage1D + GLuint texture + GLint level + GLint xoffset + GLsizei width + GLenum format + GLenum type + const void *pixels + + + void glTextureSubImage1DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLsizei width + GLenum format + GLenum type + const void *pixels + + + void glTextureSubImage2D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + void glTextureSubImage2DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLsizei width + GLsizei height + GLenum format + GLenum type + const void *pixels + + + void glTextureSubImage3D + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + void glTextureSubImage3DEXT + GLuint texture + GLenum target + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *pixels + + + void glTextureView + GLuint texture + GLenum target + GLuint origtexture + GLenum internalformat + GLuint minlevel + GLuint numlevels + GLuint minlayer + GLuint numlayers + + + void glTextureViewEXT + GLuint texture + GLenum target + GLuint origtexture + GLenum internalformat + GLuint minlevel + GLuint numlevels + GLuint minlayer + GLuint numlayers + + + + void glTextureViewOES + GLuint texture + GLenum target + GLuint origtexture + GLenum internalformat + GLuint minlevel + GLuint numlevels + GLuint minlayer + GLuint numlayers + + + + void glTrackMatrixNV + GLenum target + GLuint address + GLenum matrix + GLenum transform + + + + void glTransformFeedbackAttribsNV + GLsizei count + const GLint *attribs + GLenum bufferMode + + + void glTransformFeedbackBufferBase + GLuint xfb + GLuint index + GLuint buffer + + + void glTransformFeedbackBufferRange + GLuint xfb + GLuint index + GLuint buffer + GLintptr offset + GLsizeiptr size + + + void glTransformFeedbackStreamAttribsNV + GLsizei count + const GLint *attribs + GLsizei nbuffers + const GLint *bufstreams + GLenum bufferMode + + + void glTransformFeedbackVaryings + GLuint program + GLsizei count + const GLchar *const*varyings + GLenum bufferMode + + + + void glTransformFeedbackVaryingsEXT + GLuint program + GLsizei count + const GLchar *const*varyings + GLenum bufferMode + + + + void glTransformFeedbackVaryingsNV + GLuint program + GLsizei count + const GLint *locations + GLenum bufferMode + + + void glTransformPathNV + GLuint resultPath + GLuint srcPath + GLenum transformType + const GLfloat *transformValues + + + void glTranslated + GLdouble x + GLdouble y + GLdouble z + + + + void glTranslatef + GLfloat x + GLfloat y + GLfloat z + + + + void glTranslatex + GLfixed x + GLfixed y + GLfixed z + + + void glTranslatexOES + GLfixed x + GLfixed y + GLfixed z + + + void glUniform1d + GLint location + GLdouble x + + + void glUniform1dv + GLint location + GLsizei count + const GLdouble *value + + + void glUniform1f + GLint location + GLfloat v0 + + + void glUniform1fARB + GLint location + GLfloat v0 + + + + void glUniform1fv + GLint location + GLsizei count + const GLfloat *value + + + void glUniform1fvARB + GLint location + GLsizei count + const GLfloat *value + + + + void glUniform1i + GLint location + GLint v0 + + + void glUniform1i64ARB + GLint location + GLint64 x + + + void glUniform1i64NV + GLint location + GLint64EXT x + + + void glUniform1i64vARB + GLint location + GLsizei count + const GLint64 *value + + + void glUniform1i64vNV + GLint location + GLsizei count + const GLint64EXT *value + + + void glUniform1iARB + GLint location + GLint v0 + + + + void glUniform1iv + GLint location + GLsizei count + const GLint *value + + + void glUniform1ivARB + GLint location + GLsizei count + const GLint *value + + + + void glUniform1ui + GLint location + GLuint v0 + + + void glUniform1ui64ARB + GLint location + GLuint64 x + + + void glUniform1ui64NV + GLint location + GLuint64EXT x + + + void glUniform1ui64vARB + GLint location + GLsizei count + const GLuint64 *value + + + void glUniform1ui64vNV + GLint location + GLsizei count + const GLuint64EXT *value + + + void glUniform1uiEXT + GLint location + GLuint v0 + + + + void glUniform1uiv + GLint location + GLsizei count + const GLuint *value + + + void glUniform1uivEXT + GLint location + GLsizei count + const GLuint *value + + + + void glUniform2d + GLint location + GLdouble x + GLdouble y + + + void glUniform2dv + GLint location + GLsizei count + const GLdouble *value + + + void glUniform2f + GLint location + GLfloat v0 + GLfloat v1 + + + void glUniform2fARB + GLint location + GLfloat v0 + GLfloat v1 + + + + void glUniform2fv + GLint location + GLsizei count + const GLfloat *value + + + void glUniform2fvARB + GLint location + GLsizei count + const GLfloat *value + + + + void glUniform2i + GLint location + GLint v0 + GLint v1 + + + void glUniform2i64ARB + GLint location + GLint64 x + GLint64 y + + + void glUniform2i64NV + GLint location + GLint64EXT x + GLint64EXT y + + + void glUniform2i64vARB + GLint location + GLsizei count + const GLint64 *value + + + void glUniform2i64vNV + GLint location + GLsizei count + const GLint64EXT *value + + + void glUniform2iARB + GLint location + GLint v0 + GLint v1 + + + + void glUniform2iv + GLint location + GLsizei count + const GLint *value + + + void glUniform2ivARB + GLint location + GLsizei count + const GLint *value + + + + void glUniform2ui + GLint location + GLuint v0 + GLuint v1 + + + void glUniform2ui64ARB + GLint location + GLuint64 x + GLuint64 y + + + void glUniform2ui64NV + GLint location + GLuint64EXT x + GLuint64EXT y + + + void glUniform2ui64vARB + GLint location + GLsizei count + const GLuint64 *value + + + void glUniform2ui64vNV + GLint location + GLsizei count + const GLuint64EXT *value + + + void glUniform2uiEXT + GLint location + GLuint v0 + GLuint v1 + + + + void glUniform2uiv + GLint location + GLsizei count + const GLuint *value + + + void glUniform2uivEXT + GLint location + GLsizei count + const GLuint *value + + + + void glUniform3d + GLint location + GLdouble x + GLdouble y + GLdouble z + + + void glUniform3dv + GLint location + GLsizei count + const GLdouble *value + + + void glUniform3f + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + + + void glUniform3fARB + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + + + + void glUniform3fv + GLint location + GLsizei count + const GLfloat *value + + + void glUniform3fvARB + GLint location + GLsizei count + const GLfloat *value + + + + void glUniform3i + GLint location + GLint v0 + GLint v1 + GLint v2 + + + void glUniform3i64ARB + GLint location + GLint64 x + GLint64 y + GLint64 z + + + void glUniform3i64NV + GLint location + GLint64EXT x + GLint64EXT y + GLint64EXT z + + + void glUniform3i64vARB + GLint location + GLsizei count + const GLint64 *value + + + void glUniform3i64vNV + GLint location + GLsizei count + const GLint64EXT *value + + + void glUniform3iARB + GLint location + GLint v0 + GLint v1 + GLint v2 + + + + void glUniform3iv + GLint location + GLsizei count + const GLint *value + + + void glUniform3ivARB + GLint location + GLsizei count + const GLint *value + + + + void glUniform3ui + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + + + void glUniform3ui64ARB + GLint location + GLuint64 x + GLuint64 y + GLuint64 z + + + void glUniform3ui64NV + GLint location + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + + + void glUniform3ui64vARB + GLint location + GLsizei count + const GLuint64 *value + + + void glUniform3ui64vNV + GLint location + GLsizei count + const GLuint64EXT *value + + + void glUniform3uiEXT + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + + + + void glUniform3uiv + GLint location + GLsizei count + const GLuint *value + + + void glUniform3uivEXT + GLint location + GLsizei count + const GLuint *value + + + + void glUniform4d + GLint location + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + void glUniform4dv + GLint location + GLsizei count + const GLdouble *value + + + void glUniform4f + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + GLfloat v3 + + + void glUniform4fARB + GLint location + GLfloat v0 + GLfloat v1 + GLfloat v2 + GLfloat v3 + + + + void glUniform4fv + GLint location + GLsizei count + const GLfloat *value + + + void glUniform4fvARB + GLint location + GLsizei count + const GLfloat *value + + + + void glUniform4i + GLint location + GLint v0 + GLint v1 + GLint v2 + GLint v3 + + + void glUniform4i64ARB + GLint location + GLint64 x + GLint64 y + GLint64 z + GLint64 w + + + void glUniform4i64NV + GLint location + GLint64EXT x + GLint64EXT y + GLint64EXT z + GLint64EXT w + + + void glUniform4i64vARB + GLint location + GLsizei count + const GLint64 *value + + + void glUniform4i64vNV + GLint location + GLsizei count + const GLint64EXT *value + + + void glUniform4iARB + GLint location + GLint v0 + GLint v1 + GLint v2 + GLint v3 + + + + void glUniform4iv + GLint location + GLsizei count + const GLint *value + + + void glUniform4ivARB + GLint location + GLsizei count + const GLint *value + + + + void glUniform4ui + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + GLuint v3 + + + void glUniform4ui64ARB + GLint location + GLuint64 x + GLuint64 y + GLuint64 z + GLuint64 w + + + void glUniform4ui64NV + GLint location + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + GLuint64EXT w + + + void glUniform4ui64vARB + GLint location + GLsizei count + const GLuint64 *value + + + void glUniform4ui64vNV + GLint location + GLsizei count + const GLuint64EXT *value + + + void glUniform4uiEXT + GLint location + GLuint v0 + GLuint v1 + GLuint v2 + GLuint v3 + + + + void glUniform4uiv + GLint location + GLsizei count + const GLuint *value + + + void glUniform4uivEXT + GLint location + GLsizei count + const GLuint *value + + + + void glUniformBlockBinding + GLuint program + GLuint uniformBlockIndex + GLuint uniformBlockBinding + + + + void glUniformBufferEXT + GLuint program + GLint location + GLuint buffer + + + void glUniformHandleui64ARB + GLint location + GLuint64 value + + + void glUniformHandleui64IMG + GLint location + GLuint64 value + + + + void glUniformHandleui64NV + GLint location + GLuint64 value + + + void glUniformHandleui64vARB + GLint location + GLsizei count + const GLuint64 *value + + + void glUniformHandleui64vIMG + GLint location + GLsizei count + const GLuint64 *value + + + + void glUniformHandleui64vNV + GLint location + GLsizei count + const GLuint64 *value + + + void glUniformMatrix2dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix2fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glUniformMatrix2fvARB + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix2x3dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix2x3fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix2x3fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix2x4dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix2x4fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix2x4fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix3dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix3fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glUniformMatrix3fvARB + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix3x2dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix3x2fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix3x2fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix3x4dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix3x4fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix3x4fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix4dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix4fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + void glUniformMatrix4fvARB + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix4x2dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix4x2fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix4x2fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix4x3dv + GLint location + GLsizei count + GLboolean transpose + const GLdouble *value + + + void glUniformMatrix4x3fv + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformMatrix4x3fvNV + GLint location + GLsizei count + GLboolean transpose + const GLfloat *value + + + + void glUniformSubroutinesuiv + GLenum shadertype + GLsizei count + const GLuint *indices + + + void glUniformui64NV + GLint location + GLuint64EXT value + + + void glUniformui64vNV + GLint location + GLsizei count + const GLuint64EXT *value + + + void glUnlockArraysEXT + + + GLboolean glUnmapBuffer + GLenum target + + + GLboolean glUnmapBufferARB + GLenum target + + + + GLboolean glUnmapBufferOES + GLenum target + + + + GLboolean glUnmapNamedBuffer + GLuint buffer + + + GLboolean glUnmapNamedBufferEXT + GLuint buffer + + + void glUnmapObjectBufferATI + GLuint buffer + + + void glUnmapTexture2DINTEL + GLuint texture + GLint level + + + void glUpdateObjectBufferATI + GLuint buffer + GLuint offset + GLsizei size + const void *pointer + GLenum preserve + + + void glUploadGpuMaskNVX + GLbitfield mask + + + void glUseProgram + GLuint program + + + void glUseProgramObjectARB + GLhandleARB programObj + + + + void glUseProgramStages + GLuint pipeline + GLbitfield stages + GLuint program + + + void glUseProgramStagesEXT + GLuint pipeline + GLbitfield stages + GLuint program + + + void glUseShaderProgramEXT + GLenum type + GLuint program + + + void glVDPAUFiniNV + + + void glVDPAUGetSurfaceivNV + GLvdpauSurfaceNV surface + GLenum pname + GLsizei count + GLsizei *length + GLint *values + + + void glVDPAUInitNV + const void *vdpDevice + const void *getProcAddress + + + GLboolean glVDPAUIsSurfaceNV + GLvdpauSurfaceNV surface + + + void glVDPAUMapSurfacesNV + GLsizei numSurfaces + const GLvdpauSurfaceNV *surfaces + + + GLvdpauSurfaceNV glVDPAURegisterOutputSurfaceNV + const void *vdpSurface + GLenum target + GLsizei numTextureNames + const GLuint *textureNames + + + GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceNV + const void *vdpSurface + GLenum target + GLsizei numTextureNames + const GLuint *textureNames + + + GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceWithPictureStructureNV + const void *vdpSurface + GLenum target + GLsizei numTextureNames + const GLuint *textureNames + GLboolean isFrameStructure + + + void glVDPAUSurfaceAccessNV + GLvdpauSurfaceNV surface + GLenum access + + + void glVDPAUUnmapSurfacesNV + GLsizei numSurface + const GLvdpauSurfaceNV *surfaces + + + void glVDPAUUnregisterSurfaceNV + GLvdpauSurfaceNV surface + + + void glValidateProgram + GLuint program + + + void glValidateProgramARB + GLhandleARB programObj + + + + void glValidateProgramPipeline + GLuint pipeline + + + void glValidateProgramPipelineEXT + GLuint pipeline + + + void glVariantArrayObjectATI + GLuint id + GLenum type + GLsizei stride + GLuint buffer + GLuint offset + + + void glVariantPointerEXT + GLuint id + GLenum type + GLuint stride + const void *addr + + + void glVariantbvEXT + GLuint id + const GLbyte *addr + + + void glVariantdvEXT + GLuint id + const GLdouble *addr + + + void glVariantfvEXT + GLuint id + const GLfloat *addr + + + void glVariantivEXT + GLuint id + const GLint *addr + + + void glVariantsvEXT + GLuint id + const GLshort *addr + + + void glVariantubvEXT + GLuint id + const GLubyte *addr + + + void glVariantuivEXT + GLuint id + const GLuint *addr + + + void glVariantusvEXT + GLuint id + const GLushort *addr + + + void glVertex2bOES + GLbyte x + GLbyte y + + + void glVertex2bvOES + const GLbyte *coords + + + void glVertex2d + GLdouble x + GLdouble y + + + + void glVertex2dv + const GLdouble *v + + + + void glVertex2f + GLfloat x + GLfloat y + + + + void glVertex2fv + const GLfloat *v + + + + void glVertex2hNV + GLhalfNV x + GLhalfNV y + + + + void glVertex2hvNV + const GLhalfNV *v + + + + void glVertex2i + GLint x + GLint y + + + + void glVertex2iv + const GLint *v + + + + void glVertex2s + GLshort x + GLshort y + + + + void glVertex2sv + const GLshort *v + + + + void glVertex2xOES + GLfixed x + + + void glVertex2xvOES + const GLfixed *coords + + + void glVertex3bOES + GLbyte x + GLbyte y + GLbyte z + + + void glVertex3bvOES + const GLbyte *coords + + + void glVertex3d + GLdouble x + GLdouble y + GLdouble z + + + + void glVertex3dv + const GLdouble *v + + + + void glVertex3f + GLfloat x + GLfloat y + GLfloat z + + + + void glVertex3fv + const GLfloat *v + + + + void glVertex3hNV + GLhalfNV x + GLhalfNV y + GLhalfNV z + + + + void glVertex3hvNV + const GLhalfNV *v + + + + void glVertex3i + GLint x + GLint y + GLint z + + + + void glVertex3iv + const GLint *v + + + + void glVertex3s + GLshort x + GLshort y + GLshort z + + + + void glVertex3sv + const GLshort *v + + + + void glVertex3xOES + GLfixed x + GLfixed y + + + void glVertex3xvOES + const GLfixed *coords + + + void glVertex4bOES + GLbyte x + GLbyte y + GLbyte z + GLbyte w + + + void glVertex4bvOES + const GLbyte *coords + + + void glVertex4d + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glVertex4dv + const GLdouble *v + + + + void glVertex4f + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glVertex4fv + const GLfloat *v + + + + void glVertex4hNV + GLhalfNV x + GLhalfNV y + GLhalfNV z + GLhalfNV w + + + + void glVertex4hvNV + const GLhalfNV *v + + + + void glVertex4i + GLint x + GLint y + GLint z + GLint w + + + + void glVertex4iv + const GLint *v + + + + void glVertex4s + GLshort x + GLshort y + GLshort z + GLshort w + + + + void glVertex4sv + const GLshort *v + + + + void glVertex4xOES + GLfixed x + GLfixed y + GLfixed z + + + void glVertex4xvOES + const GLfixed *coords + + + void glVertexArrayAttribBinding + GLuint vaobj + GLuint attribindex + GLuint bindingindex + + + void glVertexArrayAttribFormat + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLboolean normalized + GLuint relativeoffset + + + void glVertexArrayAttribIFormat + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexArrayAttribLFormat + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexArrayBindVertexBufferEXT + GLuint vaobj + GLuint bindingindex + GLuint buffer + GLintptr offset + GLsizei stride + + + void glVertexArrayBindingDivisor + GLuint vaobj + GLuint bindingindex + GLuint divisor + + + void glVertexArrayColorOffsetEXT + GLuint vaobj + GLuint buffer + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayEdgeFlagOffsetEXT + GLuint vaobj + GLuint buffer + GLsizei stride + GLintptr offset + + + void glVertexArrayElementBuffer + GLuint vaobj + GLuint buffer + + + void glVertexArrayFogCoordOffsetEXT + GLuint vaobj + GLuint buffer + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayIndexOffsetEXT + GLuint vaobj + GLuint buffer + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayMultiTexCoordOffsetEXT + GLuint vaobj + GLuint buffer + GLenum texunit + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayNormalOffsetEXT + GLuint vaobj + GLuint buffer + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayParameteriAPPLE + GLenum pname + GLint param + + + void glVertexArrayRangeAPPLE + GLsizei length + void *pointer + + + void glVertexArrayRangeNV + GLsizei length + const void *pointer + + + void glVertexArraySecondaryColorOffsetEXT + GLuint vaobj + GLuint buffer + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayTexCoordOffsetEXT + GLuint vaobj + GLuint buffer + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayVertexAttribBindingEXT + GLuint vaobj + GLuint attribindex + GLuint bindingindex + + + void glVertexArrayVertexAttribDivisorEXT + GLuint vaobj + GLuint index + GLuint divisor + + + void glVertexArrayVertexAttribFormatEXT + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLboolean normalized + GLuint relativeoffset + + + void glVertexArrayVertexAttribIFormatEXT + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexArrayVertexAttribIOffsetEXT + GLuint vaobj + GLuint buffer + GLuint index + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayVertexAttribLFormatEXT + GLuint vaobj + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexArrayVertexAttribLOffsetEXT + GLuint vaobj + GLuint buffer + GLuint index + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexArrayVertexAttribOffsetEXT + GLuint vaobj + GLuint buffer + GLuint index + GLint size + GLenum type + GLboolean normalized + GLsizei stride + GLintptr offset + + + void glVertexArrayVertexBindingDivisorEXT + GLuint vaobj + GLuint bindingindex + GLuint divisor + + + void glVertexArrayVertexBuffer + GLuint vaobj + GLuint bindingindex + GLuint buffer + GLintptr offset + GLsizei stride + + + void glVertexArrayVertexBuffers + GLuint vaobj + GLuint first + GLsizei count + const GLuint *buffers + const GLintptr *offsets + const GLsizei *strides + + + void glVertexArrayVertexOffsetEXT + GLuint vaobj + GLuint buffer + GLint size + GLenum type + GLsizei stride + GLintptr offset + + + void glVertexAttrib1d + GLuint index + GLdouble x + + + + void glVertexAttrib1dARB + GLuint index + GLdouble x + + + + + void glVertexAttrib1dNV + GLuint index + GLdouble x + + + + + void glVertexAttrib1dv + GLuint index + const GLdouble *v + + + + void glVertexAttrib1dvARB + GLuint index + const GLdouble *v + + + + + void glVertexAttrib1dvNV + GLuint index + const GLdouble *v + + + + + void glVertexAttrib1f + GLuint index + GLfloat x + + + + void glVertexAttrib1fARB + GLuint index + GLfloat x + + + + + void glVertexAttrib1fNV + GLuint index + GLfloat x + + + + + void glVertexAttrib1fv + GLuint index + const GLfloat *v + + + + void glVertexAttrib1fvARB + GLuint index + const GLfloat *v + + + + + void glVertexAttrib1fvNV + GLuint index + const GLfloat *v + + + + + void glVertexAttrib1hNV + GLuint index + GLhalfNV x + + + + void glVertexAttrib1hvNV + GLuint index + const GLhalfNV *v + + + + void glVertexAttrib1s + GLuint index + GLshort x + + + + void glVertexAttrib1sARB + GLuint index + GLshort x + + + + + void glVertexAttrib1sNV + GLuint index + GLshort x + + + + + void glVertexAttrib1sv + GLuint index + const GLshort *v + + + + void glVertexAttrib1svARB + GLuint index + const GLshort *v + + + + + void glVertexAttrib1svNV + GLuint index + const GLshort *v + + + + + void glVertexAttrib2d + GLuint index + GLdouble x + GLdouble y + + + + void glVertexAttrib2dARB + GLuint index + GLdouble x + GLdouble y + + + + + void glVertexAttrib2dNV + GLuint index + GLdouble x + GLdouble y + + + + + void glVertexAttrib2dv + GLuint index + const GLdouble *v + + + + void glVertexAttrib2dvARB + GLuint index + const GLdouble *v + + + + + void glVertexAttrib2dvNV + GLuint index + const GLdouble *v + + + + + void glVertexAttrib2f + GLuint index + GLfloat x + GLfloat y + + + + void glVertexAttrib2fARB + GLuint index + GLfloat x + GLfloat y + + + + + void glVertexAttrib2fNV + GLuint index + GLfloat x + GLfloat y + + + + + void glVertexAttrib2fv + GLuint index + const GLfloat *v + + + + void glVertexAttrib2fvARB + GLuint index + const GLfloat *v + + + + + void glVertexAttrib2fvNV + GLuint index + const GLfloat *v + + + + + void glVertexAttrib2hNV + GLuint index + GLhalfNV x + GLhalfNV y + + + + void glVertexAttrib2hvNV + GLuint index + const GLhalfNV *v + + + + void glVertexAttrib2s + GLuint index + GLshort x + GLshort y + + + + void glVertexAttrib2sARB + GLuint index + GLshort x + GLshort y + + + + + void glVertexAttrib2sNV + GLuint index + GLshort x + GLshort y + + + + + void glVertexAttrib2sv + GLuint index + const GLshort *v + + + + void glVertexAttrib2svARB + GLuint index + const GLshort *v + + + + + void glVertexAttrib2svNV + GLuint index + const GLshort *v + + + + + void glVertexAttrib3d + GLuint index + GLdouble x + GLdouble y + GLdouble z + + + + void glVertexAttrib3dARB + GLuint index + GLdouble x + GLdouble y + GLdouble z + + + + + void glVertexAttrib3dNV + GLuint index + GLdouble x + GLdouble y + GLdouble z + + + + + void glVertexAttrib3dv + GLuint index + const GLdouble *v + + + + void glVertexAttrib3dvARB + GLuint index + const GLdouble *v + + + + + void glVertexAttrib3dvNV + GLuint index + const GLdouble *v + + + + + void glVertexAttrib3f + GLuint index + GLfloat x + GLfloat y + GLfloat z + + + + void glVertexAttrib3fARB + GLuint index + GLfloat x + GLfloat y + GLfloat z + + + + + void glVertexAttrib3fNV + GLuint index + GLfloat x + GLfloat y + GLfloat z + + + + + void glVertexAttrib3fv + GLuint index + const GLfloat *v + + + + void glVertexAttrib3fvARB + GLuint index + const GLfloat *v + + + + + void glVertexAttrib3fvNV + GLuint index + const GLfloat *v + + + + + void glVertexAttrib3hNV + GLuint index + GLhalfNV x + GLhalfNV y + GLhalfNV z + + + + void glVertexAttrib3hvNV + GLuint index + const GLhalfNV *v + + + + void glVertexAttrib3s + GLuint index + GLshort x + GLshort y + GLshort z + + + + void glVertexAttrib3sARB + GLuint index + GLshort x + GLshort y + GLshort z + + + + + void glVertexAttrib3sNV + GLuint index + GLshort x + GLshort y + GLshort z + + + + + void glVertexAttrib3sv + GLuint index + const GLshort *v + + + + void glVertexAttrib3svARB + GLuint index + const GLshort *v + + + + + void glVertexAttrib3svNV + GLuint index + const GLshort *v + + + + + void glVertexAttrib4Nbv + GLuint index + const GLbyte *v + + + void glVertexAttrib4NbvARB + GLuint index + const GLbyte *v + + + + void glVertexAttrib4Niv + GLuint index + const GLint *v + + + void glVertexAttrib4NivARB + GLuint index + const GLint *v + + + + void glVertexAttrib4Nsv + GLuint index + const GLshort *v + + + void glVertexAttrib4NsvARB + GLuint index + const GLshort *v + + + + void glVertexAttrib4Nub + GLuint index + GLubyte x + GLubyte y + GLubyte z + GLubyte w + + + void glVertexAttrib4NubARB + GLuint index + GLubyte x + GLubyte y + GLubyte z + GLubyte w + + + + void glVertexAttrib4Nubv + GLuint index + const GLubyte *v + + + + void glVertexAttrib4NubvARB + GLuint index + const GLubyte *v + + + + + void glVertexAttrib4Nuiv + GLuint index + const GLuint *v + + + void glVertexAttrib4NuivARB + GLuint index + const GLuint *v + + + + void glVertexAttrib4Nusv + GLuint index + const GLushort *v + + + void glVertexAttrib4NusvARB + GLuint index + const GLushort *v + + + + void glVertexAttrib4bv + GLuint index + const GLbyte *v + + + void glVertexAttrib4bvARB + GLuint index + const GLbyte *v + + + + void glVertexAttrib4d + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glVertexAttrib4dARB + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + + void glVertexAttrib4dNV + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + + void glVertexAttrib4dv + GLuint index + const GLdouble *v + + + + void glVertexAttrib4dvARB + GLuint index + const GLdouble *v + + + + + void glVertexAttrib4dvNV + GLuint index + const GLdouble *v + + + + + void glVertexAttrib4f + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glVertexAttrib4fARB + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + + void glVertexAttrib4fNV + GLuint index + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + + void glVertexAttrib4fv + GLuint index + const GLfloat *v + + + + void glVertexAttrib4fvARB + GLuint index + const GLfloat *v + + + + + void glVertexAttrib4fvNV + GLuint index + const GLfloat *v + + + + + void glVertexAttrib4hNV + GLuint index + GLhalfNV x + GLhalfNV y + GLhalfNV z + GLhalfNV w + + + + void glVertexAttrib4hvNV + GLuint index + const GLhalfNV *v + + + + void glVertexAttrib4iv + GLuint index + const GLint *v + + + void glVertexAttrib4ivARB + GLuint index + const GLint *v + + + + void glVertexAttrib4s + GLuint index + GLshort x + GLshort y + GLshort z + GLshort w + + + + void glVertexAttrib4sARB + GLuint index + GLshort x + GLshort y + GLshort z + GLshort w + + + + + void glVertexAttrib4sNV + GLuint index + GLshort x + GLshort y + GLshort z + GLshort w + + + + + void glVertexAttrib4sv + GLuint index + const GLshort *v + + + + void glVertexAttrib4svARB + GLuint index + const GLshort *v + + + + + void glVertexAttrib4svNV + GLuint index + const GLshort *v + + + + + void glVertexAttrib4ubNV + GLuint index + GLubyte x + GLubyte y + GLubyte z + GLubyte w + + + + + void glVertexAttrib4ubv + GLuint index + const GLubyte *v + + + void glVertexAttrib4ubvARB + GLuint index + const GLubyte *v + + + + void glVertexAttrib4ubvNV + GLuint index + const GLubyte *v + + + + + void glVertexAttrib4uiv + GLuint index + const GLuint *v + + + void glVertexAttrib4uivARB + GLuint index + const GLuint *v + + + + void glVertexAttrib4usv + GLuint index + const GLushort *v + + + void glVertexAttrib4usvARB + GLuint index + const GLushort *v + + + + void glVertexAttribArrayObjectATI + GLuint index + GLint size + GLenum type + GLboolean normalized + GLsizei stride + GLuint buffer + GLuint offset + + + void glVertexAttribBinding + GLuint attribindex + GLuint bindingindex + + + void glVertexAttribDivisor + GLuint index + GLuint divisor + + + void glVertexAttribDivisorANGLE + GLuint index + GLuint divisor + + + + void glVertexAttribDivisorARB + GLuint index + GLuint divisor + + + + void glVertexAttribDivisorEXT + GLuint index + GLuint divisor + + + + void glVertexAttribDivisorNV + GLuint index + GLuint divisor + + + + void glVertexAttribFormat + GLuint attribindex + GLint size + GLenum type + GLboolean normalized + GLuint relativeoffset + + + void glVertexAttribFormatNV + GLuint index + GLint size + GLenum type + GLboolean normalized + GLsizei stride + + + void glVertexAttribI1i + GLuint index + GLint x + + + + void glVertexAttribI1iEXT + GLuint index + GLint x + + + + + void glVertexAttribI1iv + GLuint index + const GLint *v + + + void glVertexAttribI1ivEXT + GLuint index + const GLint *v + + + + void glVertexAttribI1ui + GLuint index + GLuint x + + + + void glVertexAttribI1uiEXT + GLuint index + GLuint x + + + + + void glVertexAttribI1uiv + GLuint index + const GLuint *v + + + void glVertexAttribI1uivEXT + GLuint index + const GLuint *v + + + + void glVertexAttribI2i + GLuint index + GLint x + GLint y + + + + void glVertexAttribI2iEXT + GLuint index + GLint x + GLint y + + + + + void glVertexAttribI2iv + GLuint index + const GLint *v + + + void glVertexAttribI2ivEXT + GLuint index + const GLint *v + + + + void glVertexAttribI2ui + GLuint index + GLuint x + GLuint y + + + + void glVertexAttribI2uiEXT + GLuint index + GLuint x + GLuint y + + + + + void glVertexAttribI2uiv + GLuint index + const GLuint *v + + + void glVertexAttribI2uivEXT + GLuint index + const GLuint *v + + + + void glVertexAttribI3i + GLuint index + GLint x + GLint y + GLint z + + + + void glVertexAttribI3iEXT + GLuint index + GLint x + GLint y + GLint z + + + + + void glVertexAttribI3iv + GLuint index + const GLint *v + + + void glVertexAttribI3ivEXT + GLuint index + const GLint *v + + + + void glVertexAttribI3ui + GLuint index + GLuint x + GLuint y + GLuint z + + + + void glVertexAttribI3uiEXT + GLuint index + GLuint x + GLuint y + GLuint z + + + + + void glVertexAttribI3uiv + GLuint index + const GLuint *v + + + void glVertexAttribI3uivEXT + GLuint index + const GLuint *v + + + + void glVertexAttribI4bv + GLuint index + const GLbyte *v + + + void glVertexAttribI4bvEXT + GLuint index + const GLbyte *v + + + + void glVertexAttribI4i + GLuint index + GLint x + GLint y + GLint z + GLint w + + + + void glVertexAttribI4iEXT + GLuint index + GLint x + GLint y + GLint z + GLint w + + + + + void glVertexAttribI4iv + GLuint index + const GLint *v + + + void glVertexAttribI4ivEXT + GLuint index + const GLint *v + + + + void glVertexAttribI4sv + GLuint index + const GLshort *v + + + void glVertexAttribI4svEXT + GLuint index + const GLshort *v + + + + void glVertexAttribI4ubv + GLuint index + const GLubyte *v + + + void glVertexAttribI4ubvEXT + GLuint index + const GLubyte *v + + + + void glVertexAttribI4ui + GLuint index + GLuint x + GLuint y + GLuint z + GLuint w + + + + void glVertexAttribI4uiEXT + GLuint index + GLuint x + GLuint y + GLuint z + GLuint w + + + + + void glVertexAttribI4uiv + GLuint index + const GLuint *v + + + void glVertexAttribI4uivEXT + GLuint index + const GLuint *v + + + + void glVertexAttribI4usv + GLuint index + const GLushort *v + + + void glVertexAttribI4usvEXT + GLuint index + const GLushort *v + + + + void glVertexAttribIFormat + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexAttribIFormatNV + GLuint index + GLint size + GLenum type + GLsizei stride + + + void glVertexAttribIPointer + GLuint index + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glVertexAttribIPointerEXT + GLuint index + GLint size + GLenum type + GLsizei stride + const void *pointer + + + + void glVertexAttribL1d + GLuint index + GLdouble x + + + void glVertexAttribL1dEXT + GLuint index + GLdouble x + + + + void glVertexAttribL1dv + GLuint index + const GLdouble *v + + + void glVertexAttribL1dvEXT + GLuint index + const GLdouble *v + + + + void glVertexAttribL1i64NV + GLuint index + GLint64EXT x + + + void glVertexAttribL1i64vNV + GLuint index + const GLint64EXT *v + + + void glVertexAttribL1ui64ARB + GLuint index + GLuint64EXT x + + + void glVertexAttribL1ui64NV + GLuint index + GLuint64EXT x + + + void glVertexAttribL1ui64vARB + GLuint index + const GLuint64EXT *v + + + void glVertexAttribL1ui64vNV + GLuint index + const GLuint64EXT *v + + + void glVertexAttribL2d + GLuint index + GLdouble x + GLdouble y + + + void glVertexAttribL2dEXT + GLuint index + GLdouble x + GLdouble y + + + + void glVertexAttribL2dv + GLuint index + const GLdouble *v + + + void glVertexAttribL2dvEXT + GLuint index + const GLdouble *v + + + + void glVertexAttribL2i64NV + GLuint index + GLint64EXT x + GLint64EXT y + + + void glVertexAttribL2i64vNV + GLuint index + const GLint64EXT *v + + + void glVertexAttribL2ui64NV + GLuint index + GLuint64EXT x + GLuint64EXT y + + + void glVertexAttribL2ui64vNV + GLuint index + const GLuint64EXT *v + + + void glVertexAttribL3d + GLuint index + GLdouble x + GLdouble y + GLdouble z + + + void glVertexAttribL3dEXT + GLuint index + GLdouble x + GLdouble y + GLdouble z + + + + void glVertexAttribL3dv + GLuint index + const GLdouble *v + + + void glVertexAttribL3dvEXT + GLuint index + const GLdouble *v + + + + void glVertexAttribL3i64NV + GLuint index + GLint64EXT x + GLint64EXT y + GLint64EXT z + + + void glVertexAttribL3i64vNV + GLuint index + const GLint64EXT *v + + + void glVertexAttribL3ui64NV + GLuint index + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + + + void glVertexAttribL3ui64vNV + GLuint index + const GLuint64EXT *v + + + void glVertexAttribL4d + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + void glVertexAttribL4dEXT + GLuint index + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glVertexAttribL4dv + GLuint index + const GLdouble *v + + + void glVertexAttribL4dvEXT + GLuint index + const GLdouble *v + + + + void glVertexAttribL4i64NV + GLuint index + GLint64EXT x + GLint64EXT y + GLint64EXT z + GLint64EXT w + + + void glVertexAttribL4i64vNV + GLuint index + const GLint64EXT *v + + + void glVertexAttribL4ui64NV + GLuint index + GLuint64EXT x + GLuint64EXT y + GLuint64EXT z + GLuint64EXT w + + + void glVertexAttribL4ui64vNV + GLuint index + const GLuint64EXT *v + + + void glVertexAttribLFormat + GLuint attribindex + GLint size + GLenum type + GLuint relativeoffset + + + void glVertexAttribLFormatNV + GLuint index + GLint size + GLenum type + GLsizei stride + + + void glVertexAttribLPointer + GLuint index + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glVertexAttribLPointerEXT + GLuint index + GLint size + GLenum type + GLsizei stride + const void *pointer + + + + void glVertexAttribP1ui + GLuint index + GLenum type + GLboolean normalized + GLuint value + + + void glVertexAttribP1uiv + GLuint index + GLenum type + GLboolean normalized + const GLuint *value + + + void glVertexAttribP2ui + GLuint index + GLenum type + GLboolean normalized + GLuint value + + + void glVertexAttribP2uiv + GLuint index + GLenum type + GLboolean normalized + const GLuint *value + + + void glVertexAttribP3ui + GLuint index + GLenum type + GLboolean normalized + GLuint value + + + void glVertexAttribP3uiv + GLuint index + GLenum type + GLboolean normalized + const GLuint *value + + + void glVertexAttribP4ui + GLuint index + GLenum type + GLboolean normalized + GLuint value + + + void glVertexAttribP4uiv + GLuint index + GLenum type + GLboolean normalized + const GLuint *value + + + void glVertexAttribParameteriAMD + GLuint index + GLenum pname + GLint param + + + void glVertexAttribPointer + GLuint index + GLint size + GLenum type + GLboolean normalized + GLsizei stride + const void *pointer + + + void glVertexAttribPointerARB + GLuint index + GLint size + GLenum type + GLboolean normalized + GLsizei stride + const void *pointer + + + + void glVertexAttribPointerNV + GLuint index + GLint fsize + GLenum type + GLsizei stride + const void *pointer + + + void glVertexAttribs1dvNV + GLuint index + GLsizei count + const GLdouble *v + + + + void glVertexAttribs1fvNV + GLuint index + GLsizei count + const GLfloat *v + + + + void glVertexAttribs1hvNV + GLuint index + GLsizei n + const GLhalfNV *v + + + + void glVertexAttribs1svNV + GLuint index + GLsizei count + const GLshort *v + + + + void glVertexAttribs2dvNV + GLuint index + GLsizei count + const GLdouble *v + + + + void glVertexAttribs2fvNV + GLuint index + GLsizei count + const GLfloat *v + + + + void glVertexAttribs2hvNV + GLuint index + GLsizei n + const GLhalfNV *v + + + + void glVertexAttribs2svNV + GLuint index + GLsizei count + const GLshort *v + + + + void glVertexAttribs3dvNV + GLuint index + GLsizei count + const GLdouble *v + + + + void glVertexAttribs3fvNV + GLuint index + GLsizei count + const GLfloat *v + + + + void glVertexAttribs3hvNV + GLuint index + GLsizei n + const GLhalfNV *v + + + + void glVertexAttribs3svNV + GLuint index + GLsizei count + const GLshort *v + + + + void glVertexAttribs4dvNV + GLuint index + GLsizei count + const GLdouble *v + + + + void glVertexAttribs4fvNV + GLuint index + GLsizei count + const GLfloat *v + + + + void glVertexAttribs4hvNV + GLuint index + GLsizei n + const GLhalfNV *v + + + + void glVertexAttribs4svNV + GLuint index + GLsizei count + const GLshort *v + + + + void glVertexAttribs4ubvNV + GLuint index + GLsizei count + const GLubyte *v + + + + void glVertexBindingDivisor + GLuint bindingindex + GLuint divisor + + + void glVertexBlendARB + GLint count + + + + void glVertexBlendEnvfATI + GLenum pname + GLfloat param + + + void glVertexBlendEnviATI + GLenum pname + GLint param + + + void glVertexFormatNV + GLint size + GLenum type + GLsizei stride + + + void glVertexP2ui + GLenum type + GLuint value + + + void glVertexP2uiv + GLenum type + const GLuint *value + + + void glVertexP3ui + GLenum type + GLuint value + + + void glVertexP3uiv + GLenum type + const GLuint *value + + + void glVertexP4ui + GLenum type + GLuint value + + + void glVertexP4uiv + GLenum type + const GLuint *value + + + void glVertexPointer + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glVertexPointerEXT + GLint size + GLenum type + GLsizei stride + GLsizei count + const void *pointer + + + void glVertexPointerListIBM + GLint size + GLenum type + GLint stride + const void **pointer + GLint ptrstride + + + void glVertexPointervINTEL + GLint size + GLenum type + const void **pointer + + + void glVertexStream1dATI + GLenum stream + GLdouble x + + + void glVertexStream1dvATI + GLenum stream + const GLdouble *coords + + + void glVertexStream1fATI + GLenum stream + GLfloat x + + + void glVertexStream1fvATI + GLenum stream + const GLfloat *coords + + + void glVertexStream1iATI + GLenum stream + GLint x + + + void glVertexStream1ivATI + GLenum stream + const GLint *coords + + + void glVertexStream1sATI + GLenum stream + GLshort x + + + void glVertexStream1svATI + GLenum stream + const GLshort *coords + + + void glVertexStream2dATI + GLenum stream + GLdouble x + GLdouble y + + + void glVertexStream2dvATI + GLenum stream + const GLdouble *coords + + + void glVertexStream2fATI + GLenum stream + GLfloat x + GLfloat y + + + void glVertexStream2fvATI + GLenum stream + const GLfloat *coords + + + void glVertexStream2iATI + GLenum stream + GLint x + GLint y + + + void glVertexStream2ivATI + GLenum stream + const GLint *coords + + + void glVertexStream2sATI + GLenum stream + GLshort x + GLshort y + + + void glVertexStream2svATI + GLenum stream + const GLshort *coords + + + void glVertexStream3dATI + GLenum stream + GLdouble x + GLdouble y + GLdouble z + + + void glVertexStream3dvATI + GLenum stream + const GLdouble *coords + + + void glVertexStream3fATI + GLenum stream + GLfloat x + GLfloat y + GLfloat z + + + void glVertexStream3fvATI + GLenum stream + const GLfloat *coords + + + void glVertexStream3iATI + GLenum stream + GLint x + GLint y + GLint z + + + void glVertexStream3ivATI + GLenum stream + const GLint *coords + + + void glVertexStream3sATI + GLenum stream + GLshort x + GLshort y + GLshort z + + + void glVertexStream3svATI + GLenum stream + const GLshort *coords + + + void glVertexStream4dATI + GLenum stream + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + void glVertexStream4dvATI + GLenum stream + const GLdouble *coords + + + void glVertexStream4fATI + GLenum stream + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + void glVertexStream4fvATI + GLenum stream + const GLfloat *coords + + + void glVertexStream4iATI + GLenum stream + GLint x + GLint y + GLint z + GLint w + + + void glVertexStream4ivATI + GLenum stream + const GLint *coords + + + void glVertexStream4sATI + GLenum stream + GLshort x + GLshort y + GLshort z + GLshort w + + + void glVertexStream4svATI + GLenum stream + const GLshort *coords + + + void glVertexWeightPointerEXT + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glVertexWeightfEXT + GLfloat weight + + + + void glVertexWeightfvEXT + const GLfloat *weight + + + + void glVertexWeighthNV + GLhalfNV weight + + + + void glVertexWeighthvNV + const GLhalfNV *weight + + + + GLenum glVideoCaptureNV + GLuint video_capture_slot + GLuint *sequence_num + GLuint64EXT *capture_time + + + void glVideoCaptureStreamParameterdvNV + GLuint video_capture_slot + GLuint stream + GLenum pname + const GLdouble *params + + + void glVideoCaptureStreamParameterfvNV + GLuint video_capture_slot + GLuint stream + GLenum pname + const GLfloat *params + + + void glVideoCaptureStreamParameterivNV + GLuint video_capture_slot + GLuint stream + GLenum pname + const GLint *params + + + void glViewport + GLint x + GLint y + GLsizei width + GLsizei height + + + + void glViewportArrayv + GLuint first + GLsizei count + const GLfloat *v + + + void glViewportArrayvNV + GLuint first + GLsizei count + const GLfloat *v + + + + void glViewportArrayvOES + GLuint first + GLsizei count + const GLfloat *v + + + + void glViewportIndexedf + GLuint index + GLfloat x + GLfloat y + GLfloat w + GLfloat h + + + void glViewportIndexedfOES + GLuint index + GLfloat x + GLfloat y + GLfloat w + GLfloat h + + + + void glViewportIndexedfNV + GLuint index + GLfloat x + GLfloat y + GLfloat w + GLfloat h + + + + void glViewportIndexedfv + GLuint index + const GLfloat *v + + + void glViewportIndexedfvOES + GLuint index + const GLfloat *v + + + + void glViewportIndexedfvNV + GLuint index + const GLfloat *v + + + + void glViewportPositionWScaleNV + GLuint index + GLfloat xcoeff + GLfloat ycoeff + + + void glViewportSwizzleNV + GLuint index + GLenum swizzlex + GLenum swizzley + GLenum swizzlez + GLenum swizzlew + + + void glWaitSemaphoreEXT + GLuint semaphore + GLuint numBufferBarriers + const GLuint *buffers + GLuint numTextureBarriers + const GLuint *textures + const GLenum *srcLayouts + + + void glWaitSemaphoreui64NVX + GLuint waitGpu + GLsizei fenceObjectCount + const GLuint *semaphoreArray + const GLuint64 *fenceValueArray + + + void glWaitSync + GLsync sync + GLbitfield flags + GLuint64 timeout + + + void glWaitSyncAPPLE + GLsync sync + GLbitfield flags + GLuint64 timeout + + + + void glWeightPathsNV + GLuint resultPath + GLsizei numPaths + const GLuint *paths + const GLfloat *weights + + + void glWeightPointerARB + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glWeightPointerOES + GLint size + GLenum type + GLsizei stride + const void *pointer + + + void glWeightbvARB + GLint size + const GLbyte *weights + + + + void glWeightdvARB + GLint size + const GLdouble *weights + + + + void glWeightfvARB + GLint size + const GLfloat *weights + + + + void glWeightivARB + GLint size + const GLint *weights + + + + void glWeightsvARB + GLint size + const GLshort *weights + + + + void glWeightubvARB + GLint size + const GLubyte *weights + + + + void glWeightuivARB + GLint size + const GLuint *weights + + + + void glWeightusvARB + GLint size + const GLushort *weights + + + + void glWindowPos2d + GLdouble x + GLdouble y + + + + void glWindowPos2dARB + GLdouble x + GLdouble y + + + + + void glWindowPos2dMESA + GLdouble x + GLdouble y + + + + + void glWindowPos2dv + const GLdouble *v + + + + void glWindowPos2dvARB + const GLdouble *v + + + + + void glWindowPos2dvMESA + const GLdouble *v + + + + void glWindowPos2f + GLfloat x + GLfloat y + + + + void glWindowPos2fARB + GLfloat x + GLfloat y + + + + + void glWindowPos2fMESA + GLfloat x + GLfloat y + + + + + void glWindowPos2fv + const GLfloat *v + + + + void glWindowPos2fvARB + const GLfloat *v + + + + + void glWindowPos2fvMESA + const GLfloat *v + + + + void glWindowPos2i + GLint x + GLint y + + + + void glWindowPos2iARB + GLint x + GLint y + + + + + void glWindowPos2iMESA + GLint x + GLint y + + + + + void glWindowPos2iv + const GLint *v + + + + void glWindowPos2ivARB + const GLint *v + + + + + void glWindowPos2ivMESA + const GLint *v + + + + void glWindowPos2s + GLshort x + GLshort y + + + + void glWindowPos2sARB + GLshort x + GLshort y + + + + + void glWindowPos2sMESA + GLshort x + GLshort y + + + + + void glWindowPos2sv + const GLshort *v + + + + void glWindowPos2svARB + const GLshort *v + + + + + void glWindowPos2svMESA + const GLshort *v + + + + void glWindowPos3d + GLdouble x + GLdouble y + GLdouble z + + + + void glWindowPos3dARB + GLdouble x + GLdouble y + GLdouble z + + + + + void glWindowPos3dMESA + GLdouble x + GLdouble y + GLdouble z + + + + + void glWindowPos3dv + const GLdouble *v + + + + void glWindowPos3dvARB + const GLdouble *v + + + + + void glWindowPos3dvMESA + const GLdouble *v + + + + void glWindowPos3f + GLfloat x + GLfloat y + GLfloat z + + + + void glWindowPos3fARB + GLfloat x + GLfloat y + GLfloat z + + + + + void glWindowPos3fMESA + GLfloat x + GLfloat y + GLfloat z + + + + + void glWindowPos3fv + const GLfloat *v + + + + void glWindowPos3fvARB + const GLfloat *v + + + + + void glWindowPos3fvMESA + const GLfloat *v + + + + void glWindowPos3i + GLint x + GLint y + GLint z + + + + void glWindowPos3iARB + GLint x + GLint y + GLint z + + + + + void glWindowPos3iMESA + GLint x + GLint y + GLint z + + + + + void glWindowPos3iv + const GLint *v + + + + void glWindowPos3ivARB + const GLint *v + + + + + void glWindowPos3ivMESA + const GLint *v + + + + void glWindowPos3s + GLshort x + GLshort y + GLshort z + + + + void glWindowPos3sARB + GLshort x + GLshort y + GLshort z + + + + + void glWindowPos3sMESA + GLshort x + GLshort y + GLshort z + + + + + void glWindowPos3sv + const GLshort *v + + + + void glWindowPos3svARB + const GLshort *v + + + + + void glWindowPos3svMESA + const GLshort *v + + + + void glWindowPos4dMESA + GLdouble x + GLdouble y + GLdouble z + GLdouble w + + + + void glWindowPos4dvMESA + const GLdouble *v + + + void glWindowPos4fMESA + GLfloat x + GLfloat y + GLfloat z + GLfloat w + + + + void glWindowPos4fvMESA + const GLfloat *v + + + void glWindowPos4iMESA + GLint x + GLint y + GLint z + GLint w + + + + void glWindowPos4ivMESA + const GLint *v + + + void glWindowPos4sMESA + GLshort x + GLshort y + GLshort z + GLshort w + + + + void glWindowPos4svMESA + const GLshort *v + + + void glWindowRectanglesEXT + GLenum mode + GLsizei count + const GLint *box + + + void glWriteMaskEXT + GLuint res + GLuint in + GLenum outX + GLenum outY + GLenum outZ + GLenum outW + + + void glDrawVkImageNV + GLuint64 vkImage + GLuint sampler + GLfloat x0 + GLfloat y0 + GLfloat x1 + GLfloat y1 + GLfloat z + GLfloat s0 + GLfloat t0 + GLfloat s1 + GLfloat t1 + + + GLVULKANPROCNV glGetVkProcAddrNV + const GLchar *name + + + void glWaitVkSemaphoreNV + GLuint64 vkSemaphore + + + void glSignalVkSemaphoreNV + GLuint64 vkSemaphore + + + void glSignalVkFenceNV + GLuint64 vkFence + + + void glFramebufferParameteriMESA + GLenum target + GLenum pname + GLint param + + + void glGetFramebufferParameterivMESA + GLenum target + GLenum pname + GLint *params + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StgSharp.GenerateGL/xml/glx.xml b/StgSharp.GenerateGL/xml/glx.xml new file mode 100644 index 00000000..5cb02a80 --- /dev/null +++ b/StgSharp.GenerateGL/xml/glx.xml @@ -0,0 +1,2208 @@ + + + +Copyright 2013-2025 The Khronos Group Inc. +SPDX-License-Identifier: Apache-2.0 + +This file, glx.xml, is the GLX API Registry. The canonical version of the +registry, together with documentation, schema, and Python generator scripts +used to generate C header files for GLX, can always be found in the Khronos +Registry at https://github.com/KhronosGroup/OpenGL-Registry + + + + + + = 199901L +#include +#elif defined(__sun__) || defined(__digital__) +#include +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include +#elif defined(__SCO__) || defined(__USLC__) +#include +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && defined(__GNUC__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include +#endif +#endif]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typedef XID GLXFBConfigID; + typedef struct __GLXFBConfigRec *GLXFBConfig; + typedef XID GLXContextID; + typedef struct __GLXcontextRec *GLXContext; + typedef XID GLXPixmap; + typedef XID GLXDrawable; + typedef XID GLXWindow; + typedef XID GLXPbuffer; + typedef void ( *__GLXextFuncPtr)(void); + typedef XID GLXVideoCaptureDeviceNV; + typedef unsigned int GLXVideoDeviceNV; + typedef XID GLXVideoSourceSGIX; + typedef XID GLXFBConfigIDSGIX; + typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; + typedef XID GLXPbufferSGIX; + + typedef struct { + int event_type; /* GLX_DAMAGED or GLX_SAVED */ + int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* XID of Drawable */ + unsigned int buffer_mask; /* mask indicating which buffers are affected */ + unsigned int aux_buffer; /* which aux buffer was affected */ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXPbufferClobberEvent; + + typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came from a SendEvent request */ + Display *display; /* Display the event was read from */ + GLXDrawable drawable; /* drawable on which event was requested in event mask */ + int event_type; + int64_t ust; + int64_t msc; + int64_t sbc; +} GLXBufferSwapComplete; + + typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + GLXBufferSwapComplete glxbufferswapcomplete; + long pad[24]; +} GLXEvent; + + typedef struct { + int type; + unsigned long serial; + Bool send_event; + Display *display; + int extension; + int evtype; + GLXDrawable window; + Bool stereo_tree; +} GLXStereoNotifyEventEXT; + + typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* i.d. of Drawable */ + int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ + int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ + unsigned int mask; /* mask indicating which buffers are affected*/ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXBufferClobberEventSGIX; + + typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int networkId; +} GLXHyperpipeNetworkSGIX; + + typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; + + typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int srcXOrigin, srcYOrigin, srcWidth, srcHeight; + int destXOrigin, destYOrigin, destWidth, destHeight; +} GLXPipeRect; + + typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int XOrigin, YOrigin, maxHeight, maxWidth; +} GLXPipeRectLimits; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bool glXAssociateDMPbufferSGIX + Display *dpy + GLXPbufferSGIX pbuffer + DMparams *params + DMbuffer dmbuffer + + + int glXBindChannelToWindowSGIX + Display *display + int screen + int channel + Window window + + + int glXBindHyperpipeSGIX + Display *dpy + int hpId + + + Bool glXBindSwapBarrierNV + Display *dpy + GLuint group + GLuint barrier + + + void glXBindSwapBarrierSGIX + Display *dpy + GLXDrawable drawable + int barrier + + + void glXBindTexImageEXT + Display *dpy + GLXDrawable drawable + int buffer + const int *attrib_list + + + int glXBindVideoCaptureDeviceNV + Display *dpy + unsigned int video_capture_slot + GLXVideoCaptureDeviceNV device + + + int glXBindVideoDeviceNV + Display *dpy + unsigned int video_slot + unsigned int video_device + const int *attrib_list + + + int glXBindVideoImageNV + Display *dpy + GLXVideoDeviceNV VideoDevice + GLXPbuffer pbuf + int iVideoBuffer + + + void glXBlitContextFramebufferAMD + GLXContext dstCtx + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + int glXChannelRectSGIX + Display *display + int screen + int channel + int x + int y + int w + int h + + + int glXChannelRectSyncSGIX + Display *display + int screen + int channel + GLenum synctype + + + GLXFBConfig *glXChooseFBConfig + Display *dpy + int screen + const int *attrib_list + int *nelements + + + GLXFBConfigSGIX *glXChooseFBConfigSGIX + Display *dpy + int screen + int *attrib_list + int *nelements + + + XVisualInfo *glXChooseVisual + Display *dpy + int screen + int *attribList + + + void glXCopyBufferSubDataNV + Display *dpy + GLXContext readCtx + GLXContext writeCtx + GLenum readTarget + GLenum writeTarget + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glXNamedCopyBufferSubDataNV + Display *dpy + GLXContext readCtx + GLXContext writeCtx + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glXCopyContext + Display *dpy + GLXContext src + GLXContext dst + unsigned long mask + + + void glXCopyImageSubDataNV + Display *dpy + GLXContext srcCtx + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLXContext dstCtx + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei width + GLsizei height + GLsizei depth + + + void glXCopySubBufferMESA + Display *dpy + GLXDrawable drawable + int x + int y + int width + int height + + + GLXContext glXCreateAssociatedContextAMD + unsigned int id + GLXContext share_list + + + GLXContext glXCreateAssociatedContextAttribsAMD + unsigned int id + GLXContext share_context + const int *attribList + + + GLXContext glXCreateContextAttribsARB + Display *dpy + GLXFBConfig config + GLXContext share_context + Bool direct + const int *attrib_list + + + GLXContext glXCreateContext + Display *dpy + XVisualInfo *vis + GLXContext shareList + Bool direct + + + GLXContext glXCreateContextWithConfigSGIX + Display *dpy + GLXFBConfigSGIX config + int render_type + GLXContext share_list + Bool direct + + + GLXPbufferSGIX glXCreateGLXPbufferSGIX + Display *dpy + GLXFBConfigSGIX config + unsigned int width + unsigned int height + int *attrib_list + + + GLXPixmap glXCreateGLXPixmap + Display *dpy + XVisualInfo *visual + Pixmap pixmap + + + GLXPixmap glXCreateGLXPixmapMESA + Display *dpy + XVisualInfo *visual + Pixmap pixmap + Colormap cmap + + + GLXPixmap glXCreateGLXPixmapWithConfigSGIX + Display *dpy + GLXFBConfigSGIX config + Pixmap pixmap + + + GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX + Display *display + int screen + VLServer server + VLPath path + int nodeClass + VLNode drainNode + + + GLXContext glXCreateNewContext + Display *dpy + GLXFBConfig config + int render_type + GLXContext share_list + Bool direct + + + GLXPbuffer glXCreatePbuffer + Display *dpy + GLXFBConfig config + const int *attrib_list + + + GLXPixmap glXCreatePixmap + Display *dpy + GLXFBConfig config + Pixmap pixmap + const int *attrib_list + + + GLXWindow glXCreateWindow + Display *dpy + GLXFBConfig config + Window win + const int *attrib_list + + + void glXCushionSGI + Display *dpy + Window window + float cushion + + + Bool glXDelayBeforeSwapNV + Display *dpy + GLXDrawable drawable + GLfloat seconds + + + Bool glXDeleteAssociatedContextAMD + GLXContext ctx + + + void glXDestroyContext + Display *dpy + GLXContext ctx + + + void glXDestroyGLXPbufferSGIX + Display *dpy + GLXPbufferSGIX pbuf + + + void glXDestroyGLXPixmap + Display *dpy + GLXPixmap pixmap + + + void glXDestroyGLXVideoSourceSGIX + Display *dpy + GLXVideoSourceSGIX glxvideosource + + + int glXDestroyHyperpipeConfigSGIX + Display *dpy + int hpId + + + void glXDestroyPbuffer + Display *dpy + GLXPbuffer pbuf + + + void glXDestroyPixmap + Display *dpy + GLXPixmap pixmap + + + void glXDestroyWindow + Display *dpy + GLXWindow win + + + GLXVideoCaptureDeviceNV *glXEnumerateVideoCaptureDevicesNV + Display *dpy + int screen + int *nelements + + + unsigned int *glXEnumerateVideoDevicesNV + Display *dpy + int screen + int *nelements + + + void glXFreeContextEXT + Display *dpy + GLXContext context + + + unsigned int glXGetAGPOffsetMESA + const void *pointer + + + const char *glXGetClientString + Display *dpy + int name + + + int glXGetConfig + Display *dpy + XVisualInfo *visual + int attrib + int *value + + + unsigned int glXGetContextGPUIDAMD + GLXContext ctx + + + GLXContextID glXGetContextIDEXT + const GLXContext context + + + GLXContext glXGetCurrentAssociatedContextAMD + + + GLXContext glXGetCurrentContext + + + Display *glXGetCurrentDisplayEXT + + + Display *glXGetCurrentDisplay + + + GLXDrawable glXGetCurrentDrawable + + + GLXDrawable glXGetCurrentReadDrawableSGI + + + GLXDrawable glXGetCurrentReadDrawable + + + int glXGetFBConfigAttrib + Display *dpy + GLXFBConfig config + int attribute + int *value + + + int glXGetFBConfigAttribSGIX + Display *dpy + GLXFBConfigSGIX config + int attribute + int *value + + + GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX + Display *dpy + XVisualInfo *vis + + + GLXFBConfig *glXGetFBConfigs + Display *dpy + int screen + int *nelements + + + unsigned int glXGetGPUIDsAMD + unsigned int maxCount + unsigned int *ids + + + int glXGetGPUInfoAMD + unsigned int id + int property + GLenum dataType + unsigned int size + void *data + + + Bool glXGetMscRateOML + Display *dpy + GLXDrawable drawable + int32_t *numerator + int32_t *denominator + + + __GLXextFuncPtr glXGetProcAddressARB + const GLubyte *procName + + + __GLXextFuncPtr glXGetProcAddress + const GLubyte *procName + + + void glXGetSelectedEvent + Display *dpy + GLXDrawable draw + unsigned long *event_mask + + + void glXGetSelectedEventSGIX + Display *dpy + GLXDrawable drawable + unsigned long *mask + + + int glXGetSwapIntervalMESA + + + Bool glXGetSyncValuesOML + Display *dpy + GLXDrawable drawable + int64_t *ust + int64_t *msc + int64_t *sbc + + + Status glXGetTransparentIndexSUN + Display *dpy + Window overlay + Window underlay + unsigned long *pTransparentIndex + + + int glXGetVideoDeviceNV + Display *dpy + int screen + int numVideoDevices + GLXVideoDeviceNV *pVideoDevice + + + int glXGetVideoInfoNV + Display *dpy + int screen + GLXVideoDeviceNV VideoDevice + unsigned long *pulCounterOutputPbuffer + unsigned long *pulCounterOutputVideo + + + int glXGetVideoSyncSGI + unsigned int *count + + + XVisualInfo *glXGetVisualFromFBConfig + Display *dpy + GLXFBConfig config + + + XVisualInfo *glXGetVisualFromFBConfigSGIX + Display *dpy + GLXFBConfigSGIX config + + + int glXHyperpipeAttribSGIX + Display *dpy + int timeSlice + int attrib + int size + void *attribList + + + int glXHyperpipeConfigSGIX + Display *dpy + int networkId + int npipes + GLXHyperpipeConfigSGIX *cfg + int *hpId + + + GLXContext glXImportContextEXT + Display *dpy + GLXContextID contextID + + + Bool glXIsDirect + Display *dpy + GLXContext ctx + + + Bool glXJoinSwapGroupNV + Display *dpy + GLXDrawable drawable + GLuint group + + + void glXJoinSwapGroupSGIX + Display *dpy + GLXDrawable drawable + GLXDrawable member + + + void glXLockVideoCaptureDeviceNV + Display *dpy + GLXVideoCaptureDeviceNV device + + + Bool glXMakeAssociatedContextCurrentAMD + GLXContext ctx + + + Bool glXMakeContextCurrent + Display *dpy + GLXDrawable draw + GLXDrawable read + GLXContext ctx + + + Bool glXMakeCurrent + Display *dpy + GLXDrawable drawable + GLXContext ctx + + + Bool glXMakeCurrentReadSGI + Display *dpy + GLXDrawable draw + GLXDrawable read + GLXContext ctx + + + int glXQueryChannelDeltasSGIX + Display *display + int screen + int channel + int *x + int *y + int *w + int *h + + + int glXQueryChannelRectSGIX + Display *display + int screen + int channel + int *dx + int *dy + int *dw + int *dh + + + int glXQueryContext + Display *dpy + GLXContext ctx + int attribute + int *value + + + int glXQueryContextInfoEXT + Display *dpy + GLXContext context + int attribute + int *value + + + Bool glXQueryCurrentRendererIntegerMESA + int attribute + unsigned int *value + + + const char *glXQueryCurrentRendererStringMESA + int attribute + + + void glXQueryDrawable + Display *dpy + GLXDrawable draw + int attribute + unsigned int *value + + + Bool glXQueryExtension + Display *dpy + int *errorb + int *event + + + const char *glXQueryExtensionsString + Display *dpy + int screen + + + Bool glXQueryFrameCountNV + Display *dpy + int screen + GLuint *count + + + void glXQueryGLXPbufferSGIX + Display *dpy + GLXPbufferSGIX pbuf + int attribute + unsigned int *value + + + int glXQueryHyperpipeAttribSGIX + Display *dpy + int timeSlice + int attrib + int size + void *returnAttribList + + + int glXQueryHyperpipeBestAttribSGIX + Display *dpy + int timeSlice + int attrib + int size + void *attribList + void *returnAttribList + + + GLXHyperpipeConfigSGIX *glXQueryHyperpipeConfigSGIX + Display *dpy + int hpId + int *npipes + + + GLXHyperpipeNetworkSGIX *glXQueryHyperpipeNetworkSGIX + Display *dpy + int *npipes + + + Bool glXQueryMaxSwapBarriersSGIX + Display *dpy + int screen + int *max + + + Bool glXQueryMaxSwapGroupsNV + Display *dpy + int screen + GLuint *maxGroups + GLuint *maxBarriers + + + Bool glXQueryRendererIntegerMESA + Display *dpy + int screen + int renderer + int attribute + unsigned int *value + + + const char *glXQueryRendererStringMESA + Display *dpy + int screen + int renderer + int attribute + + + const char *glXQueryServerString + Display *dpy + int screen + int name + + + Bool glXQuerySwapGroupNV + Display *dpy + GLXDrawable drawable + GLuint *group + GLuint *barrier + + + Bool glXQueryVersion + Display *dpy + int *maj + int *min + + + int glXQueryVideoCaptureDeviceNV + Display *dpy + GLXVideoCaptureDeviceNV device + int attribute + int *value + + + Bool glXReleaseBuffersMESA + Display *dpy + GLXDrawable drawable + + + void glXReleaseTexImageEXT + Display *dpy + GLXDrawable drawable + int buffer + + + void glXReleaseVideoCaptureDeviceNV + Display *dpy + GLXVideoCaptureDeviceNV device + + + int glXReleaseVideoDeviceNV + Display *dpy + int screen + GLXVideoDeviceNV VideoDevice + + + int glXReleaseVideoImageNV + Display *dpy + GLXPbuffer pbuf + + + Bool glXResetFrameCountNV + Display *dpy + int screen + + + void glXSelectEvent + Display *dpy + GLXDrawable draw + unsigned long event_mask + + + void glXSelectEventSGIX + Display *dpy + GLXDrawable drawable + unsigned long mask + + + int glXSendPbufferToVideoNV + Display *dpy + GLXPbuffer pbuf + int iBufferType + unsigned long *pulCounterPbuffer + GLboolean bBlock + + + GLboolean glXSet3DfxModeMESA + GLint mode + + + void glXSwapBuffers + Display *dpy + GLXDrawable drawable + + + int64_t glXSwapBuffersMscOML + Display *dpy + GLXDrawable drawable + int64_t target_msc + int64_t divisor + int64_t remainder + + + int glXSwapIntervalMESA + unsigned int interval + + + void glXSwapIntervalEXT + Display *dpy + GLXDrawable drawable + int interval + + + int glXSwapIntervalSGI + int interval + + + void glXUseXFont + Font font + int first + int count + int list + + + Bool glXWaitForMscOML + Display *dpy + GLXDrawable drawable + int64_t target_msc + int64_t divisor + int64_t remainder + int64_t *ust + int64_t *msc + int64_t *sbc + + + Bool glXWaitForSbcOML + Display *dpy + GLXDrawable drawable + int64_t target_sbc + int64_t *ust + int64_t *msc + int64_t *sbc + + + void glXWaitGL + + + int glXWaitVideoSyncSGI + int divisor + int remainder + unsigned int *count + + + void glXWaitX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StgSharp.GenerateGL/xml/glxproto.reserved.txt b/StgSharp.GenerateGL/xml/glxproto.reserved.txt new file mode 100644 index 00000000..a61f0308 --- /dev/null +++ b/StgSharp.GenerateGL/xml/glxproto.reserved.txt @@ -0,0 +1,729 @@ +This is the registry of GLX opcodes, error codes, and event codes. It is +very rarely modified since there is almost no interest in supporting GLX +with modern OpenGL features, and the work of extending the XML schema to +express it is not worthwhile. + +When new GLX protocol is needed for extension specifications, allocate it +here and reflect it in the extension specification document as well as, if +appropriate, glx.xml. + +Reserved opcode ranges assigned to vendors, and in some cases, opcodes +actually assigned within that range are tracked here. Not all opcodes used +by vendors are known. + +GLX Opcodes (8 bits) +==================== + 1-15 GLX 1.0 + 16 Vendor Private + 17 Vendor Private with Reply + 18-20 GLX 1.1 + 21-32 GLX 1.3 + 33 glXSetClientInfoARB (GLX_ARB_create_context) + 34 glXCreateContextAttribsARB (GLX_ARB_create_context) + 35 glXSetClientInfo2ARB (GLX_ARB_create_context) + +GLX Vendor Private / Vendor Private with Reply opcodes (32-bits) + (first 4 bytes past standard X header) +================================================================ + + 0 255 EXT (various - contact SGI) + 256 271 HP (originally Compaq) + (272-511 unused) + 512 575 E&S + (576-1023 unused) + 1024 1269 EXT (various - contact SGI) + 1024 GLX_EXT_import_context + 1270 1275 NV_register_combiners + 1276 1280 NV_fence + 1281 1292 NVIDIA (use TBD; was intended for NV_vertex_program) + 1293 1308 NV_vertex_program / ARB_vertex_program / ARB_fragment_program + 1309 NVIDIA (use TBD) + 1310 1311 NV_fragment_program + 1312 NV_fence + 1313 1318 GLX_NV_video_output + 1319 1320 NV_vertex_program + 1321 1326 NVIDIA (use TBD) + 1327 NV_register_combiners2 + 1328 1329 EXT_timer_query + 1330 1331 GLX_EXT_texture_from_pixmap + 1332 1339 NV_present_video + 1340 NVIDIA (use TBD) + 1341 GLX_NV_delay_before_swap + 1342 1359 NVIDIA (use TBD) + 1360 GLX_NV_copy_image + 1361 1364 NVIDIA (use TBD) + 1365 1368 NV_gpu_program4 + 1369 1386 NVIDIA (use TBD) + 1387 1388 GLX_NV_copy_buffer + 1389 1399 NVIDIA (use TBD) + 1400 1415 NV_video_capture + 1416 GLX_EXT_swap_control + 1417 1420 NVIDIA (use TBD) + 1421 OES_single_precision (Khronos OpenGL ES 1.0) + 1422 1428 EXT_framebuffer_object + (1429-2047 unused) + 2048 2064 SUN + 3000 3999 IBM + 4096 5151 SGI (4106-5151 unused) + 4096 SGIS_detail_texture + 4097 SGIS_sharpen_texture + 4098 4100 SGI_color_table + 4101 SGIS_texture_filter4 + 4102 4104 SGIX_instruments + 4105 SGIX_flush_raster + 5152 5184 Mesa (unknown use) + 8192 8207 HP + 16384 16399 ADD + 65536 66575 SGI (various GLX extensions) + 65536 GLX_SGI_swap_control + 65537 GLX_SGI_make_current_read + 65538 65539 GLX_SGIX_video_source + 65540 65542 GLX_SGIX_fbconfig + 65543 65546 GLX_SGIX_pbuffer + 65547 GLX_SGIX_swap_group + 65548 65549 GLX_SGIX_swap_barrier + 65550 65553 GLX_SGIX_hyperpipe_group + 65554 GLX_SGIX_query_board_num (internal, for shm) + +OpenGL Single Opcodes (8 Bits) +=============================== + + 167-up Reserved + 0 146 OpenGL 1.0/1.1 core + 147 159 OpenGL 1.2 core + 160 160 ARB_texture_compression + 161 166 ARB_occlusion_query + 167 178 ARB_shader_objects + 179 181 ARB_vertex_shader + 182 183 EXT_gpu_shader4 + 184 185 NV_vertex_program4 + 186 194 ARB_vertex_buffer_object + 195 202 OpenGL 2.0 core + 203 204 EXT_texture_integer + 205 205 ARB_map_buffer_range + 206 209 ARB_vertex_array_object + 210 212 EXT_draw_buffers2 + 213 214 OpenGL 3.0 core + 215 220 ARB_uniform_buffer_object + 221 ARB_copy_buffer + +OpenGL Rendering Opcodes (16 Bits) +================================== + + 0-1007 Reserved to ARB (231-1007 unused) + 0 191 OpenGL 1.0 core (140 deprecated?) + 192 194 OpenGL 1.1 core + 195 196 OpenGL 1.2 core + 197 213 ARB_multitexture + 214 219 ARB_texture_compression + 220 228 ARB_vertex_blend + 229 ARB_multisample + 230 ARB_window_pos + 231 232 ARB_occlusion_query + 233 ARB_draw_buffers + 234 ARB_color_buffer_float + 235 237 ARB_framebuffer_object + 238 264 ARB_shader_object + 265 ARB_vertex_shader + 266 268 ARB_geometry_shader4 + 269 277 EXT_gpu_shader4 + 278 289 NV_vertex_program4 + 290 301 ARB_vertex_buffer_object + 302 304 ARB_stencil_two_side + 305 310 OpenGL 2.1 core + 311 345 ARB_pixel_buffer_object + 346 347 EXT_texture_integer + 348 349 NV_conditional_render + 350 351 ARB_vertex_array_object + 352 354 EXT_draw_buffers2 + 355 363 OpenGL 3.0 core + 364 365 NV_primitive_restart + 366 ARB_uniform_buffer_object + 367 ARB_texture_buffer_object + 1008-1023 Reserved to IBM (unknown usage) + 1024-1039 Reserved to HP (originally Compaq) (unknown usage) + 1040-2047 Unused + 2048-3071 Reserved to SGI (2083-3071 unused) + 2048 2049 SGIS_multisample + 2050 SGIX_tag_sample_buffer + 2051 SGIS_detail_texture + 2052 SGIS_sharpen_texture + 2053 2056 SGI_color_table + 2057 2058 SGIS_texture4D + 2059 SGIX_pixel_texture + 2060 2063 SGIX_sprite + 2064 SGIS_texture_filter4 + 2065 2066 EXT_point_parameters/SGIS_point_parameters + 2067 SGIS_fog_function + 2068 unused? + 2069 2070 SGIX_instruments + 2071 SGIX_reference_plane + 2072 SGIX_framezoom + 2073 2076 unused? + 2077 SGIX_instruments + 2078 2081 SGIX_list_priority + 2082 SGIS_texture_color_mask + 3072-4095 Reserved to ARB (unused) + 4096-5151 Reserved to EXT (4460-5151 unused) + 4096 EXT_blend_color/1.2 + 4097 EXT_blend_minmax/1.2 + 4098 EXT_polygon_offset + 4099 4100 EXT_subtexture + 4101 4109 EXT_convolution/1.2 + 4110 4113 EXT_histogram/1.2 + 4114 EXT_texture3D/1.2 + 4115 EXT_subtexture/1.2 + 4116 EXT_vertex_array + 4117 4118 EXT_texture_object/1.1 + 4119 4123 EXT_copy_texture/1.1 + 4124 4125 EXT_fog_coord + 4126 4133 EXT_secondary_color + 4134 EXT_blend_func_separate + 4135 EXT_vertex_weighting + 4136 4142 NV_register_combiners + 4143 4144 NV_fence (4144 retired, used to be for FinishFence) + 4145 4179 NVIDIA (use TBD; was intended for NV_vertex_program) + 4180 4214 NV_vertex_program + 4215 4217 ARB_vertex_program + 4218 4219 NV_fragment_program + 4220 EXT_stencil_two_side + 4221 4222 NV_point_sprite + 4223 EXT_stencil_clear_tag + 4225 EXT_polygon_offset_clamp + 4228 EXT_blend_equation_separate + 4229 EXT_depth_bounds_test + 4230 4239 ARB_vertex_program + 4240 4264 NV_half_float + 4265 4280 NVIDIA (use TBD) + 4281 4282 EXT_gpu_program_parameters + 4283 4285 NV_depth_buffer_float + 4286 4290 NVIDIA (use TBD) + 4291 NV_copy_image + 4292 4293 EXT_texture_integer + 4294 4307 NVIDIA (use TBD) + 4308 4312 OES_single_precision (Khronos OpenGL ES 1.0) + 4313 4315 SUN (use TBD) + 4316 4325 EXT_framebuffer_object + 4326 4329 ARB_matrix_palette + 4330 EXT_framebuffer_blit + 4331 EXT_framebuffer_multisample + 4332 4347 NVIDIA (use TBD, bug 6720) + 4348 NV_texture_barrier + 4349 4459 NVIDIA (use TBD, bug 6720) + + 8192-8207 Reserved to HP (unknown usage) + 16384-16415 Reserved to SUN (unknown usage) + 24576-24607 Reserved to ADD (unknown usage) + + +GLX Enumerateds (32 Bits) +========================= +0x0-0xFF Reserved to EXT (visual attribute names) + 0x1 0x11 GLX 1.0 (attribute names) + 0x12 0x1F unused? + 0x20 GLX_EXT_visual_rating (attribute names) + 0x21 unused? + 0x22 0x28 GLX_EXT_visual_info (attribute names) +0x1F00-0x1F02 Reserved to ARB (shared with WGL) + 0x1F00 0x1F02 GLX_AMD_gpu_association +0x2070-0x209F Reserved to ARB (shared with WGL) + 0x2090 0x2094 GLX_ARB_create_context + 0x2095 GL_ARB_vertex_buffer_object + 0x2097 0x2098 GLX_ARB_context_flush_control +0x20A0-0x219F Reserved to NVIDIA (shared with WGL) + 0x20B0 GLX_NV_float_buffer + 0x20B1 GLX_EXT_fbconfig_packed_float + 0x20B2 GLX_ARB_framebuffer_sRGB (nee EXT) + 0x20B3 GLX_NV_multisample_coverage + 0x20B9 GLX_ARB_fbconfig_float + 0x20C3 0x20CC GLX_NV_video_out + 0x20CD 0x20CF GLX_NV_video_capture + 0x20D0 0x20EB GLX_EXT_texture_from_pixmap + 0x20F0 GLX_NV_present_video + 0x20F1 0x20F2 GLX_EXT_swap_control + 0x20F3 GLX_EXT_swap_control_tear + 0x20F4 GLX_EXT_buffer_age + 0x20F5 GLX_EXT_stereo_tree + 0x20F6 GLX_EXT_libglvnd + 0x20F7 GLX_NV_robustness_video_memory_purge +0x21A0-0x21AF Reserved to AMD (shared with WGL) + 0x21A2 0x21A8 GLX_AMD_gpu_association +0x31B3 Reserved to ARB (shared with WGL) + 0x31B3 GLX_ARB_create_context_no_error +0x8000-0x800F Reserved to EXT (0x800E-0x800F unused) + 0x8000 0x8009 GLX_EXT_visual_info + 0x800A 0x800C GLX_EXT_import_context + 0x800D GLX_EXT_visual_rating +0x8010-0x803F Reserved to SGI (0x8029-0x803F unused) + 0x8010 0x8015 GLX_SGIX_fbconfig + 0x8016 0x8023 GLX_SGIX_pbuffer + 0x8024 GLX_SGIX_dm_buffer + 0x8025 GLX_SGIS_blended_overlay + 0x8026 0x8027 GLX_SGIS_shared_multisample + 0x8028 GLX_SGIX_visual_select_group + 0x8030 GLX_SGIX_hyperpipe +0x8040-0x804F Reserved to OpenGL ARB + 0x8040 0x8041 GLX 1.3 +0x8050-0x805F Reserved to 3Dfx + 0x8050 0x8051 GLX_3DFX_multisample +0x8060-0x806F Reserved to OpenML SIG + 0x8060 0x8063 GLX_OML_swap_method +0x8070-0x816F Reserved to NVIDIA +0x8170-0x817F Reserved to SUN +0x8180-0x818F Reserved to Intel (0x818F unused) + 0x8180 0x8182 GLX_INTEL_swap_event + 0x8183 0x818E GLX_MESA_query_renderer +0x8250-0x826F Reserved to ARB (Shared with GL and WGL) + 0x8252 GLX_ARB_create_context_robustness + 0x8256 GLX_ARB_create_context_robustness + 0x8261 GLX_ARB_create_context_robustness +0x9126 GLX_ARB_create_context_profile (shared with WGL) + +100000-100011 Reserved to SGI (100002-100011 unused) + 100000 100001 GLX_SGIS_multisample/GLX_ARB_multisample + +GLX Error Codes +=============== + +(Extension reservations for vendor extensions should start sufficiently +high so they don't interfere with GLX core and GLX ARB extensions.) + +0 GLXBadContext OpenGL ARB (GLX core) +1 GLXBadContextState OpenGL ARB (GLX core) +2 GLXBadDrawable OpenGL ARB (GLX core) +3 GLXBadPixmap OpenGL ARB (GLX core) +4 GLXBadContextTag OpenGL ARB (GLX core) +5 GLXBadCurrentWindow OpenGL ARB (GLX core) +6 GLXBadRenderRequest OpenGL ARB (GLX core) +7 GLXBadLargeRequest OpenGL ARB (GLX core) +8 GLXUnsupportedPrivateRequest OpenGL ARB (GLX core) +9 GLXBadFBConfig OpenGL ARB (GLX core) +10 GLXBadPbuffer OpenGL ARB (GLX core) +11 GLXBadCurrentDrawable OpenGL ARB (GLX core) +12 GLXBadWindow OpenGL ARB (GLX core) +13 GLXBadProfileARB OpenGL ARB (GLX_ARB_create_context) + + +GLX Event Masks +=============== +0x08000000 GLX 1.3 / SGIX_pbuffer +0x04000000 Intel (INTEL_swap_event) + +GLX Event Codes +=============== + +(The X.org/Mesa GLX implementation derived from the SGI Sample +Implementation has __GLX_NUMBER_EVENTS == 17, suggesting that vendor +events should be allocated downwards from the first free value <= 16 +(14), and core GLX events allocated upwards). + +0 OpenGL ARB (GLX_PbufferClobber in GLX 1.3) +15 Intel (GLX_BufferSwapINTEL) +16 SGI (GLX_PbufferClobberSGIX) +64 SGI + +GLX protocol encoding for GL >= 2.0 +=================================== + +(This section - this whole file really - should eventually be incorporated +in a proper update of the GLX protocol specification.) + +OpenGL 2.0 +---------- + + DeleteShader + + 1 CARD8 opcode (X assigned) + 1 195 GLX opcode + 2 3 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 shader + + IsShader + + 1 CARD8 opcode (X assigned) + 1 196 GLX opcode + 2 3 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 shader + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 0 reply length + 4 BOOL32 return value + 20 unused + + IsProgram + + 1 CARD8 opcode (X assigned) + 1 197 GLX opcode + 2 3 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 0 reply length + 4 BOOL32 return value + 20 unused + + GetShaderiv + + 1 CARD8 opcode (X assigned) + 1 198 GLX opcode + 2 4 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + 4 CARD32 pname + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n == 1 ? 0 : n) + 4 unused + 4 CARD32 n + + if (n == 1) this follows: + + 4 CARD32 params + 12 unused + + otherwise this follows: + + 16 unused + n*4 LISTOFCARD32 params + + Note that n may be 0, indicating that a GL error occurred. + + GetProgramiv + + 1 CARD8 opcode (X assigned) + 1 199 GLX opcode + 2 4 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + 4 CARD32 pname + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n == 1 ? 0 : n) + 4 unused + 4 CARD32 n + + if (n == 1) this follows: + + 4 CARD32 params + 12 unused + + otherwise this follows: + + 16 unused + n*4 LISTofCARD32 params + + Note that n may be 0, indicating that a GL error occurred. + + GetShaderInfoLog + + 1 CARD8 opcode (X assigned) + 1 200 GLX opcode + 2 4 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 shader + 4 CARD32 bufSize + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n + p) / 4 + 4 unused + 4 CARD32 n, n = length + 1 + 16 unused + n LISTofBYTE infoLog + p unused, p=pad(n) + + Note that n may be 0, indicating that a GL error occurred. + + GetProgramInfoLog + + 1 CARD8 opcode (X assigned) + 1 201 GLX opcode + 2 4 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + 4 CARD32 bufSize + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n + p) / 4 + 4 unused + 4 CARD32 n, n = length + 1 + 16 unused + n LISTofBYTE infoLog + p unused, p=pad(n) + + Note that n may be 0, indicating that a GL error occurred. + + DeleteProgram + + 1 CARD8 opcode (X assigned) + 1 202 GLX opcode + 2 3 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + +OpenGL 2.1 +---------- + + UniformMatrix2x3fv + + 2 16+4*count*2*3 rendering command length + 2 305 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*2*3 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*2*2 rendering command length + 4 305 rendering command opcode + + UniformMatrix3x2fv + + 2 16+4*count*3*2 rendering command length + 2 306 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*3*2 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*3*2 rendering command length + 4 306 rendering command opcode + + UniformMatrix2x4fv + + 2 16+4*count*2*4 rendering command length + 2 307 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*2*4 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*2*4 rendering command length + 4 307 rendering command opcode + + UniformMatrix4x2fv + + 2 16+4*count*4*2 rendering command length + 2 308 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*4*2 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*4*2 rendering command length + 4 308 rendering command opcode + + UniformMatrix3x4fv + + 2 16+4*count*3*4 rendering command length + 2 309 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*3*4 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*3*4 rendering command length + 4 309 rendering command opcode + + UniformMatrix4x3fv + + 2 16+4*count*4*3 rendering command length + 2 310 rendering command opcode + 4 CARD32 location + 4 CARD32 count + 1 BOOL transpose + 3 unused + 4*count*4*3 LISTofFLOAT32 value + + If the command is encoded in a glXRenderLarge request, the + command opcode and command length fields above are expanded to + 4 bytes each: + + 4 20+4*count*4*3 rendering command length + 4 310 rendering command opcode + +OpenGL 3.0 +---------- + + The following rendering commands are sent to the sever as part of a + glXRender request: + + BindBufferRange + + 2 32 rendering command length + 2 355 rendering command opcode + 8 INT64 offset + 8 INT64 size + 4 ENUM target + 4 CARD32 index + 4 CARD32 buffer + + BindBufferBase + + 2 16 rendering command length + 2 356 rendering command opcode + 4 ENUM target + 4 CARD32 index + 4 CARD32 buffer + + BeginTransformFeedback + + 2 8 rendering command length + 2 357 rendering command opcode + 4 ENUM primitiveMode + + EndTransformFeedback + + 2 4 rendering command length + 2 358 rendering command opcode + + ClearBufferfi + + 2 20 rendering command length + 2 360 rendering command opcode + 4 ENUM buffer + 4 CARD32 drawbuffer + 4 FLOAT32 depth + 4 CARD32 stencil + + ClearBufferfv + + 2 12+(4*n) rendering command length + 2 361 rendering command opcode + 4 ENUM buffer + 0x1800 n=4 GL_COLOR + 0x1801 n=1 GL_STENCIL + 0x1802 n=1 GL_DEPTH + else n=0 + 4 CARD32 drawbuffer + 4*n LISTofFLOAT32 value + + ClearBufferiv + + 2 12+(4*n) rendering command length + 2 362 rendering command opcode + 4 ENUM buffer + 0x1800 n=4 GL_COLOR + 0x1801 n=1 GL_STENCIL + 0x1802 n=1 GL_DEPTH + else n=0 + 4 CARD32 drawbuffer + 4*n LISTofINT32 value + + ClearBufferuiv + + 2 12+(4*n) rendering command length + 2 363 rendering command opcode + 4 ENUM buffer + 0x1800 n=4 GL_COLOR + 0x1801 n=1 GL_STENCIL + 0x1802 n=1 GL_DEPTH + else n=0 + 4 CARD32 drawbuffer + 4*n LISTofCARD32 value + + The following rendering commands can be sent in a glXRender + or glXRenderLarge request. + + TransformFeedbackVaryings + + 2 16+(n*4)+s+p rendering command length + 2 359 rendering command opcode + 4 CARD32 program + 4 INT32 count + 4 ENUM buffermode + n*4 LISTofINT32 lengths[n], n = count + s LISTofCHAR varyings, s = sum of all entries in the lengths + array + p unused, p = pad(s) + + If the command is encoded in a glXRenderLarge request, the command + opcode and command length fields are expanded to 4 bytes each. + + 4 20+(n*4)+s+p rendering command length + 4 359 rendering command opcode + + lengths[i] is calculated as strlen(varyings[i]) + 1. The NUL terminator + is included when sending the varyings. + + The following single commands are sent to the server as part of a + glXSingle request: + + GetTransformFeedbackVarying + + 1 CARD8 opcode(X assigned) + 1 213 GLX opcode + 2 5 request length + 4 GLX_CONTEXT_TAG context tag + 4 CARD32 program + 4 CARD32 index + 4 CARD32 bufsize + => + 1 1 reply + 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n == 0 ? 0 : (n + p) / 4) + 4 unused + 4 n-1 length + 4 INT32 size + 4 INT32 type + 8 unused + n LISTofCHAR name, n = strlen(name)+1 + p unused, p = pad(m) + + GetStringi + + 1 CARD8 opcode (X assigned) + 1 214 GLX opcode + 2 4 request length + 4 GLX_CONTEXT_TAG context tag + 4 ENUM name + 4 CARD32 index + => + 1 1 reply + 1 1 unused + 2 CARD16 sequence number + 4 m reply length, m = (n + p) / 4 + 4 unused + 4 CARD32 n + 16 unused + n STRING8 string + p unused, p=pad(n) diff --git a/StgSharp.GenerateGL/xml/readme.pdf b/StgSharp.GenerateGL/xml/readme.pdf new file mode 100644 index 00000000..17cb822e Binary files /dev/null and b/StgSharp.GenerateGL/xml/readme.pdf differ diff --git a/StgSharp.GenerateGL/xml/readme.tex b/StgSharp.GenerateGL/xml/readme.tex new file mode 100644 index 00000000..ee702c84 --- /dev/null +++ b/StgSharp.GenerateGL/xml/readme.tex @@ -0,0 +1,1050 @@ +\documentclass{article} + +% Various packages of possible use. {index} creates problems for some reason. +% \usepackage{index} +\def\specpdftitle{The Khronos OpenGL API Registry Schema} +\usepackage[pdftex,bookmarksnumbered=true,linktocpage,plainpages=false,pdftitle={\specpdftitle},colorlinks=true]{hyperref} +\usepackage{amsmath,enumerate,epsfig,framed,mdframed,multicol,longtable,times,url} +\usepackage[normalem]{ulem} +% underscore allows use of _ instead of \_ in text. [strings] allows _ in file names +\usepackage[strings]{underscore} +\usepackage[breakwords,fit]{truncate} + +\makeatletter +\makeatother +\makeindex + +% Some commonly used abbreviations + +\def\code#1{{\tt #1}} +\def\tag#1{{\tt <#1>\index{<#1>}}} +\def\attr#1{{\tt #1\index{#1}}} + +\begin{document} + +\title{The Khronos OpenGL API Registry Schema} +\author{Jon Leech} +\date{Last updated 2020-10-27} +\maketitle + +\begin{abstract} + +This document describes the Khronos OpenGL API Registry XML schema, and provides +some additional information about using the registry and scripts to generate +C header files. The underlying XML files and scripts, as well as headers +generated from the current authoritative copy of the XML files, can be +obtained from the OpenGL-Registry github repository at + +\begin{center} +{\bf \href{https://github.com/KhronosGroup/OpenGL-Registry} + {https://github.com/KhronosGroup/OpenGL-Registry}} +\end{center} + +\end{abstract} + +\tableofcontents + +\section{Introduction} + +The registry uses an XML representation of the API and a set of Python 3 +scripts to manipulate the XML, based on the lxml Python bindings. It comes +with an XML schema and validator. Outside users are welcome to submit pull +requests on github, although the XML schema itself is mature and unlikely to +change at this point. + +Other APIs defined by Khronos, such as Vulkan and OpenXR, use a similar XML +schema originally based on the OpenGL schema to describe those APIs. + +Some groups outside Khronos have their own XML based API descriptions, +often used for additional purposes such as library code generators or +extension loaders, and it may be desirable to construct XSLT or other +translators between the schema. + + +\section{Getting Started} + +Once the repository has been downloaded, if you're running +in a Linux command-line environment and have Python 3, the lxml Python +bindings, and libxml installed, you should just be able to invoke +\code{make} and generate C/C++ header files for all the following +targets: + +\begin{itemize} +\item \code{GL/glext.h} - OpenGL 1.2 (and later) compatibility profile + API + extensions +\item \code{GL/glcorearb.h} - OpenGL core profile API + extensions +\item \code{GLES/gl.h} - OpenGL compatibility profile API +\item \code{GLES/glext.h} - OpenGL ES 1.x extensions +\item \code{GLES2/gl2.h} - OpenGL ES 2.x API +\item \code{GLES2/gl2ext.h} - OpenGL ES 2.x extensions +\item \code{GLES3/gl3.h} - OpenGL ES 3.x API +\item \code{GL/glx.h} - GLX API +\item \code{GL/glxext.h} - GLX 1.3 (and later) API + extensions +\item \code{GL/wgl.h} - WGL API +\item \code{GL/wglext.h} - WGL extensions +\item \code{EGL/egl.h} - EGL (still being worked on) +\end{itemize} + +Starting with the Makefile rules and inspecting the files \code{gl.xml}, +\code{genheaders.py}, and \code{reg.py} will be necessary if you want to +repurpose the registry for reasons other than header file generation, or +to generate headers for languages other than C. + +If you're running in a Microsoft Windows, MaxOS X, or other non-Linux +environment, there are equivalent versions of Python and GNU Make, although +we haven't tested this ourselves. Feedback would be helpful. If you're using +Windows 10, you should probably try to build in the Ubuntu Linux subsystem +rather than older Unix emulation environments such as Cygwin. + + +\subsection{Header Generation Script - \code{genheaders.py}} + +When generating header files using the \code{genheaders.py} script, an +API name and profile name are required, as shown in the Makefile +examples. Additionally, specific versions and extensions can be required +or excluded. Based on this information, the generator script extracts +the relevant interfaces and creates a C-language header file for them. +\code{genheaders.py} contains predefined generator options for OpenGL compatibility +and core profiles, OpenGL ES 1 / 2 / 3, GLX, and WGL headers. + +The generator script is intended to be generalizable to other languages +by writing new generator classes. Such generators would have to rewrite +the C types and definitions in the XML to something appropriate to their +language. + +\subsection{Registry Processing Script - \code{reg.py}} + +Actual XML registry processing is done in \code{reg.py}, which contains +several objects and methods for loading registries and extracting +interfaces and extensions for use in header generation. There is some +internal documentation in the form of comments although nothing more +extensive exists yet, and it's possible the Python scripts will evolve +significantly based on public feedback. + + +\section{XML Registry Schema} +\label{schema} + +The format of an XML registry is a top level \tag{registry} tag +containing \tag{types}, \tag{enums}, \tag{commands}, \tag{feature}, and +\tag{extension} tags describing the different elements of an API, as +explained below. This description corresponds to a formal Relax NG +schema file, \code{registry.rnc}, against which the XML registry files +can be validated. + +At present there are separate registries for: + +\begin{itemize} +\item OpenGL and OpenGL ES - \code{gl.xml} +\item GLX - \code{glx.xml} +\item WGL - \code{wgl.xml} +\item EGL - \code{egl.xml} (still in development) +\end{itemize} + +\subsection{Profiles} +\label{schema:profile} + +Types and enumerants can have different definitions depending on the API +profile requested, which allows us to accomodate minor incompatibilities +in the OpenGL and OpenGL ES APIs, for example. Features and extensions +can include some elements conditionally depending on the API profile +requested. + +\subsection{API Names} +\label{schema:apiname} + +Several tags use a \attr{api} attribute. This is an arbitrary string, +specified at header generation time, for labelling properties of a +specific API. The string can be, but is not necessarily, an actual API +name. As used in \code{genheaders.py} and \code{gl.xml}, the API names +are \code{gl}, \code{gles1}, and \code{gles2}, corresponding to OpenGL, +OpenGL ES 1, and OpenGL ES 2/3, respectively. + + +\section{Registry Root (\tag{registry} tag)} +\label{schema:root} + +A \tag{registry} contains the entire definition of one or more related +APIs. + +\subsection{Attributes of \tag{registry} tags} + +None. + +\subsection{Contents of \tag{registry} tags} + +Zero or more of each of the following tags, normally in this order +(although order shouldn't be important): + +\begin{itemize} +\item \tag{comment} - Contains arbitrary text, such as a copyright + statement. Unused. +\item \tag{types} (see section~\ref{tag:types}) - defines API types. + Usually only one tag is used. +\item \tag{kinds} (see section~\ref{tag:kinds}) - defines tags + that can be used for parameter validation and more expressive types + in API bindings for languages other than C. + One parameter can be of multiple kinds, separated by commas. +\item \tag{groups} (see section~\ref{tag:groups}) - defines named groups + of tokens for possible parameter validation in API bindings for + languages other than C. Usually only one tag is used. +\item \tag{enums} (see section~\ref{tag:enums}) - defines API enumerants + (tokens). Usually multiple tags are used. +\item \tag{commands} (see section~\ref{tag:commands}) - defines API + commands (functions). Usually only one tag is used. +\item \tag{feature} (see section~\ref{tag:feature}) - defines API + feature interfaces (API versions, more or less). One tag per + feature set. +\item \tag{extensions} (see section~\ref{tag:extensions}) - defines API + extension interfaces. Usually only one tag is used, wrapping many + extensions. +\end{itemize} + + +\section{API types (\tag{types} tag)} +\label{tag:types} + +The \tag{types} tag contains individual \tag{type} tags describing each +of the derived types used in the API. + +Each \tag{type} tag contains legal C code, with attributes or embedded +tags denoting the type name. + +\subsection{Attributes of \tag{type} tags} + +\begin{itemize} +\item \attr{requires} - another type name this type requires to complete + its definition. +\item \attr{name} - name of this type (if not defined in the tag body). +\item \attr{api} - an API name (see \tag{feature} below) which + specializes this definition of the named type, so that the same + API types may have different definitions for e.g. GL ES and GL. +\item \attr{comment} - arbitrary string (unused). +\end{itemize} + +\subsection{Contents of \tag{type} tags} + +\tag{type} contains text which is legal C code for a type declaration. +It may also contain embedded tags: + +\begin{itemize} +\item \tag{apientry/} - insert a platform calling convention macro here + during header generation, used mostly for function pointer types. +\item \tag{name} - contains the name of this type (if not defined in the + tag attributes). +\end{itemize} + +\subsection{Example of a \tag{types} tag} + +\begin{verbatim} + + ]]> + typedef ptrdiff_t GLintptr; + +\end{verbatim} + +If the {\tt GLint64} type is required by a command, this will result in +the following declarations: + +\begin{verbatim} +#include +typedef ptrdiff_t GLintptr; +\end{verbatim} + +\section{Kinds (\tag{kinds} tag)} +\label{tag:kinds} + +The \tag{kinds} tag contain individual \tag{kind} tags describing +some metadata not captured by the \tag{types} tag (see section~\ref{tag:types}) +or \tag{enums} tag (see section~\ref{tag:groups}). + +\subsection{Attributes of (\tag{kinds} tag)} + +\begin{itemize} +\item \attr{name} - the name of the kind. +\item \attr{desc} - a description of what the kind indicates. +\end{itemize} + +\subsection{Contents of \tag{kinds} tags} + +Each \tag{kinds} block contains zero or more \tag{kind} tags, in +arbitrary order. + +\subsection{Example of a \tag{kinds} tag} + +\begin{verbatim} + + + + +\end{verbatim} + +\section{Kind (\tag{kind} tag)} +\label{tag:kind} + +Each \{kind} tag defines a single kind annotation. + +\subsection{Attributes of \tag{kind} tag} + +\begin{itemize} +\item \attr{name} - kind name, an arbitrary string without commas (',') used + to identify this kind. +\item \attr{desc} - kind description, a description of what it + means for a parameter or return value to be annotated with this kind. +\end{itemize} + +\subsection{Contents of \tag{kind} tag} + +None. + +\subsection{Meaning of \tag{kind} tags} +\label{tag:kind:meaning} + +If a \tag{proto} or \tag{param} tag of a \tag{command} has a +\attr{kind} attribute defined, and and the comma separated elemenst +if the attribute matches a \tag{kind} name, +then the return type or parameter type is considered to be +further defined by the description provided by the \tag{kind} tags +with the matching names. C language bindings do not attempt to +enforce this constraint in any way, but other language bindings +may try to do so. + +\section{Enumerant Groups (\tag{groups} tag)} +\label{tag:groups} + +The \tag{groups} tags contain individual \tag{group} tags describing +some of the group annotations used for return and parameter types. + +\subsection{Attributes of \tag{groups} tags} + +None. + +\subsection{Contents of \tag{groups} tags} + +Each \tag{groups} block contains zero or more \tag{group} tags, in +arbitrary order (although they are typically ordered by group name, to +improve human readability). + +\subsection{Example of \tag{groups} tags} + +\begin{verbatim} + + + + + + + + + + +\end{verbatim} + + +\section{Enumerant Group (\tag{group} tag)} +\label{tag:group} + +Each \tag{group} tag defines a single group annotation. + +\subsection{Attributes of \tag{group} tags} + +\begin{itemize} +\item \attr{name} - group name, an arbitrary string for grouping a set + of enums together within a broader namespace. +\end{itemize} + +\subsection{Contents of \tag{group} tags} + +\tag{group} tags may contain zero or more \tag{enum} tags. Each +\tag{enum} tag may contain only a \attr{name} attribute, which should +correspond to a \tag{enum} definition in an \tag{enums} block. + +\subsection{Meaning of \tag{group} tags} +\label{tag:group:meaning} + +If a \tag{proto} or \tag{param} tag of a \tag{command} has a +\attr{group} attribute defined, and that attribute matches a \tag{group} +name, then the return type or parameter type is considered to be +constrained to values defined by the corresponding \tag{group}. C +language bindings do not attempt to enforce this constraint in any way, +but other language bindings may try to do so. + + +\section{Enumerant Blocks (\tag{enums} tag)} +\label{tag:enums} + +The \tag{enums} tags contain individual \tag{enum} tags describing each of the +token (enumerant) names used in the API. + +\subsection{Attributes of \tag{enums} tags} + +\begin{itemize} +\item \attr{namespace} - a string for grouping many different enums + together, currently unused but typically something like \code{GL} + for all enums in the OpenGL / OpenGL ES shared namespace. Multiple + \tag{enums} tags can share the same namespace. +\item \attr{type} - a string describing the data type of the values of + this group of enums, currently unused. The only string used at + present in the is \code{bitmask}. +\item \attr{start}, \attr{end} - integers defining the start and end of + a reserved range of enumerants for a particular vendor or purpose. + \attr{start} must be $\leq$ \attr{end}. These fields define formal + enumerant allocations within a namespace, and are made by the + Khronos Registrar on request from implementers following the enum + allocation policy. +\item \attr{vendor} - string describing the vendor or purposes to whom a + reserved range of enumerants is allocated. +\item \attr{comment} - arbitrary string (unused) +\end{itemize} + +\subsection{Contents of \tag{enums} tags} + +Each \tag{enums} block contains zero or more \tag{enum} and \tag{unused} +tags, in arbitrary order (although they are typically ordered by sorting +on enumerant values, to improve human readability). + +\subsection{Example of \tag{enums} tags} + +\begin{verbatim} + + + + + + + + +\end{verbatim} + +When processed into a C header, and assuming all these tokens were +required, this results in + +\begin{verbatim} +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000001 +#define GL_BGR 0x80E0 +\end{verbatim} + + +\section{Enumerants (\tag{enum} tag)} +\label{tag:enum} + +Each \tag{enum} tag defines a single GL (or other API) token. + +\subsection{Attributes of \tag{enum} tags} + +\begin{itemize} +\item \attr{value} - enumerant value, a legal C constant (usually a + hexadecimal integer). +\item \attr{name} - enumerant name, a legal C preprocessor token name. +\item \attr{api} - an API name which specializes this definition of the + named enum, so that different APIs may have different values for + the same token (used to address a few accidental incompatibilities + between GL and GL ES). +\item \attr{type} - legal C suffix for the value to force it to a + specific type. Currently only \code{u} and \code{ull} are used, + for \code{unsigned} 32- and 64-bit integer values, respectively. + Separated from the \attr{value} field since this eases parsing and + sorting of values, and is rarely used. +\item \attr{group} - group name, an arbitrary string for grouping a set of + enums together within a broader namespace. + \par {\bf Note:} the \tag{group} tag (see section~\ref{tag:group}) + serves the same purpose, but is deprecated in favor of this attribute. + Eventually all \tag{group} tags will be removed from the XML + registries. +\item \attr{alias} - name of another enumerant this is an alias of, used + where token names have been changed as a result of profile changes + or for consistency purposes. An enumerant alias is simply a + different \attr{name} for the exact same \attr{value}. At present, + enumerants which are promoted from extension to core API status + are not tagged as aliases - just enumerants tagged as aliases in + the {\em Changed Tokens} sections of appendices to the OpenGL + Specification. This might change in the future. +\end{itemize} + +\subsection{Contents of \tag{enum} tags} + +\tag{enum} tags have no allowed contents. All information is contained +in the attributes. + + +\section{Unused Enumerants (\tag{unused} tag)} +\label{tag:unused} + +Each \tag{unused} tag defines a range of enumerants which is allocated, +but not yet assigned to specific enums. This just tracks the unused +values and is not needed for header generation. + +\subsection{Attributes of \tag{unused} tags} + +\begin{itemize} +\item \attr{start}, \attr{end} - integers defining the start and end of + an unused range of enumerants. \attr{start} must be $\leq$ + \attr{end}. This range should not exceed the range reserved by the + surrounding \tag{enums} tag. +\item \attr{vendor} - string describing the vendor or purposes to whom a + reserved range of enumerants is allocated. Usually identical to + the \attr{vendor} attribute of the surrounding \attr{enums} block. +\item \attr{comment} - arbitrary string (unused) +\end{itemize} + +\subsection{Contents of \tag{unused} tags} + +None. + + +\section{Command Blocks (\tag{commands} tag)} +\label{tag:commands} + +The \tag{commands} tag contains definitions of each of the functions +(commands) used in the API. + +\subsection{Attributes of \tag{commands} tags} + +\begin{itemize} +\item \attr{namespace} - a string defining the namespace in which + commands live, currently unused but typically something like + \code{GL}. +\end{itemize} + +\subsection{Contents of \tag{commands} tags} + +Each \tag{commands} block contains zero or more \tag{command} tags, in +arbitrary order (although they are typically ordered by sorting on the +command name, to improve human readability). + + +\section{Commands (\tag{command} tag)} +\label{tag:command} + +The \tag{command} tag contains a structured definition of a single API +command (function). + +\subsection{Attributes of \tag{command} tags} + +\begin{itemize} +\item \attr{comment} - arbitrary string (unused). +\end{itemize} + +\subsection{Contents of \tag{command} tags} + +\begin{itemize} +\item \tag{proto} must be the first element, and is a tag defining the C + function prototype of a command as described below, up to the + function name but not including function parameters. +\item \tag{param} elements for each command parameter follow, defining + its name and type, as described below. If a command takes no + arguments, it has no \tag{param} tags. +\end{itemize} + +Following these elements, the remaining elements in a \tag{command} +tag are optional and may be in any order: + +\begin{itemize} +\item \tag{alias} has one attribute, \attr{name}, containing a string which is the + name of another command this command is an alias of, used when + promoting a function from extension to ARB or ARB to API status. A + command alias describes the case where there are two function + names which resolve to the {\bf same} client library code, so (for + example) the case where a command is promoted but is also given + different GLX protocol would {\bf not} be an alias in this sense. +\item \tag{vecequiv} has one attribute, \attr{name}, containing a string which is + the name of another command which is the {\em vector equivalent} + of this command. For example, the vector equivalent of + \code{glVertex3f} is \code{glVertex3fv}. +\item \tag{glx} defines GLX protocol information for this command, as + described below. Many GL commands don't have GLX protocol defined, + and other APIs such as EGL and WGL don't use GLX at all. +\end{itemize} + + +\subsection{Command prototype (\tag{proto} tags)} +\label{tag:command:proto} + +The \tag{proto} tag defines the return type and name of a command. + +\subsubsection{Attributes of \tag{proto} tags} + +\begin{itemize} +\item \attr{group} - group name, an arbitrary string. +\item \attr{kind} - kind list, a comma separated list of names of + previously defined \tag{kind} tags. +\end{itemize} + +If the group name is defined, it may be interpreted as described in +section~\ref{tag:group:meaning}. + +\subsubsection{Contents of \tag{proto} tags} + +The text elements of a \tag{proto} tag, with all other tags removed, is +legal C code describing the return type and name of a command. In addition +it may contain two semantic tags: + +\begin{itemize} +\item The \tag{ptype} tag is optional, and contains text which is a + valid type name found in \tag{type} tag, and indicates that this + type must be previously defined for the definition of the command + to succeed. Builtin C types, and any derived types which are + expected to be found in other header files, should not be wrapped + in \tag{ptype} tags. +\item The \tag{name} tag is required, and contains the command name + being described. +\end{itemize} + +\subsection{Command parameter (\tag{param} tags)} +\label{tag:command:param} + +The \tag{param} tag defines the type and name of a parameter. + +\subsubsection{Attributes of \tag{param} tags} + +\begin{itemize} +\item \attr{group} - group name, an arbitrary string. +\item \attr{kind} - kind list, a comma separated list of names of + previously defined \tag{kind} tags. +\item \attr{len} - parameter length, either an integer specifying the + number of elements of the parameter \tag{ptype}, or a complex + string expression with poorly defined syntax, usually representing + a length that is computed as a combination of other command + parameter values, and possibly current GL state as well. +\item \attr{class} - an arbitrary string defining the type of object handles + passed in this parameter. Handles with different types are not + compatible; for example, handles created with + \attr{class}{\tt="buffer"} can not be passed to a parameter with + \attr{class}{\tt="shader"}. +\end{itemize} + +If the group name is defined, it may be interpreted as described in +section~\ref{tag:group:meaning}. + +\subsubsection{Contents of \tag{param} tags} + +The text elements of a \tag{param} tag, with all other tags removed, is +legal C code describing the type and name of a function parameter. In +addition it may contain two semantic tags: + +\begin{itemize} +\item The \tag{ptype} tag is optional, and contains text which is a + valid type name found in \tag{type} tag, and indicates that this + type must be previously defined for the definition of the command + to succeed. Builtin C types, and any derived types which are + expected to be found in other header files, should not be wrapped + in \tag{ptype} tags. +\item The \tag{name} tag is required, and contains the command name + being described. +\end{itemize} + +\subsection{Example of a \tag{commands} tag} + +\begin{verbatim} + + + void glBeginConditionalRenderNV + GLuint id + GLenum mode + + + + +\end{verbatim} + +When processed into a C header, this results in + +\begin{verbatim} +void glBeginConditionalRenderNV(GLuint id, GLenum mode); +\end{verbatim} + + +\section{API Features / Versions (\tag{feature} tag)} +\label{tag:feature} + +API features are described in individual \tag{feature} tags. A feature +is the set of interfaces (enumerants and commands) defined by a +particular API and version, such as OpenGL 4.0 or OpenGL ES 3.0, and +includes all API profiles of that version. + +\subsection{Attributes of \tag{feature} tags} + +\begin{itemize} +\item \attr{api} - API name this feature is for (see + section~\ref{schema:apiname}), such as \code{gl} or \code{gles2}. +\item \attr{name} - version name, used as the C preprocessor token under + which the version's interfaces are protected against multiple + inclusion. Example: \code{GL\_VERSION\_4\_2}. +\item \attr{protect} - an additional preprocessor token used to protect + a feature definition. Usually another feature or extension + \attr{name}. Rarely used, for odd circumstances where the + definition of a feature or extension requires another to be + defined first. +\item \attr{number} - feature version number, usually a string + interpreted as $majorNumber.minorNumber$. Example: \code{4.2}. +\item \attr{comment} - arbitrary string (unused) +\end{itemize} + +\subsection{Contents of \tag{feature} tags} + +Zero or more \tag{require} and \tag{remove} tags (see +section~\ref{tag:required}), in arbitrary order. Each tag describes a +set of interfaces that is respectively required for, or removed from, +this feature, as described below. + +\subsection{Example of a \tag{feature} tag} + +\begin{verbatim} + + + + + + + + + + +\end{verbatim} + +When processed into a C header for the \code{compatibility} profile of +OpenGL, this results in (assuming the usual definitions of these GL +interfaces): + +\begin{verbatim} +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_INDEX 0x8222 +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEndTransformFeedback (void); +#endif +#endif /* GL_VERSION_3_0 */ +\end{verbatim} + +If processed into a header for the \code{core} profile, the definition of +\code{GL\_INDEX} would not appear. + + +\section{Extension Blocks (\tag{extensions} tag)} +\label{tag:extensions} + +The \tag{extensions} tag contains definitions of each of the extenions +which are defined for the API. + +\subsection{Attributes of \tag{extensions} tags} + +None. + +\subsection{Contents of \tag{extensions} tags} + +Each \tag{extensions} block contains zero or more \tag{extension} tags, +each describing an API extension, in arbitrary order (although they are +typically ordered by sorting on the extension name, to improve human +readability). + + +\section{API Extensions (\tag{extension} tag)} +\label{tag:extension} + +API extensions are described in individual \tag{extension} tags. An +extension is the set of interfaces defined by a particular API extension +specification, such as \code{ARB\_multitexture}. \tag{extension} is +similar to \tag{feature}, but instead of having \attr{version} and +\attr{profile} attributes, instead has a \attr{supported} attribute, +which describes the set of API names which the extension can potentially +be implemented against. + +\subsection{Attributes of \tag{extension} tags} + +\begin{itemize} +\item \attr{supported} - a regular expression, with an implicit + \code{\^{}} and \code{\$} bracketing it, which should match the + \attr{api} tag of a set of \tag{feature} tags. +\item \attr{protect} - an additional preprocessor token used to protect + an extension definition. Usually another feature or extension + \attr{name}. Rarely used, for odd circumstances where the + definition of an extension requires another to be defined first. +\item \attr{comment} - arbitrary string (unused) +\end{itemize} + +\subsection{Contents of \tag{extension} tags} + +Zero or more \tag{require} and \tag{remove} tags (see +section~\ref{tag:required}), in arbitrary order. Each tag describes a +set of interfaces that is respectively required for, or removed from, +this extension, as described below. + +\subsection{Example of an \tag{extensions} tag} + +\begin{verbatim} + + + + + + + + + + + +\end{verbatim} + +The \attr{supported} attribute says that the extension can be supported for +either the GL compatibility (\code{gl}) or GL core (\code{glcore}) API +profiles, but not for other APIs. When processed into a C header for the +\code{core} profile of OpenGL, this results in (assuming the usual +definitions of these GL interfaces): + +\begin{verbatim} +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_NO_ERROR 0 +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +#endif +#endif /* GL_ARB_robustness */ +\end{verbatim} + + +\section{Required and Removed Interfaces (\tag{require} and \tag{remove} tags)} +\label{tag:required} + +A \tag{require} block defines a set of interfaces (types, enumerants and +commands) {\em required} by a \tag{feature} or \tag{extension}. A +\tag{remove} block defines a set of interfaces {\em removed} by a +\tag{feature} (this is primarily useful for the OpenGL core profile, +which removed many interfaces - extensions should never remove +interfaces, although this usage is allowed by the schema). Except for +the tag name and behavior, the contents of \tag{require} and +\tag{remove} tags are identical. + +\subsection{Attributes of \tag{require} and \tag{remove} tags} + +\begin{itemize} +\item \attr{profile} - string name of an API profile. Interfaces in the + tag are only required (or removed) if the specified profile is + being generated. If not specified, interfaces are required (or + removed) for all API profiles. +\item \attr{comment} - arbitrary string (unused) +\item \attr{api} - an API name (see section~\ref{schema:apiname}). Interfaces + in the tag are only required (or removed) if the specified API is + being generated. If not specified, interfaces are required (or + removed) for all APIs. + + {\bf The \attr{api} attribute is only supported inside + \tag{extension} tags,} since \tag{feature} tags already define a + specific API. +\end{itemize} + +\subsection{Contents of \tag{require} and \tag{remove} tags} + +Zero or more of the following tags, in any order: + +\begin{itemize} +\item \tag{command} specifies an required (or removed) command defined + in a \tag{commands} block. The tag has no content, but contains + elements: + + \begin{itemize} + \item \attr{name} - name of the command (required). + \item \attr{comment} - arbitrary string (optional and unused). + \end{itemize} +\item \tag{enum} specifies an required (or removed) enumerant defined in + a \tag{enums} block. The tag has no content, but contains + elements: + + \begin{itemize} + \item \attr{name} - name of the enumerant (required). + \item \attr{comment} - arbitrary string (optional and unused). + \end{itemize} +\item \tag{type} specifies a required (or removed) type defined in a + \tag{types} block. Most types are picked up implicitly by using + the \tag{ptype} tags of commands, but in a few cases, additional + types need to be specified explicitly (it is unlikely that a type + would ever be removed, although this usage is allowed by the + schema). The tag has no content, but contains elements: + + \begin{itemize} + \item \attr{name} - name of the type (required). + \item \attr{comment} - arbitrary string (optional and unused). + \end{itemize} +\end{itemize} + + +\section{General Discussion} +\label{general} + + +\subsection{Stability of the XML Database and Schema} +\label{general:stability} + +The new registry schema, scripts, and databases are evolving in response +to feedback and to Khronos' own wishlist. This means the XML schema is +subject to change, although most such change will probably be confined +to adding attributes to existing tags. The XML databases such as +\code{gl.xml} will evolve in response to schema changes, to new +extensions and API versions, and to general cleanup, such as +canonicalization of the XML or sorting of \tag{command} and +\tag{extension} tags by name. Changes to the schema will be described in +the change log of this document (see section~\ref{changelog}). Changes +to the \code{.xml} files will be described in Github revision history. + + +\subsection{Feature Enhancements to the Registry} +\label{general:enhancements} + +There are lots of tools and additional tags that would make the XML format +more expressive and the tools more capable. Khronos is open to hosting +additional processing scripts for other purposes related to the definition +of the API and bindings to it. + +A partial wishlist follows: + +\begin{itemize} +\item Enhance \tag{command} \tag{alias} tags to describe more relaxed + sorts of aliases, such as commands equivalent in behavior and + interface, but using different GLX protocol (this might be called + a {\em client-side alias} or something of the sort). +\end{itemize} + +\subsection{Type Annotations and Relationship to \code{.spec} Files} +\label{general:annotations} + +The initial releases of the XML Registry did not include type annotation +and array length information from the old \code{.spec} files, which +generated a number of complaints from people writing bindings of OpenGL +to languages other than C. The majority of these annotations have now +been added to the XML, in the form of \tag{group} tags (see +section~\ref{tag:group}) defining groups of related enumerants, +\attr{group} attributes on \tag{proto} and \tag{param} tags specifying +that the corresponding return type belongs to a group, and \attr{len} +attributes on \tag{param} tags specifying the array length of the +corresponding parameter. + +There are many caveats regarding these annotations. For the most part +they date from SGI's OpenGL 1.1 implementation, and have not been +updated. The defined \tag{group}s therefore do not cover many API +parameters which {\bf could} be given a group, and in many cases, the +defined \tag{group}s have not been updated to add new enumerants from +later versions of OpenGL and OpenGL extensions. The group names are +often somewhat misleading (with imbedded vendor extension tags, while +the corresponding features have been promoted). + +The \tag{group}s added to \code{gl.xml} are the enumerant groups defined +in \code{enum.spec}, and \code{enumext.spec}. Many additional group +names were used in the annotations in \code{gl.spec}, and they +fall in several categories discussed below. + + +\subsubsection{Simple API Type Aliases} + +Group names that were simply an alias for a GL type have been left +entirely out of \code{gl.xml}, since they offer no useful additional +information. + +For example, a parameter described as \code{UInt32} in \code{gl.spec} is +not annotated with \code{group="UInt32"} in \code{gl.xml}, because this +offers no information about the parameter not already present in its +declaration as \code{GLuint}. + +A few examples of such groups are \code{cl\_context}, +\code{handleARB}, \code{Int32}, and \code{sync}. + + +\subsubsection{Numeric Constraints} + +Group names representing some type of numerical constraint on a value +are retained in \tag{proto} and \tag{param} \attr{group} attributes, but +no definition exists. This is because the existing \tag{group} mechanism +can only describe constraints to specific enumerant names. + +This is not a regression relative to the \code{.spec} files, which also +did not describe the meaning of these groups. + +A few examples of such groups are \code{CheckedFloat32}, +\code{ClampedFixed}, and \code{CoordD}. + + +\subsubsection{GL Object Names} + +Group names representing an object name obtained from e.g. a +\code{glGen*} command, such as a display list name, are retained in in +\tag{proto} and \tag{param} \attr{group} attributes, but no definition +exists. This is because the existing \tag{group} mechanism can only +describe constraints to specific enumerant names. + +This is not a regression relative to the \code{.spec} files, which also +did not describe the meaning of these groups. + +A few examples of such groups are \code{List} and \code{Path}. + + +\subsubsection{Groups Not Defined Yet} + +Group names representing enumerant groups which were not defined in +\code{enum.spec} and \code{enumext.spec} are retained in \tag{proto} and +\tag{param} \attr{group} attributes, but no definition exists. Such +groups usually are a result of vendors contributing \code{gl.spec} +entries for an extension without contributing corresponding +\code{enum.spec} entries. + +This is not a regression relative to the \code{.spec} files, which also +did not describe the meaning of these groups. + +A few examples of such groups are \code{ArrayObjectPNameATI}, +\code{BinormalPointerTypeEXT}, and \code{SpriteParameterNameSGIX}. + + +\subsubsection{Other Groups} + +There are probably a few groups which are present in \code{gl.xml} but +should not be. These can be gradually cleaned up over time. + + +\subsubsection{Validating Groups} + +The \code{genheaders.py} script has been enhanced to allow validating +groups during header generation. Invoking it with the +\code{-validate} option, for example via: + +\code{\$ genheaders.py -validate -registry gl.xml} + +\noindent will generate a text dump on standard output showing all +parameter type \attr{group} attributes which do {\bf not} have +corresponding \tag{group} tags. + + +\section{Change Log} +\label{changelog} + +\begin{itemize} +\item 2020-10-27 - Add \attr{class} attribute to \tag{param} tags (github + pull request 428), update document title and make minor tweaks to + reflect this not being the only Khronos XML API schema in use, and + having migrated from Subversion to Github. +\item 2020-01-11 - Add \attr{group} attribute to \tag{enum} tags, and + deprecate \tag{group} tags (github issue 335). +\item 2017-01-20 - Update for the move to the new github repository. +\item 2014-06-16 - Add \tag{vendor} attribute to \tag{unused} tags. +\item 2013-09-17 - Add \tag{comment} attribute to \tag{command} tags + within \tag{commands}. +\item 2013-06-24 - Add \tag{groups} and \tag{group} tags, renamed + \tag{enums} attribute \attr{class} to \attr{group}, and add + parameter type annotation attributes \attr{group} and \attr{len} + to both \tag{proto} and \tag{param}. Add + section~\ref{general:annotations} discussing limitations of these + annotations. Still need to add examples of the annotation + attributes. +\item 2013-06-19 - Added \tag{extensions} tag block as a wrapper around + groups of \tag{extension} tags, to ease XML transformations such + as sorting extensions by name. +\item 2013-06-14 - Expanded description of tags, better formatting +\item 2013-06-12 - First release, text file format +\end{itemize} + +\input{readme.ind} + +% \printindex + +\end{document} diff --git a/StgSharp.GenerateGL/xml/reg.py b/StgSharp.GenerateGL/xml/reg.py new file mode 100644 index 00000000..dd147e41 --- /dev/null +++ b/StgSharp.GenerateGL/xml/reg.py @@ -0,0 +1,1159 @@ +#!/usr/bin/python3 -i +# +# Copyright 2013-2020 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +import io,os,re,string,sys +from lxml import etree + +def write(*args, **kwargs): + file = kwargs.pop('file', sys.stdout) + end = kwargs.pop('end', '\n') + file.write(' '.join([str(arg) for arg in args])) + file.write(end) + +# noneStr - returns string argument, or "" if argument is None. +# Used in converting lxml Elements into text. +# str - string to convert +def noneStr(str): + if (str): + return str + else: + return "" + +# matchAPIProfile - returns whether an API and profile +# being generated matches an element's profile +# api - string naming the API to match +# profile - string naming the profile to match +# elem - Element which (may) have 'api' and 'profile' +# attributes to match to. +# If a tag is not present in the Element, the corresponding API +# or profile always matches. +# Otherwise, the tag must exactly match the API or profile. +# Thus, if 'profile' = core: +# with no attribute will match +# will match +# will not match +# Possible match conditions: +# Requested Element +# Profile Profile +# --------- -------- +# None None Always matches +# 'string' None Always matches +# None 'string' Does not match. Can't generate multiple APIs +# or profiles, so if an API/profile constraint +# is present, it must be asked for explicitly. +# 'string' 'string' Strings must match +# +# ** In the future, we will allow regexes for the attributes, +# not just strings, so that api="^(gl|gles2)" will match. Even +# this isn't really quite enough, we might prefer something +# like "gl(core)|gles1(common-lite)". +def matchAPIProfile(api, profile, elem): + """Match a requested API & profile name to a api & profile attributes of an Element""" + match = True + # Match 'api', if present + if ('api' in elem.attrib): + if (api == None): + raise UserWarning("No API requested, but 'api' attribute is present with value '" + + elem.get('api') + "'") + elif (api != elem.get('api')): + # Requested API doesn't match attribute + return False + if ('profile' in elem.attrib): + if (profile == None): + raise UserWarning("No profile requested, but 'profile' attribute is present with value '" + + elem.get('profile') + "'") + elif (profile != elem.get('profile')): + # Requested profile doesn't match attribute + return False + return True + +# BaseInfo - base class for information about a registry feature +# (type/group/enum/command/API/extension). +# required - should this feature be defined during header generation +# (has it been removed by a profile or version)? +# declared - has this feature been defined already? +# elem - lxml.etree Element for this feature +# resetState() - reset required/declared to initial values. Used +# prior to generating a new API interface. +class BaseInfo: + """Represents the state of a registry feature, used during API generation""" + def __init__(self, elem): + self.required = False + self.declared = False + self.elem = elem + def resetState(self): + self.required = False + self.declared = False + +# TypeInfo - registry information about a type. No additional state +# beyond BaseInfo is required. +class TypeInfo(BaseInfo): + """Represents the state of a registry type""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + +# GroupInfo - registry information about a group of related enums. +# enums - dictionary of enum names which are in the group +class GroupInfo(BaseInfo): + """Represents the state of a registry enumerant group""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.enums = {} + +# EnumInfo - registry information about an enum +# type - numeric type of the value of the tag +# ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 ) +class EnumInfo(BaseInfo): + """Represents the state of a registry enum""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.type = elem.get('type') + if (self.type == None): + self.type = '' + +# CmdInfo - registry information about a command +# glxtype - type of GLX protocol { None, 'render', 'single', 'vendor' } +# glxopcode - GLX protocol opcode { None, number } +# glxequiv - equivalent command at GLX dispatch level { None, string } +# vecequiv - equivalent vector form of a command taking multiple scalar args +# { None, string } +class CmdInfo(BaseInfo): + """Represents the state of a registry command""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.glxtype = None + self.glxopcode = None + self.glxequiv = None + self.vecequiv = None + +# FeatureInfo - registry information about an API +# or +# name - feature name string (e.g. 'GL_ARB_multitexture') +# number - feature version number (e.g. 1.2). +# features are unversioned and assigned version number 0. +# category - category, e.g. VERSION or ARB/KHR/OES/ETC/vendor +# emit - has this feature been defined already? +class FeatureInfo(BaseInfo): + """Represents the state of an API feature (version/extension)""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.name = elem.get('name') + # Determine element category (vendor). Only works + # for elements. + if (elem.tag == 'feature'): + self.category = 'VERSION' + self.number = elem.get('number') + else: + self.category = self.name.split('_', 2)[1] + self.number = "0" + self.emit = False + +# Primary sort key for regSortFeatures. +# Sorts by category of the feature name string: +# Core API features (those defined with a tag) +# ARB/KHR/OES (Khronos extensions) +# other (EXT/vendor extensions) +def regSortCategoryKey(feature): + if (feature.elem.tag == 'feature'): + return 0 + elif (feature.category == 'ARB' or + feature.category == 'KHR' or + feature.category == 'OES'): + return 1 + else: + return 2 + +# Secondary sort key for regSortFeatures. +# Sorts by extension name. +def regSortNameKey(feature): + return feature.name + +# Tertiary sort key for regSortFeatures. +# Sorts by feature version number. +# elements all have version number "0" +def regSortNumberKey(feature): + return feature.number + +# regSortFeatures - default sort procedure for features. +# Sorts by primary key of feature category, +# then by feature name within the category, +# then by version number +def regSortFeatures(featureList): + featureList.sort(key = regSortNumberKey) + featureList.sort(key = regSortNameKey) + featureList.sort(key = regSortCategoryKey) + +# GeneratorOptions - base class for options used during header production +# These options are target language independent, and used by +# Registry.apiGen() and by base OutputGenerator objects. +# +# Members +# filename - name of file to generate, or None to write to stdout. +# apiname - string matching 'apiname' attribute, e.g. 'gl'. +# profile - string specifying API profile , e.g. 'core', or None. +# versions - regex matching API versions to process interfaces for. +# Normally '.*' or r'[0-9]\.[0-9]' to match all defined versions. +# emitversions - regex matching API versions to actually emit +# interfaces for (though all requested versions are considered +# when deciding which interfaces to generate). For GL 4.3 glext.h, +# this might be r'1\.[2-5]|[2-4]\.[0-9]'. +# defaultExtensions - If not None, a string which must in its +# entirety match the pattern in the "supported" attribute of +# the . Defaults to None. Usually the same as apiname. +# addExtensions - regex matching names of additional extensions +# to include. Defaults to None. +# removeExtensions - regex matching names of extensions to +# remove (after defaultExtensions and addExtensions). Defaults +# to None. +# sortProcedure - takes a list of FeatureInfo objects and sorts +# them in place to a preferred order in the generated output. +# Default is core API versions, ARB/KHR/OES extensions, all +# other extensions, alphabetically within each group. +# The regex patterns can be None or empty, in which case they match +# nothing. +class GeneratorOptions: + """Represents options during header production from an API registry""" + def __init__(self, + filename = None, + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + sortProcedure = regSortFeatures): + self.filename = filename + self.apiname = apiname + self.profile = profile + self.versions = self.emptyRegex(versions) + self.emitversions = self.emptyRegex(emitversions) + self.defaultExtensions = defaultExtensions + self.addExtensions = self.emptyRegex(addExtensions) + self.removeExtensions = self.emptyRegex(removeExtensions) + self.sortProcedure = sortProcedure + # + # Substitute a regular expression which matches no version + # or extension names for None or the empty string. + def emptyRegex(self,pat): + if (pat == None or pat == ''): + return '_nomatch_^' + else: + return pat + +# CGeneratorOptions - subclass of GeneratorOptions. +# +# Adds options used by COutputGenerator objects during C language header +# generation. +# +# Additional members +# prefixText - list of strings to prefix generated header with +# (usually a copyright statement + calling convention macros). +# protectFile - True if multiple inclusion protection should be +# generated (based on the filename) around the entire header. +# protectFeature - True if #ifndef..#endif protection should be +# generated around a feature interface in the header file. +# genFuncPointers - True if function pointer typedefs should be +# generated +# protectProto - Controls cpp protection around prototypes: +# False - no protection +# 'nonzero' - protectProtoStr must be defined to a nonzero value +# True - protectProtoStr must be defined +# protectProtoStr - #ifdef symbol to use around prototype +# declarations, if protected +# apicall - string to use for the function declaration prefix, +# such as APICALL on Windows. +# apientry - string to use for the calling convention macro, +# in typedefs, such as APIENTRY. +# apientryp - string to use for the calling convention macro +# in function pointer typedefs, such as APIENTRYP. +class CGeneratorOptions(GeneratorOptions): + """Represents options during C header production from an API registry""" + def __init__(self, + filename = None, + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + sortProcedure = regSortFeatures, + prefixText = "", + genFuncPointers = True, + protectFile = True, + protectFeature = True, + protectProto = True, + protectProtoStr = True, + apicall = '', + apientry = '', + apientryp = ''): + GeneratorOptions.__init__(self, filename, apiname, profile, + versions, emitversions, defaultExtensions, + addExtensions, removeExtensions, sortProcedure) + self.prefixText = prefixText + self.genFuncPointers = genFuncPointers + self.protectFile = protectFile + self.protectFeature = protectFeature + self.protectProto = protectProto + self.protectProtoStr = protectProtoStr + self.apicall = apicall + self.apientry = apientry + self.apientryp = apientryp + +# OutputGenerator - base class for generating API interfaces. +# Manages basic logic, logging, and output file control +# Derived classes actually generate formatted output. +# +# ---- methods ---- +# OutputGenerator(errFile, warnFile, diagFile) +# errFile, warnFile, diagFile - file handles to write errors, +# warnings, diagnostics to. May be None to not write. +# logMsg(level, *args) - log messages of different categories +# level - 'error', 'warn', or 'diag'. 'error' will also +# raise a UserWarning exception +# *args - print()-style arguments +# beginFile(genOpts) - start a new interface file +# genOpts - GeneratorOptions controlling what's generated and how +# endFile() - finish an interface file, closing it when done +# beginFeature(interface, emit) - write interface for a feature +# and tag generated features as having been done. +# interface - element for the / to generate +# emit - actually write to the header only when True +# endFeature() - finish an interface. +# genType(typeinfo,name) - generate interface for a type +# typeinfo - TypeInfo for a type +# genEnum(enuminfo, name) - generate interface for an enum +# enuminfo - EnumInfo for an enum +# name - enum name +# genCmd(cmdinfo) - generate interface for a command +# cmdinfo - CmdInfo for a command +class OutputGenerator: + """Generate specified API interfaces in a specific style, such as a C header""" + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + self.outFile = None + self.errFile = errFile + self.warnFile = warnFile + self.diagFile = diagFile + # Internal state + self.featureName = None + self.genOpts = None + # + # logMsg - write a message of different categories to different + # destinations. + # level - + # 'diag' (diagnostic, voluminous) + # 'warn' (warning) + # 'error' (fatal error - raises exception after logging) + # *args - print()-style arguments to direct to corresponding log + def logMsg(self, level, *args): + """Log a message at the given level. Can be ignored or log to a file""" + if (level == 'error'): + strfile = io.StringIO() + write('ERROR:', *args, file=strfile) + if (self.errFile != None): + write(strfile.getvalue(), file=self.errFile) + raise UserWarning(strfile.getvalue()) + elif (level == 'warn'): + if (self.warnFile != None): + write('WARNING:', *args, file=self.warnFile) + elif (level == 'diag'): + if (self.diagFile != None): + write('DIAG:', *args, file=self.diagFile) + else: + raise UserWarning( + '*** FATAL ERROR in Generator.logMsg: unknown level:' + level) + # + def beginFile(self, genOpts): + self.genOpts = genOpts + # + # Open specified output file. Not done in constructor since a + # Generator can be used without writing to a file. + if (self.genOpts.filename != None): + self.outFile = open(self.genOpts.filename, 'w') + else: + self.outFile = sys.stdout + def endFile(self): + self.errFile and self.errFile.flush() + self.warnFile and self.warnFile.flush() + self.diagFile and self.diagFile.flush() + self.outFile.flush() + if (self.outFile != sys.stdout and self.outFile != sys.stderr): + self.outFile.close() + self.genOpts = None + # + def beginFeature(self, interface, emit): + self.emit = emit + self.featureName = interface.get('name') + # If there's an additional 'protect' attribute in the feature, save it + self.featureExtraProtect = interface.get('protect') + def endFeature(self): + # Derived classes responsible for emitting feature + self.featureName = None + self.featureExtraProtect = None + # + # Type generation + def genType(self, typeinfo, name): + if (self.featureName == None): + raise UserWarning('Attempt to generate type', name, + 'when not in feature') + # + # Enumerant generation + def genEnum(self, enuminfo, name): + if (self.featureName == None): + raise UserWarning('Attempt to generate enum', name, + 'when not in feature') + # + # Command generation + def genCmd(self, cmd, name): + if (self.featureName == None): + raise UserWarning('Attempt to generate command', name, + 'when not in feature') + +# COutputGenerator - subclass of OutputGenerator. +# Generates C-language API interfaces. +# +# ---- methods ---- +# COutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# makeCDecls(cmd) - return C prototype and function pointer typedef for a +# Element, as a list of two strings +# cmd - Element for the +# newline() - print a newline to the output file (utility function) +# ---- methods overriding base class ---- +# beginFile(genOpts) +# endFile() +# beginFeature(interface, emit) +# endFeature() +# genType(typeinfo,name) - generate interface for a type +# genEnum(enuminfo, name) +# genCmd(cmdinfo) +class COutputGenerator(OutputGenerator): + """Generate specified API interfaces in a specific style, such as a C header""" + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + # Internal state - accumulators for different inner block text + self.typeBody = '' + self.enumBody = '' + self.cmdBody = '' + # + # makeCDecls - return C prototype and function pointer typedef for a + # command, as a two-element list of strings. + # cmd - Element containing a tag + def makeCDecls(self, cmd): + """Generate C function pointer typedef for Element""" + proto = cmd.find('proto') + params = cmd.findall('param') + # Begin accumulating prototype and typedef strings + pdecl = self.genOpts.apicall + tdecl = 'typedef ' + # + # Insert the function return type/name. + # For prototypes, add APIENTRY macro before the name + # For typedefs, add (APIENTRYP ) around the name and + # use the PFNGLCMDNAMEPROC nameng convention. + # Done by walking the tree for element by element. + # lxml.etree has elem.text followed by (elem[i], elem[i].tail) + # for each child element and any following text + # Leading text + pdecl += noneStr(proto.text) + tdecl += noneStr(proto.text) + # For each child element, if it's a wrap in appropriate + # declaration. Otherwise append its contents and tail contents. + for elem in proto: + text = noneStr(elem.text) + tail = noneStr(elem.tail) + if (elem.tag == 'name'): + pdecl += self.genOpts.apientry + text + tail + tdecl += '(' + self.genOpts.apientryp + 'PFN' + text.upper() + 'PROC' + tail + ')' + else: + pdecl += text + tail + tdecl += text + tail + # Now add the parameter declaration list, which is identical + # for prototypes and typedefs. Concatenate all the text from + # a node without the tags. No tree walking required + # since all tags are ignored. + n = len(params) + paramdecl = ' (' + if n > 0: + for i in range(0,n): + paramdecl += ''.join([t for t in params[i].itertext()]) + if (i < n - 1): + paramdecl += ', ' + else: + paramdecl += 'void' + paramdecl += ');\n'; + return [ pdecl + paramdecl, tdecl + paramdecl ] + # + def newline(self): + write('', file=self.outFile) + # + def beginFile(self, genOpts): + OutputGenerator.beginFile(self, genOpts) + # C-specific + # + # Multiple inclusion protection & C++ wrappers. + if (genOpts.protectFile and self.genOpts.filename): + headerSym = '__' + self.genOpts.apiname + '_' + re.sub('\.h', '_h_', os.path.basename(self.genOpts.filename)) + write('#ifndef', headerSym, file=self.outFile) + write('#define', headerSym, '1', file=self.outFile) + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('extern "C" {', file=self.outFile) + write('#endif', file=self.outFile) + self.newline() + # + # User-supplied prefix text, if any (list of strings) + if (genOpts.prefixText): + for s in genOpts.prefixText: + write(s, file=self.outFile) + # + # Some boilerplate describing what was generated - this + # will probably be removed later since the extensions + # pattern may be very long. + write('/* Generated C header for:', file=self.outFile) + write(' * API:', genOpts.apiname, file=self.outFile) + if (genOpts.profile): + write(' * Profile:', genOpts.profile, file=self.outFile) + write(' * Versions considered:', genOpts.versions, file=self.outFile) + write(' * Versions emitted:', genOpts.emitversions, file=self.outFile) + write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile) + write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile) + write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile) + write(' */', file=self.outFile) + def endFile(self): + # C-specific + # Finish C++ wrapper and multiple inclusion protection + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('}', file=self.outFile) + write('#endif', file=self.outFile) + if (self.genOpts.protectFile and self.genOpts.filename): + self.newline() + write('#endif', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFile(self) + def beginFeature(self, interface, emit): + # Start processing in superclass + OutputGenerator.beginFeature(self, interface, emit) + # C-specific + # Accumulate types, enums, function pointer typedefs, end function + # prototypes separately for this feature. They're only printed in + # endFeature(). + self.typeBody = '' + self.enumBody = '' + self.cmdPointerBody = '' + self.cmdBody = '' + def endFeature(self): + # C-specific + # Actually write the interface to the output file. + if (self.emit): + self.newline() + if (self.genOpts.protectFeature): + write('#ifndef', self.featureName, file=self.outFile) + write('#define', self.featureName, '1', file=self.outFile) + if (self.typeBody != ''): + write(self.typeBody, end='', file=self.outFile) + # + # Don't add additional protection for derived type declarations, + # which may be needed by other features later on. + if (self.featureExtraProtect != None): + write('#ifdef', self.featureExtraProtect, file=self.outFile) + if (self.enumBody != ''): + write(self.enumBody, end='', file=self.outFile) + if (self.genOpts.genFuncPointers and self.cmdPointerBody != ''): + write(self.cmdPointerBody, end='', file=self.outFile) + if (self.cmdBody != ''): + if (self.genOpts.protectProto == True): + prefix = '#ifdef ' + self.genOpts.protectProtoStr + '\n' + suffix = '#endif\n' + elif (self.genOpts.protectProto == 'nonzero'): + prefix = '#if ' + self.genOpts.protectProtoStr + '\n' + suffix = '#endif\n' + elif (self.genOpts.protectProto == False): + prefix = '' + suffix = '' + else: + self.gen.logMsg('warn', + '*** Unrecognized value for protectProto:', + self.genOpts.protectProto, + 'not generating prototype wrappers') + prefix = '' + suffix = '' + + write(prefix + self.cmdBody + suffix, end='', file=self.outFile) + if (self.featureExtraProtect != None): + write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile) + if (self.genOpts.protectFeature): + write('#endif /*', self.featureName, '*/', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFeature(self) + # + # Type generation + def genType(self, typeinfo, name): + OutputGenerator.genType(self, typeinfo, name) + # + # Replace tags with an APIENTRY-style string + # (from self.genOpts). Copy other text through unchanged. + # If the resulting text is an empty string, don't emit it. + typeElem = typeinfo.elem + s = noneStr(typeElem.text) + for elem in typeElem: + if (elem.tag == 'apientry'): + s += self.genOpts.apientry + noneStr(elem.tail) + else: + s += noneStr(elem.text) + noneStr(elem.tail) + if (len(s) > 0): + self.typeBody += s + '\n' + # + # Enumerant generation + def genEnum(self, enuminfo, name): + OutputGenerator.genEnum(self, enuminfo, name) + # + # EnumInfo.type is a C value suffix (e.g. u, ull) + self.enumBody += '#define ' + name.ljust(33) + ' ' + enuminfo.elem.get('value') + # + # Handle non-integer 'type' fields by using it as the C value suffix + t = enuminfo.elem.get('type') + if (t != '' and t != 'i'): + self.enumBody += enuminfo.type + self.enumBody += '\n' + # + # Command generation + def genCmd(self, cmdinfo, name): + OutputGenerator.genCmd(self, cmdinfo, name) + # + decls = self.makeCDecls(cmdinfo.elem) + self.cmdBody += decls[0] + if (self.genOpts.genFuncPointers): + self.cmdPointerBody += decls[1] + +# Registry - object representing an API registry, loaded from an XML file +# Members +# tree - ElementTree containing the root +# typedict - dictionary of TypeInfo objects keyed by type name +# groupdict - dictionary of GroupInfo objects keyed by group name +# enumdict - dictionary of EnumInfo objects keyed by enum name +# cmddict - dictionary of CmdInfo objects keyed by command name +# apidict - dictionary of Elements keyed by API name +# extensions - list of Elements +# extdict - dictionary of Elements keyed by extension name +# gen - OutputGenerator object used to write headers / messages +# genOpts - GeneratorOptions object used to control which +# fetures to write and how to format them +# emitFeatures - True to actually emit features for a version / extension, +# or False to just treat them as emitted +# Public methods +# loadElementTree(etree) - load registry from specified ElementTree +# loadFile(filename) - load registry from XML file +# setGenerator(gen) - OutputGenerator to use +# parseTree() - parse the registry once loaded & create dictionaries +# dumpReg(maxlen, filehandle) - diagnostic to dump the dictionaries +# to specified file handle (default stdout). Truncates type / +# enum / command elements to maxlen characters (default 80) +# generator(g) - specify the output generator object +# apiGen(apiname, genOpts) - generate API headers for the API type +# and profile specified in genOpts, but only for the versions and +# extensions specified there. +# apiReset() - call between calls to apiGen() to reset internal state +# validateGroups() - call to verify that each or +# with a 'group' attribute matches an actual existing group. +# Private methods +# addElementInfo(elem,info,infoName,dictionary) - add feature info to dict +# lookupElementInfo(fname,dictionary) - lookup feature info in dict +class Registry: + """Represents an API registry loaded from XML""" + def __init__(self): + self.tree = None + self.typedict = {} + self.groupdict = {} + self.enumdict = {} + self.cmddict = {} + self.apidict = {} + self.extensions = [] + self.extdict = {} + # A default output generator, so commands prior to apiGen can report + # errors via the generator object. + self.gen = OutputGenerator() + self.genOpts = None + self.emitFeatures = False + def loadElementTree(self, tree): + """Load ElementTree into a Registry object and parse it""" + self.tree = tree + self.parseTree() + def loadFile(self, file): + """Load an API registry XML file into a Registry object and parse it""" + self.tree = etree.parse(file) + self.parseTree() + def setGenerator(self, gen): + """Specify output generator object. None restores the default generator""" + self.gen = gen + # addElementInfo - add information about an element to the + # corresponding dictionary + # elem - ///// Element + # info - corresponding {Type|Group|Enum|Cmd|Feature}Info object + # infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' + # dictionary - self.{type|group|enum|cmd|api|ext}dict + # If the Element has an 'api' attribute, the dictionary key is the + # tuple (name,api). If not, the key is the name. 'name' is an + # attribute of the Element + def addElementInfo(self, elem, info, infoName, dictionary): + if ('api' in elem.attrib): + key = (elem.get('name'),elem.get('api')) + else: + key = elem.get('name') + if key in dictionary: + self.gen.logMsg('warn', '*** Attempt to redefine', + infoName, 'with key:', key) + else: + dictionary[key] = info + # + # lookupElementInfo - find a {Type|Enum|Cmd}Info object by name. + # If an object qualified by API name exists, use that. + # fname - name of type / enum / command + # dictionary - self.{type|enum|cmd}dict + def lookupElementInfo(self, fname, dictionary): + key = (fname, self.genOpts.apiname) + if (key in dictionary): + # self.gen.logMsg('diag', 'Found API-specific element for feature', fname) + return dictionary[key] + elif (fname in dictionary): + # self.gen.logMsg('diag', 'Found generic element for feature', fname) + return dictionary[fname] + else: + return None + def parseTree(self): + """Parse the registry Element, once created""" + # This must be the Element for the root + self.reg = self.tree.getroot() + # + # Create dictionary of registry types from toplevel tags + # and add 'name' attribute to each tag (where missing) + # based on its element. + # + # There's usually one block; more are OK + # Required attributes: 'name' or nested tag contents + self.typedict = {} + for type in self.reg.findall('types/type'): + # If the doesn't already have a 'name' attribute, set + # it from contents of its tag. + if (type.get('name') == None): + type.attrib['name'] = type.find('name').text + self.addElementInfo(type, TypeInfo(type), 'type', self.typedict) + # + # Create dictionary of registry groups from toplevel tags. + # + # There's usually one block; more are OK. + # Required attributes: 'name' + self.groupdict = {} + for group in self.reg.findall('groups/group'): + self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict) + # + # Create dictionary of registry enums from toplevel tags + # + # There are usually many tags in different namespaces, but + # these are functional namespaces of the values, while the actual + # enum names all share the dictionary. + # Required attributes: 'name', 'value' + self.enumdict = {} + for enum in self.reg.findall('enums/enum'): + self.addElementInfo(enum, EnumInfo(enum), 'enum', self.enumdict) + # + # Create dictionary of registry commands from tags + # and add 'name' attribute to each tag (where missing) + # based on its element. + # + # There's usually only one block; more are OK. + # Required attributes: 'name' or tag contents + self.cmddict = {} + for cmd in self.reg.findall('commands/command'): + # If the doesn't already have a 'name' attribute, set + # it from contents of its tag. + if (cmd.get('name') == None): + cmd.attrib['name'] = cmd.find('proto/name').text + ci = CmdInfo(cmd) + self.addElementInfo(cmd, ci, 'command', self.cmddict) + # + # Create dictionaries of API and extension interfaces + # from toplevel and tags. + # + self.apidict = {} + for feature in self.reg.findall('feature'): + ai = FeatureInfo(feature) + self.addElementInfo(feature, ai, 'feature', self.apidict) + self.extensions = self.reg.findall('extensions/extension') + self.extdict = {} + for feature in self.extensions: + ei = FeatureInfo(feature) + self.addElementInfo(feature, ei, 'extension', self.extdict) + def dumpReg(self, maxlen = 40, filehandle = sys.stdout): + """Dump all the dictionaries constructed from the Registry object""" + write('***************************************', file=filehandle) + write(' ** Dumping Registry contents **', file=filehandle) + write('***************************************', file=filehandle) + write('// Types', file=filehandle) + for name in self.typedict: + tobj = self.typedict[name] + write(' Type', name, '->', etree.tostring(tobj.elem)[0:maxlen], file=filehandle) + write('// Groups', file=filehandle) + for name in self.groupdict: + gobj = self.groupdict[name] + write(' Group', name, '->', etree.tostring(gobj.elem)[0:maxlen], file=filehandle) + write('// Enums', file=filehandle) + for name in self.enumdict: + eobj = self.enumdict[name] + write(' Enum', name, '->', etree.tostring(eobj.elem)[0:maxlen], file=filehandle) + write('// Commands', file=filehandle) + for name in self.cmddict: + cobj = self.cmddict[name] + write(' Command', name, '->', etree.tostring(cobj.elem)[0:maxlen], file=filehandle) + write('// APIs', file=filehandle) + for key in self.apidict: + write(' API Version ', key, '->', + etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle) + write('// Extensions', file=filehandle) + for key in self.extdict: + write(' Extension', key, '->', + etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle) + # write('***************************************', file=filehandle) + # write(' ** Dumping XML ElementTree **', file=filehandle) + # write('***************************************', file=filehandle) + # write(etree.tostring(self.tree.getroot(),pretty_print=True), file=filehandle) + # + # typename - name of type + # required - boolean (to tag features as required or not) + def markTypeRequired(self, typename, required): + """Require (along with its dependencies) or remove (but not its dependencies) a type""" + self.gen.logMsg('diag', '*** tagging type:', typename, '-> required =', required) + # Get TypeInfo object for tag corresponding to typename + type = self.lookupElementInfo(typename, self.typedict) + if (type != None): + # Tag required type dependencies as required. + # This DOES NOT un-tag dependencies in a tag. + # See comments in markRequired() below for the reason. + if (required and ('requires' in type.elem.attrib)): + depType = type.elem.get('requires') + self.gen.logMsg('diag', '*** Generating dependent type', + depType, 'for type', typename) + self.markTypeRequired(depType, required) + type.required = required + else: + self.gen.logMsg('warn', '*** type:', typename , 'IS NOT DEFINED') + # + # features - Element for or tag + # required - boolean (to tag features as required or not) + def markRequired(self, features, required): + """Require or remove features specified in the Element""" + self.gen.logMsg('diag', '*** markRequired (features = , required =', required, ')') + # Loop over types, enums, and commands in the tag + # @@ It would be possible to respect 'api' and 'profile' attributes + # in individual features, but that's not done yet. + for typeElem in features.findall('type'): + self.markTypeRequired(typeElem.get('name'), required) + for enumElem in features.findall('enum'): + name = enumElem.get('name') + self.gen.logMsg('diag', '*** tagging enum:', name, '-> required =', required) + enum = self.lookupElementInfo(name, self.enumdict) + if (enum != None): + enum.required = required + else: + self.gen.logMsg('warn', '*** enum:', name , 'IS NOT DEFINED') + for cmdElem in features.findall('command'): + name = cmdElem.get('name') + self.gen.logMsg('diag', '*** tagging command:', name, '-> required =', required) + cmd = self.lookupElementInfo(name, self.cmddict) + if (cmd != None): + cmd.required = required + # Tag all parameter types of this command as required. + # This DOES NOT remove types of commands in a + # tag, because many other commands may use the same type. + # We could be more clever and reference count types, + # instead of using a boolean. + if (required): + # Look for in entire tree, + # not just immediate children + for ptype in cmd.elem.findall('.//ptype'): + self.gen.logMsg('diag', '*** markRequired: command implicitly requires dependent type', ptype.text) + self.markTypeRequired(ptype.text, required) + else: + self.gen.logMsg('warn', '*** command:', name, 'IS NOT DEFINED') + # + # interface - Element for or , containing + # and tags + # api - string specifying API name being generated + # profile - string specifying API profile being generated + def requireAndRemoveFeatures(self, interface, api, profile): + """Process and tags for a or """ + # marks things that are required by this version/profile + for feature in interface.findall('require'): + if (matchAPIProfile(api, profile, feature)): + self.markRequired(feature,True) + # marks things that are removed by this version/profile + for feature in interface.findall('remove'): + if (matchAPIProfile(api, profile, feature)): + self.markRequired(feature,False) + # + # generateFeature - generate a single type / enum / command, + # and all its dependencies as needed. + # fname - name of feature (// + # ftype - type of feature, 'type' | 'enum' | 'command' + # dictionary - of *Info objects - self.{type|enum|cmd}dict + # genProc - bound function pointer for self.gen.gen{Type|Enum|Cmd} + def generateFeature(self, fname, ftype, dictionary, genProc): + f = self.lookupElementInfo(fname, dictionary) + if (f == None): + # No such feature. This is an error, but reported earlier + self.gen.logMsg('diag', '*** No entry found for feature', fname, + 'returning!') + return + # + # If feature isn't required, or has already been declared, return + if (not f.required): + self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(not required)') + return + if (f.declared): + self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(already declared)') + return + # + # Pull in dependent type declaration(s) of the feature. + # For types, there may be one in the 'required' attribute of the element + # For commands, there may be many in tags within the element + # For enums, no dependencies are allowed (though perhasps if you + # have a uint64 enum, it should require GLuint64) + if (ftype == 'type'): + if ('requires' in f.elem.attrib): + depname = f.elem.get('requires') + self.gen.logMsg('diag', '*** Generating required dependent type', + depname) + self.generateFeature(depname, 'type', self.typedict, + self.gen.genType) + elif (ftype == 'command'): + for ptype in f.elem.findall('.//ptype'): + depname = ptype.text + self.gen.logMsg('diag', '*** Generating required parameter type', + depname) + self.generateFeature(depname, 'type', self.typedict, + self.gen.genType) + # + # Actually generate the type only if emitting declarations + if self.emitFeatures: + self.gen.logMsg('diag', '*** Emitting', ftype, 'decl for', fname) + genProc(f, fname) + else: + self.gen.logMsg('diag', '*** Skipping', ftype, fname, + '(not emitting this feature)') + # Always mark feature declared, as though actually emitted + f.declared = True + # + # generateRequiredInterface - generate all interfaces required + # by an API version or extension + # interface - Element for or + def generateRequiredInterface(self, interface): + """Generate required C interface for specified API version/extension""" + # + # Loop over all features inside all tags. + # tags are ignored (handled in pass 1). + for features in interface.findall('require'): + for t in features.findall('type'): + self.generateFeature(t.get('name'), 'type', self.typedict, + self.gen.genType) + for e in features.findall('enum'): + self.generateFeature(e.get('name'), 'enum', self.enumdict, + self.gen.genEnum) + for c in features.findall('command'): + self.generateFeature(c.get('name'), 'command', self.cmddict, + self.gen.genCmd) + # + # apiGen(genOpts) - generate interface for specified versions + # genOpts - GeneratorOptions object with parameters used + # by the Generator object. + def apiGen(self, genOpts): + """Generate interfaces for the specified API type and range of versions""" + # + self.gen.logMsg('diag', '*******************************************') + self.gen.logMsg('diag', ' Registry.apiGen file:', genOpts.filename, + 'api:', genOpts.apiname, + 'profile:', genOpts.profile) + self.gen.logMsg('diag', '*******************************************') + # + self.genOpts = genOpts + # Reset required/declared flags for all features + self.apiReset() + # + # Compile regexps used to select versions & extensions + regVersions = re.compile(self.genOpts.versions) + regEmitVersions = re.compile(self.genOpts.emitversions) + regAddExtensions = re.compile(self.genOpts.addExtensions) + regRemoveExtensions = re.compile(self.genOpts.removeExtensions) + # + # Get all matching API versions & add to list of FeatureInfo + features = [] + apiMatch = False + for key in self.apidict: + fi = self.apidict[key] + api = fi.elem.get('api') + if (api == self.genOpts.apiname): + apiMatch = True + if (regVersions.match(fi.number)): + # Matches API & version #s being generated. Mark for + # emission and add to the features[] list . + # @@ Could use 'declared' instead of 'emit'? + fi.emit = (regEmitVersions.match(fi.number) != None) + features.append(fi) + if (not fi.emit): + self.gen.logMsg('diag', '*** NOT tagging feature api =', api, + 'name =', fi.name, 'number =', fi.number, + 'for emission (does not match emitversions pattern)') + else: + self.gen.logMsg('diag', '*** NOT including feature api =', api, + 'name =', fi.name, 'number =', fi.number, + '(does not match requested versions)') + else: + self.gen.logMsg('diag', '*** NOT including feature api =', api, + 'name =', fi.name, + '(does not match requested API)') + if (not apiMatch): + self.gen.logMsg('warn', '*** No matching API versions found!') + # + # Get all matching extensions & add to the list. + # Start with extensions tagged with 'api' pattern matching the API + # being generated. Add extensions matching the pattern specified in + # regExtensions, then remove extensions matching the pattern + # specified in regRemoveExtensions + for key in self.extdict: + ei = self.extdict[key] + extName = ei.name + include = False + # + # Include extension if defaultExtensions is not None and if the + # 'supported' attribute matches defaultExtensions. The regexp in + # 'supported' must exactly match defaultExtensions, so bracket + # it with ^(pat)$. + pat = '^(' + ei.elem.get('supported') + ')$' + if (self.genOpts.defaultExtensions and + re.match(pat, self.genOpts.defaultExtensions)): + self.gen.logMsg('diag', '*** Including extension', + extName, "(defaultExtensions matches the 'supported' attribute)") + include = True + # + # Include additional extensions if the extension name matches + # the regexp specified in the generator options. This allows + # forcing extensions into an interface even if they're not + # tagged appropriately in the registry. + if (regAddExtensions.match(extName) != None): + self.gen.logMsg('diag', '*** Including extension', + extName, '(matches explicitly requested extensions to add)') + include = True + # Remove extensions if the name matches the regexp specified + # in generator options. This allows forcing removal of + # extensions from an interface even if they're tagged that + # way in the registry. + if (regRemoveExtensions.match(extName) != None): + self.gen.logMsg('diag', '*** Removing extension', + extName, '(matches explicitly requested extensions to remove)') + include = False + # + # If the extension is to be included, add it to the + # extension features list. + if (include): + ei.emit = True + features.append(ei) + else: + self.gen.logMsg('diag', '*** NOT including extension', + extName, '(does not match api attribute or explicitly requested extensions)') + # + # Sort the extension features list, if a sort procedure is defined + if (self.genOpts.sortProcedure): + self.genOpts.sortProcedure(features) + # + # Pass 1: loop over requested API versions and extensions tagging + # types/commands/features as required (in an block) or no + # longer required (in an block). It is possible to remove + # a feature in one version and restore it later by requiring it in + # a later version. + # If a profile other than 'None' is being generated, it must + # match the profile attribute (if any) of the and + # tags. + self.gen.logMsg('diag', '*** PASS 1: TAG FEATURES ********************************************') + for f in features: + self.gen.logMsg('diag', '*** PASS 1: Tagging required and removed features for', + f.name) + self.requireAndRemoveFeatures(f.elem, self.genOpts.apiname, self.genOpts.profile) + # + # Pass 2: loop over specified API versions and extensions printing + # declarations for required things which haven't already been + # generated. + self.gen.logMsg('diag', '*** PASS 2: GENERATE INTERFACES FOR FEATURES ************************') + self.gen.beginFile(self.genOpts) + for f in features: + self.gen.logMsg('diag', '*** PASS 2: Generating interface for', + f.name) + emit = self.emitFeatures = f.emit + if (not emit): + self.gen.logMsg('diag', '*** PASS 2: NOT declaring feature', + f.elem.get('name'), 'because it is not tagged for emission') + # Generate the interface (or just tag its elements as having been + # emitted, if they haven't been). + self.gen.beginFeature(f.elem, emit) + self.generateRequiredInterface(f.elem) + self.gen.endFeature() + self.gen.endFile() + # + # apiReset - use between apiGen() calls to reset internal state + # + def apiReset(self): + """Reset type/enum/command dictionaries before generating another API""" + for type in self.typedict: + self.typedict[type].resetState() + for enum in self.enumdict: + self.enumdict[enum].resetState() + for cmd in self.cmddict: + self.cmddict[cmd].resetState() + for cmd in self.apidict: + self.apidict[cmd].resetState() + # + # validateGroups - check that group= attributes match actual groups + # + def validateGroups(self): + """Validate group= attributes on and tags""" + # Keep track of group names not in tags + badGroup = {} + self.gen.logMsg('diag', '*** VALIDATING GROUP ATTRIBUTES ***') + for cmd in self.reg.findall('commands/command'): + proto = cmd.find('proto') + funcname = cmd.find('proto/name').text + if ('group' in proto.attrib.keys()): + group = proto.get('group') + # self.gen.logMsg('diag', '*** Command ', funcname, ' has return group ', group) + if (group not in self.groupdict.keys()): + # self.gen.logMsg('diag', '*** Command ', funcname, ' has UNKNOWN return group ', group) + if (group not in badGroup.keys()): + badGroup[group] = 1 + else: + badGroup[group] = badGroup[group] + 1 + for param in cmd.findall('param'): + pname = param.find('name') + if (pname != None): + pname = pname.text + else: + pname = type.get('name') + if ('group' in param.attrib.keys()): + group = param.get('group') + if (group not in self.groupdict.keys()): + # self.gen.logMsg('diag', '*** Command ', funcname, ' param ', pname, ' has UNKNOWN group ', group) + if (group not in badGroup.keys()): + badGroup[group] = 1 + else: + badGroup[group] = badGroup[group] + 1 + if (len(badGroup.keys()) > 0): + self.gen.logMsg('diag', '*** SUMMARY OF UNRECOGNIZED GROUPS ***') + for key in sorted(badGroup.keys()): + self.gen.logMsg('diag', ' ', key, ' occurred ', badGroup[key], ' times') diff --git a/StgSharp.GenerateGL/xml/registry.rnc b/StgSharp.GenerateGL/xml/registry.rnc new file mode 100644 index 00000000..b37ef667 --- /dev/null +++ b/StgSharp.GenerateGL/xml/registry.rnc @@ -0,0 +1,289 @@ +# Copyright 2013-2020 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +# Relax NG schema for Khronos Registry XML +# See https://github.com/KhronosGroup/OpenGL-Registry +# +# Last modified 2013/06/14 +# This definition is subject to change (mostly in the form of additions) + +namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes" + +# Toplevel is a tag. +# May be led by an optional tag containing e.g. copyrights. +start = element registry { + ( + element comment { text } ? | + Types * | + Kinds * | + Groups * | + Enums * | + Commands * | + Feature * | + Extensions * + ) * +} + +# defines a group of types +Types = element types { + Type * +} + +# defines a single type. It is usually a C typedef but +# may contain arbitrary C code. +# name - name of this type, if not present in the tag +# api - matches a api attribute, if present +# requires - name of another type definition required by this one +# type - "group", if present, indicating a group of values in the +# corresponding definition. +# comment - unused +# - substitutes for an APIENTRY-style macro on output +# - contains typename +Type = element type { + attribute api { text } ? , + attribute requires { text } ? , + attribute name { TypeName } ? , + attribute type { text } ? , + Comment ? , + text , + element apientry { text } ? , + text , + element name { TypeName } ? , + text +} + +# defines descriptions for kinds. +Kinds = element kinds { + Kind * +} + +# defines a description for a single kind. +Kind = element kind { + Name , + attribute desc { text } +} + +# defines a group of enum groups +Groups = element groups { + Group * +} + +# defines a single enum group. Enums may +# be in multiple groups. +# name - group name +# comment - unused +# - members of the group + +Group = element group { + Name , + Comment ? , + element enum { Name } * +} + +# defines a group of enumerants +# namespace - identifies a numeric namespace +# group - identifies a functional subset of the namespace - same as group="" +# start, end - beginning and end of a numeric range in the namespace +# vendor - owner of the numeric range +# type - "bitmask", if present +# comment - unused +Enums = element enums { + attribute namespace { text } ? , + attribute group { text } ? , + attribute type { text } ? , + attribute start { Integer } ? , + attribute end { Integer } ? , + Vendor ? , + Comment ? , + (Enum | Unused) * +} +# defines a single enumerant +# value - integer (including hex) value of the enumerant +# api - matches a api attribute, if present +# type - "u" (unsigned), "ull" (uint64), or integer if not present +# name - enumerant name +# group - identifies a functional subset of the namespace +# alias - another enumerant this is semantically identical to +# comment - unused +Enum = element enum { + ( + attribute value { Integer } & + attribute api { text } ? & + attribute type { TypeSuffix } ? & + attribute name { text } & + attribute group { text } ? & + attribute alias { text } ? & + Comment ? + ) +} +# defines a range of enumerants not currently being used +# start, end - beginning and end of an unused numeric range +# vendor - unused +# comment - unused +Unused = element unused { + attribute start { Integer } , + attribute end { Integer } ? , + Vendor ? , + Comment ? +} +# defines a group of commands +# namespace - identifies a function namespace +Commands = element commands { + attribute namespace { text } ? , + Command * +} +# defines a single command +# is the C function prototype, including the return type +# are function parameters, in order +# class - type of object name (object handle). Handles with different types are not compatible. So handle created as [class=buffer] can not be passed to [class=shader] +# is a name, if present +# is the function / parameter name +# The textual contents of and should be legal C +# for those parts of a function declaration. +# - denotes function aliasing +# name - name of aliased function +# - denotes scalar / vector function equivalence +# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv) +# - information about GLX protocol +# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply} +# opcode - numeric opcode of specified type for this function +# name - if present, protocol name (defaults to command name) +# comment - unused +Command = element command { + Comment ? , + element proto { + attribute group { text } ? , + attribute kind { text } ? , + attribute class { text } ? , + text , + element ptype { TypeName } ? , + text , + element name { text } , + text + } , + element param { + attribute group { text } ? , + attribute kind { text } ? , + attribute class { text } ? , + attribute len { text } ? , + text , + element ptype { TypeName } ? , + text , + element name { text } , + text + } * , + ( + element alias { + Name + } ? & + element vecequiv { + Name + } ? & + element glx { + attribute type { text } , + attribute opcode { xsd:integer } , + Name ? , + Comment ? + } * + ) +} +# Each defines the interface of an API version (e.g. OpenGL 1.2) +# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not +# neccessarily an actual API name +# name - version name (C preprocessor name, e.g. GL_VERSION_4_2) +# number - version number, e.g. 4.2 +# protect - additional #ifdef symbol to place around the feature +# / contains features to require or remove in +# this version +# profile - only require/remove when generated profile matches +# comment - unused +Feature = element feature { + attribute api { text } , + Name , + attribute number { xsd:float } , + attribute protect { text } ?, + Comment ? , + ( + element require { + ProfileName ? , + Comment ? , + InterfaceElement * + } | + element remove { + ProfileName ? , + Comment ? , + InterfaceElement * + } + ) * +} +Extensions = element extensions { + Extension * +} +# Defines the interface of an API . Like a +# tag, but with a slightly different api attribute. +# api - regexp pattern matching one or more API tags, indicating +# which APIs the extension is known to work with. The only +# syntax supported is {|}* and each name must +# exactly match an API being generated (implicit ^$ surrounding). +# In addition, / tags also support an +# api attribute: +# api - only require/remove these features for the matching API. +# Not a regular expression. +Extension = element extension { + Name , + attribute protect { text } ?, + attribute supported { StringGroup } ? , + Comment ? , + ( + element require { + attribute api { text } ? , + ProfileName ? , + Comment ? , + InterfaceElement * + } | + element remove { + attribute api { text } ? , + ProfileName ? , + Comment ? , + InterfaceElement * + } + ) * +} +# Contents of a / tag, defining a group +# of features to require or remove. +# / / all have attributes +# name - feature name which must match +InterfaceElement = + element type { + Name , + Comment ? + } | + element enum { + Name , + Comment ? + } | + element command { + Name , + Comment ? + } + +# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but +# XML Schema types don't seem to support hex notation, so we use this +# as a placeholder. +Integer = text + +# TypeName is an argument/return value C type name +TypeName = text + +# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull' +TypeSuffix = text + +# StringGroup is a regular expression with an implicit +# '^(' and ')$' bracketing it. +StringGroup = text + +# Repeatedly used attributes +ProfileName = attribute profile { text } +Vendor = attribute vendor { text } +Comment = attribute comment { text } +Name = attribute name { text } diff --git a/StgSharp.GenerateGL/xml/testesext.c b/StgSharp.GenerateGL/xml/testesext.c new file mode 100644 index 00000000..8f1f2369 --- /dev/null +++ b/StgSharp.GenerateGL/xml/testesext.c @@ -0,0 +1,14 @@ +/*% cc -I. -I../api -I../../../../../registry/trunk/egl/api/ -c % ; rm testesext.o + * + * Test to make sure gl3.h builds properly. + * Will also use SVN internal versions of gl3platform.h + * and khrplatform.h (if needed) (via GLES and KHR symlinks into + * appropriate parts of the tree). + */ +#define GL_GLEXT_PROTOTYPES +#include "GLES3/gl31.h" +#include "GLES2/gl2ext.h" + +#if GL_NV_non_square_matrices != 1 +#error "No extension GL_NV_non_square_matrices!" +#endif diff --git a/StgSharp.GenerateGL/xml/testglext.c b/StgSharp.GenerateGL/xml/testglext.c new file mode 100644 index 00000000..aebf9282 --- /dev/null +++ b/StgSharp.GenerateGL/xml/testglext.c @@ -0,0 +1,27 @@ +/*% /lib/cpp -I../api testglext.c > testglext.i ; cc -c % ; rm testglext.[oi] +*/ +#define GL_GLEXT_LEGACY +#include +#define GL_GLEXT_PROTOTYPES +#include "GL/glext.h" + +#define GLX_GLXEXT_LEGACY +#include + +/* Necessary to avoid token redefinition warnings */ +#undef GLX_SAMPLE_BUFFERS +#undef GLX_SAMPLES +#undef GLX_FRONT_EXT +#undef GLX_BACK_EXT + +#define GLX_GLXEXT_PROTOTYPES +#include "GL/glxext.h" + +int VERSION_4_3 = GL_VERSION_4_3; +/* These should be the same */ +int mcsor = GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES; +int mciufo = GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS; + +/* See if latest extension is included */ +int latest_ext = GL_NV_blend_equation_advanced; +GLenum latest_enum = GL_CONJOINT_NV; diff --git a/StgSharp.GenerateGL/xml/vendors.txt b/StgSharp.GenerateGL/xml/vendors.txt new file mode 100644 index 00000000..7cccf7fe --- /dev/null +++ b/StgSharp.GenerateGL/xml/vendors.txt @@ -0,0 +1,58 @@ +Miscellaneous data about extensions: + + - GLU enumerant reserved values + - Information about extension vendors (probably out of date and incomplete) + +GLU Enumerants +============== + +Value Range Definition Contact + Control (if different) + +100208 SGI + + +Definition Contact Email +Control +========== ======= ===== +OpenGL ARB Jon Leech jon 'at' alumni.caltech.edu +Khronos Jon Leech jon 'at' alumni.caltech.edu (OpenML, OpenGL ES) +Apple Bob Beretta beretta 'at' apple.com +ARM Tom Olson tom.olson 'at' arm.com +AMD and ATI Graham Sellers graham.sellers 'at' amd.com +ATI/NVIDIA Graham Sellers graham.sellers 'at' amd.com +Broadcom Gary Sweet gsweet 'at' broadcom.com +HP Andrew Wiltzius andrew.wiltzius 'at' hp.com +Imagination Graham Connor gconnor 'at' videologic.com +Intel Ian Romanick ian.d.romanick 'at' intel.com +Mesa Brian Paul brianp 'at' mesa3d.org +Microsoft Dave Aronson daronson 'at' microsoft.com +NEC Seiji Uchida uchida 'at' hpc.bs1.fc.nec.co.jp +NVIDIA James Jones jajones 'at' nvidia.com +S3 Yanjun Zhang YanjunZhang 'at' s3graphics.com +Vivante Frido Garritsen TBD +Samsung Jeff Vigil j.vigil 'at' samsung.com +Qualcomm Ashish Mathur asmathur@qti.qualcomm.com + +Out of business / acquired / unknown: + +3Dfx - Acquired by NVIDIA +3Dlabs - Acquired by Creative, refocused on mobile, renamed ZiiLabs +ADD - Out of business +ATI - Acquired by AMD +Compaq - Acquired by HP +DEC - Acquired by Compaq, then HP +E&S - No longer in the graphics business (sells planetarium displays) +HP - No longer in the graphics business (other than as a system integrator) +IBM - No longer in the graphics business (other than as a system integrator) +Intense3D - Acquired by 3Dlabs +Intergraph - Acquired by 3Dlabs. Spinoff of Intense3D. +Micron - No longer in the graphics business +KPC (Kubota) - Out of business +PGI (Pacific Graphics Inc.) - Acquired by Template Graphics Systems +Pixelfusion - No longer in the graphics business +Rendition - Acquired by Micron +SGI (Silicon Graphics Inc.) - Acquired by Silicon Graphics International, then HP +SUN - Acquired by Oracle. No longer in the graphics business. +XGI - Acquired by Silicon Integrated Systems. No longer in the graphics business. +ZiiLabs - Still has a website but appears to be inactive as of 2017-01-12. diff --git a/StgSharp.GenerateGL/xml/wgl.xml b/StgSharp.GenerateGL/xml/wgl.xml new file mode 100644 index 00000000..3310cd57 --- /dev/null +++ b/StgSharp.GenerateGL/xml/wgl.xml @@ -0,0 +1,1988 @@ + + + +Copyright 2013-2025 The Khronos Group Inc. +SPDX-License-Identifier: Apache-2.0 + +This file, wgl.xml, is the WGL API Registry. The canonical version of the +registry, together with documentation, schema, and Python generator scripts +used to generate C header files for WGL, can always be found in the Khronos +Registry at https://github.com/KhronosGroup/OpenGL-Registry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + int ChoosePixelFormat + HDC hDc + const PIXELFORMATDESCRIPTOR *pPfd + + + int DescribePixelFormat + HDC hdc + int ipfd + UINT cjpfd + PIXELFORMATDESCRIPTOR *ppfd + + + int GetPixelFormat + HDC hdc + + + BOOL SetPixelFormat + HDC hdc + int ipfd + const PIXELFORMATDESCRIPTOR *ppfd + + + BOOL SwapBuffers + HDC hdc + + + void *wglAllocateMemoryNV + GLsizei size + GLfloat readfreq + GLfloat writefreq + GLfloat priority + + + BOOL wglAssociateImageBufferEventsI3D + HDC hDC + const HANDLE *pEvent + const LPVOID *pAddress + const DWORD *pSize + UINT count + + + BOOL wglBeginFrameTrackingI3D + + + GLboolean wglBindDisplayColorTableEXT + GLushort id + + + BOOL wglBindSwapBarrierNV + GLuint group + GLuint barrier + + + BOOL wglBindTexImageARB + HPBUFFERARB hPbuffer + int iBuffer + + + BOOL wglBindVideoCaptureDeviceNV + UINT uVideoSlot + HVIDEOINPUTDEVICENV hDevice + + + BOOL wglBindVideoDeviceNV + HDC hDc + unsigned int uVideoSlot + HVIDEOOUTPUTDEVICENV hVideoDevice + const int *piAttribList + + + BOOL wglBindVideoImageNV + HPVIDEODEV hVideoDevice + HPBUFFERARB hPbuffer + int iVideoBuffer + + + VOID wglBlitContextFramebufferAMD + HGLRC dstCtx + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + BOOL wglChoosePixelFormatARB + HDC hdc + const int *piAttribIList + const FLOAT *pfAttribFList + UINT nMaxFormats + int *piFormats + UINT *nNumFormats + + + BOOL wglChoosePixelFormatEXT + HDC hdc + const int *piAttribIList + const FLOAT *pfAttribFList + UINT nMaxFormats + int *piFormats + UINT *nNumFormats + + + BOOL wglCopyContext + HGLRC hglrcSrc + HGLRC hglrcDst + UINT mask + + + BOOL wglCopyImageSubDataNV + 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 + + + HDC wglCreateAffinityDCNV + const HGPUNV *phGpuList + + + HGLRC wglCreateAssociatedContextAMD + UINT id + + + HGLRC wglCreateAssociatedContextAttribsAMD + UINT id + HGLRC hShareContext + const int *attribList + + + HANDLE wglCreateBufferRegionARB + HDC hDC + int iLayerPlane + UINT uType + + + HGLRC wglCreateContext + HDC hDc + + + HGLRC wglCreateContextAttribsARB + HDC hDC + HGLRC hShareContext + const int *attribList + + + GLboolean wglCreateDisplayColorTableEXT + GLushort id + + + LPVOID wglCreateImageBufferI3D + HDC hDC + DWORD dwSize + UINT uFlags + + + HGLRC wglCreateLayerContext + HDC hDc + int level + + + HPBUFFERARB wglCreatePbufferARB + HDC hDC + int iPixelFormat + int iWidth + int iHeight + const int *piAttribList + + + HPBUFFEREXT wglCreatePbufferEXT + HDC hDC + int iPixelFormat + int iWidth + int iHeight + const int *piAttribList + + + BOOL wglDelayBeforeSwapNV + HDC hDC + GLfloat seconds + + + BOOL wglDeleteAssociatedContextAMD + HGLRC hglrc + + + VOID wglDeleteBufferRegionARB + HANDLE hRegion + + + BOOL wglDeleteContext + HGLRC oldContext + + + BOOL wglDeleteDCNV + HDC hdc + + + BOOL wglDescribeLayerPlane + HDC hDc + int pixelFormat + int layerPlane + UINT nBytes + LAYERPLANEDESCRIPTOR *plpd + + + VOID wglDestroyDisplayColorTableEXT + GLushort id + + + BOOL wglDestroyImageBufferI3D + HDC hDC + LPVOID pAddress + + + BOOL wglDestroyPbufferARB + HPBUFFERARB hPbuffer + + + BOOL wglDestroyPbufferEXT + HPBUFFEREXT hPbuffer + + + BOOL wglDisableFrameLockI3D + + + BOOL wglDisableGenlockI3D + HDC hDC + + + BOOL wglDXCloseDeviceNV + HANDLE hDevice + + + BOOL wglDXLockObjectsNV + HANDLE hDevice + GLint count + HANDLE *hObjects + + + BOOL wglDXObjectAccessNV + HANDLE hObject + GLenum access + + + HANDLE wglDXOpenDeviceNV + void *dxDevice + + + HANDLE wglDXRegisterObjectNV + HANDLE hDevice + void *dxObject + GLuint name + GLenum type + GLenum access + + + BOOL wglDXSetResourceShareHandleNV + void *dxObject + HANDLE shareHandle + + + BOOL wglDXUnlockObjectsNV + HANDLE hDevice + GLint count + HANDLE *hObjects + + + BOOL wglDXUnregisterObjectNV + HANDLE hDevice + HANDLE hObject + + + BOOL wglEnableFrameLockI3D + + + BOOL wglEnableGenlockI3D + HDC hDC + + + BOOL wglEndFrameTrackingI3D + + + UINT wglEnumerateVideoCaptureDevicesNV + HDC hDc + HVIDEOINPUTDEVICENV *phDeviceList + + + int wglEnumerateVideoDevicesNV + HDC hDc + HVIDEOOUTPUTDEVICENV *phDeviceList + + + BOOL wglEnumGpuDevicesNV + HGPUNV hGpu + UINT iDeviceIndex + PGPU_DEVICE lpGpuDevice + + + BOOL wglEnumGpusFromAffinityDCNV + HDC hAffinityDC + UINT iGpuIndex + HGPUNV *hGpu + + + BOOL wglEnumGpusNV + UINT iGpuIndex + HGPUNV *phGpu + + + void wglFreeMemoryNV + void *pointer + + + BOOL wglGenlockSampleRateI3D + HDC hDC + UINT uRate + + + BOOL wglGenlockSourceDelayI3D + HDC hDC + UINT uDelay + + + BOOL wglGenlockSourceEdgeI3D + HDC hDC + UINT uEdge + + + BOOL wglGenlockSourceI3D + HDC hDC + UINT uSource + + + UINT wglGetContextGPUIDAMD + HGLRC hglrc + + + HGLRC wglGetCurrentAssociatedContextAMD + + + HGLRC wglGetCurrentContext + + + HDC wglGetCurrentDC + + + HDC wglGetCurrentReadDCARB + + + HDC wglGetCurrentReadDCEXT + + + PROC wglGetDefaultProcAddress + LPCSTR lpszProc + + + BOOL wglGetDigitalVideoParametersI3D + HDC hDC + int iAttribute + int *piValue + + + UINT GetEnhMetaFilePixelFormat + HENHMETAFILE hemf + UINT cbBuffer + PIXELFORMATDESCRIPTOR *ppfd + + + const char *wglGetExtensionsStringARB + HDC hdc + + + const char *wglGetExtensionsStringEXT + + + BOOL wglGetFrameUsageI3D + float *pUsage + + + BOOL wglGetGammaTableI3D + HDC hDC + int iEntries + USHORT *puRed + USHORT *puGreen + USHORT *puBlue + + + BOOL wglGetGammaTableParametersI3D + HDC hDC + int iAttribute + int *piValue + + + BOOL wglGetGenlockSampleRateI3D + HDC hDC + UINT *uRate + + + BOOL wglGetGenlockSourceDelayI3D + HDC hDC + UINT *uDelay + + + BOOL wglGetGenlockSourceEdgeI3D + HDC hDC + UINT *uEdge + + + BOOL wglGetGenlockSourceI3D + HDC hDC + UINT *uSource + + + UINT wglGetGPUIDsAMD + UINT maxCount + UINT *ids + + + INT wglGetGPUInfoAMD + UINT id + INT property + GLenum dataType + UINT size + void *data + + + int wglGetLayerPaletteEntries + HDC hdc + int iLayerPlane + int iStart + int cEntries + COLORREF *pcr + + + BOOL wglGetMscRateOML + HDC hdc + INT32 *numerator + INT32 *denominator + + + HDC wglGetPbufferDCARB + HPBUFFERARB hPbuffer + + + HDC wglGetPbufferDCEXT + HPBUFFEREXT hPbuffer + + + BOOL wglGetPixelFormatAttribfvARB + HDC hdc + int iPixelFormat + int iLayerPlane + UINT nAttributes + const int *piAttributes + FLOAT *pfValues + + + BOOL wglGetPixelFormatAttribfvEXT + HDC hdc + int iPixelFormat + int iLayerPlane + UINT nAttributes + int *piAttributes + FLOAT *pfValues + + + BOOL wglGetPixelFormatAttribivARB + HDC hdc + int iPixelFormat + int iLayerPlane + UINT nAttributes + const int *piAttributes + int *piValues + + + BOOL wglGetPixelFormatAttribivEXT + HDC hdc + int iPixelFormat + int iLayerPlane + UINT nAttributes + int *piAttributes + int *piValues + + + PROC wglGetProcAddress + LPCSTR lpszProc + + + int wglGetSwapIntervalEXT + + + BOOL wglGetSyncValuesOML + HDC hdc + INT64 *ust + INT64 *msc + INT64 *sbc + + + BOOL wglGetVideoDeviceNV + HDC hDC + int numDevices + HPVIDEODEV *hVideoDevice + + + BOOL wglGetVideoInfoNV + HPVIDEODEV hpVideoDevice + unsigned long *pulCounterOutputPbuffer + unsigned long *pulCounterOutputVideo + + + BOOL wglIsEnabledFrameLockI3D + BOOL *pFlag + + + BOOL wglIsEnabledGenlockI3D + HDC hDC + BOOL *pFlag + + + BOOL wglJoinSwapGroupNV + HDC hDC + GLuint group + + + GLboolean wglLoadDisplayColorTableEXT + const GLushort *table + GLuint length + + + BOOL wglLockVideoCaptureDeviceNV + HDC hDc + HVIDEOINPUTDEVICENV hDevice + + + BOOL wglMakeAssociatedContextCurrentAMD + HGLRC hglrc + + + BOOL wglMakeContextCurrentARB + HDC hDrawDC + HDC hReadDC + HGLRC hglrc + + + BOOL wglMakeContextCurrentEXT + HDC hDrawDC + HDC hReadDC + HGLRC hglrc + + + BOOL wglMakeCurrent + HDC hDc + HGLRC newContext + + + BOOL wglQueryCurrentContextNV + int iAttribute + int *piValue + + + BOOL wglQueryFrameCountNV + HDC hDC + GLuint *count + + + BOOL wglQueryFrameLockMasterI3D + BOOL *pFlag + + + BOOL wglQueryFrameTrackingI3D + DWORD *pFrameCount + DWORD *pMissedFrames + float *pLastMissedUsage + + + BOOL wglQueryGenlockMaxSourceDelayI3D + HDC hDC + UINT *uMaxLineDelay + UINT *uMaxPixelDelay + + + BOOL wglQueryMaxSwapGroupsNV + HDC hDC + GLuint *maxGroups + GLuint *maxBarriers + + + BOOL wglQueryPbufferARB + HPBUFFERARB hPbuffer + int iAttribute + int *piValue + + + BOOL wglQueryPbufferEXT + HPBUFFEREXT hPbuffer + int iAttribute + int *piValue + + + BOOL wglQuerySwapGroupNV + HDC hDC + GLuint *group + GLuint *barrier + + + BOOL wglQueryVideoCaptureDeviceNV + HDC hDc + HVIDEOINPUTDEVICENV hDevice + int iAttribute + int *piValue + + + BOOL wglRealizeLayerPalette + HDC hdc + int iLayerPlane + BOOL bRealize + + + BOOL wglReleaseImageBufferEventsI3D + HDC hDC + const LPVOID *pAddress + UINT count + + + int wglReleasePbufferDCARB + HPBUFFERARB hPbuffer + HDC hDC + + + int wglReleasePbufferDCEXT + HPBUFFEREXT hPbuffer + HDC hDC + + + BOOL wglReleaseTexImageARB + HPBUFFERARB hPbuffer + int iBuffer + + + BOOL wglReleaseVideoCaptureDeviceNV + HDC hDc + HVIDEOINPUTDEVICENV hDevice + + + BOOL wglReleaseVideoDeviceNV + HPVIDEODEV hVideoDevice + + + BOOL wglReleaseVideoImageNV + HPBUFFERARB hPbuffer + int iVideoBuffer + + + BOOL wglResetFrameCountNV + HDC hDC + + + BOOL wglRestoreBufferRegionARB + HANDLE hRegion + int x + int y + int width + int height + int xSrc + int ySrc + + + BOOL wglSaveBufferRegionARB + HANDLE hRegion + int x + int y + int width + int height + + + BOOL wglSendPbufferToVideoNV + HPBUFFERARB hPbuffer + int iBufferType + unsigned long *pulCounterPbuffer + BOOL bBlock + + + BOOL wglSetDigitalVideoParametersI3D + HDC hDC + int iAttribute + const int *piValue + + + BOOL wglSetGammaTableI3D + HDC hDC + int iEntries + const USHORT *puRed + const USHORT *puGreen + const USHORT *puBlue + + + BOOL wglSetGammaTableParametersI3D + HDC hDC + int iAttribute + const int *piValue + + + int wglSetLayerPaletteEntries + HDC hdc + int iLayerPlane + int iStart + int cEntries + const COLORREF *pcr + + + BOOL wglSetPbufferAttribARB + HPBUFFERARB hPbuffer + const int *piAttribList + + + BOOL wglSetStereoEmitterState3DL + HDC hDC + UINT uState + + + BOOL wglShareLists + HGLRC hrcSrvShare + HGLRC hrcSrvSource + + + INT64 wglSwapBuffersMscOML + HDC hdc + INT64 target_msc + INT64 divisor + INT64 remainder + + + BOOL wglSwapLayerBuffers + HDC hdc + UINT fuFlags + + + BOOL wglSwapIntervalEXT + int interval + + + INT64 wglSwapLayerBuffersMscOML + HDC hdc + INT fuPlanes + INT64 target_msc + INT64 divisor + INT64 remainder + + + BOOL wglUseFontBitmaps + HDC hDC + DWORD first + DWORD count + DWORD listBase + + + BOOL wglUseFontBitmapsA + HDC hDC + DWORD first + DWORD count + DWORD listBase + + + BOOL wglUseFontBitmapsW + HDC hDC + DWORD first + DWORD count + DWORD listBase + + + BOOL wglUseFontOutlines + HDC hDC + DWORD first + DWORD count + DWORD listBase + FLOAT deviation + FLOAT extrusion + int format + LPGLYPHMETRICSFLOAT lpgmf + + + BOOL wglUseFontOutlinesA + HDC hDC + DWORD first + DWORD count + DWORD listBase + FLOAT deviation + FLOAT extrusion + int format + LPGLYPHMETRICSFLOAT lpgmf + + + BOOL wglUseFontOutlinesW + HDC hDC + DWORD first + DWORD count + DWORD listBase + FLOAT deviation + FLOAT extrusion + int format + LPGLYPHMETRICSFLOAT lpgmf + + + BOOL wglWaitForMscOML + HDC hdc + INT64 target_msc + INT64 divisor + INT64 remainder + INT64 *ust + INT64 *msc + INT64 *sbc + + + BOOL wglWaitForSbcOML + HDC hdc + INT64 target_sbc + INT64 *ust + INT64 *msc + INT64 *sbc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StgSharp.GenerateGL/xml/wgltypes.txt b/StgSharp.GenerateGL/xml/wgltypes.txt new file mode 100644 index 00000000..aab86a9d --- /dev/null +++ b/StgSharp.GenerateGL/xml/wgltypes.txt @@ -0,0 +1,106 @@ + struct _POINTFLOAT { + FLOAT x; + FLOAT y; +}; + typedef struct _POINTFLOAT POINTFLOAT; + typedef struct _POINTFLOAT *PPOINTFLOAT; + struct _GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +}; + typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT; + typedef struct _GLYPHMETRICSFLOAT *PGLYPHMETRICSFLOAT; + +typedef struct tagPIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; +} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR; + +PFD_DRAW_TO_WINDOW The buffer can draw to a window or device surface. +PFD_DRAW_TO_BITMAP The buffer can draw to a memory bitmap. +PFD_SUPPORT_GDI The buffer supports GDI drawing. This flag and PFD_DOUBLEBUFFER are mutually exclusive in the current generic implementation. +PFD_SUPPORT_OPENGL The buffer supports OpenGL drawing. +PFD_GENERIC_ACCELERATED The pixel format is supported by a device driver that accelerates the generic implementation. If this flag is clear and the PFD_GENERIC_FORMAT flag is set, the pixel format is supported by the generic implementation only. +PFD_GENERIC_FORMAT The pixel format is supported by the GDI software implementation, which is also known as the generic implementation. If this bit is clear, the pixel format is supported by a device driver or hardware. +PFD_NEED_PALETTE The buffer uses RGBA pixels on a palette-managed device. A logical palette is required to achieve the best results for this pixel type. Colors in the palette should be specified according to the values of the cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, and cBlueShift members. The palette should be created and realized in the device context before calling wglMakeCurrent. +PFD_NEED_SYSTEM_PALETTE Defined in the pixel format descriptors of hardware that supports one hardware palette in 256-color mode only. For such systems to use hardware acceleration, the hardware palette must be in a fixed order (for example, 3-3-2) when in RGBA mode or must match the logical palette when in color-index mode. +PFD_DOUBLEBUFFER The buffer is double-buffered. This flag and PFD_SUPPORT_GDI are mutually exclusive in the current generic implementation. +PFD_STEREO The buffer is stereoscopic. This flag is not supported in the current generic implementation. +PFD_SWAP_LAYER_BUFFERS Indicates whether a device can swap individual layer planes with pixel formats that include double-buffered overlay or underlay planes. Otherwise all layer planes are swapped together as a group. When this flag is set, wglSwapLayerBuffers is supported. +PFD_DEPTH_DONTCARE The requested pixel format can either have or not have a depth buffer. To select a pixel format without a depth buffer, you must specify this flag. The requested pixel format can be with or without a depth buffer. Otherwise, only pixel formats with a depth buffer are considered. +PFD_DOUBLEBUFFER_DONTCARE The requested pixel format can be either single- or double-buffered. +PFD_STEREO_DONTCARE The requested pixel format can be either monoscopic or stereoscopic. +PFD_SWAP_COPY Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the content of the back buffer to be copied to the front buffer. The content of the back buffer is not affected by the swap. PFD_SWAP_COPY is a hint only and might not be provided by a driver. +PFD_SWAP_EXCHANGE Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the exchange of the back buffer's content with the front buffer's content. Following the swap, the back buffer's content contains the front buffer's content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver. +PFD_TYPE_RGBA RGBA pixels. Each pixel has four components in this order: red, green, blue, and alpha. +PFD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value. +typedef struct tag_LAYERPLANEDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + COLORREF crTransparent; +} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR; +LPD_SUPPORT_OPENGL The layer plane supports OpenGL drawing. +LPD_SUPPORT_GDI The layer plane supports GDI drawing. The current implementation of OpenGL doesn't support this flag. +LPD_DOUBLEBUFFER The layer plane is double-buffered. A layer plane can be double-buffered even when the main plane is single-buffered and vice versa. +LPD_STEREO The layer plane is stereoscopic. A layer plane can be stereoscopic even when the main plane is monoscopic and vice versa. +LPD_SWAP_EXCHANGE In a double-buffered layer plane, swapping the color buffer exchanges the front buffer and back buffer contents. The back buffer then contains the contents of the front buffer before the swap. This flag is a hint only and might not be provided by a driver. +LPD_SWAP_COPY In a double-buffered layer plane, swapping the color buffer copies the back buffer contents to the front buffer. The swap does not affect the back buffer contents. This flag is a hint only and might not be provided by a driver. +LPD_TRANSPARENT The crTransparent member of this structure contains a transparent color or index value that enables underlying layers to show through this layer. All layer planes, except the lowest-numbered underlay layer, have a transparent color or index. +LPD_SHARE_DEPTH The layer plane shares the depth buffer with the main plane. +LPD_SHARE_STENCIL The layer plane shares the stencil buffer with the main plane. +LPD_SHARE_ACCUM The layer plane shares the accumulation buffer with the main plane. + +iPixelType +Specifies the type of pixel data. The following types are defined. +Value Meaning +LPD_TYPE_RGBA RGBA pixels. Each pixel has four components: red, green, blue, and alpha. +LPD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value. + diff --git a/StgSharp.Mathematics/Numeric/MatrixCompute.Additional.cs b/StgSharp.Mathematics/Numeric/MatrixCompute.Additional.cs deleted file mode 100644 index 24e7e2b7..00000000 --- a/StgSharp.Mathematics/Numeric/MatrixCompute.Additional.cs +++ /dev/null @@ -1,84 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="MatrixCompute.Additional" -// 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 StgSharp.HighPerformance; -using StgSharp.Internal; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace StgSharp.Mathematics.Numeric -{ - public partial class MatrixCompute - { - - internal static unsafe void ComputeFmaPanelF32(MatrixParallelTaskPackage* p) - { - int size = p->ElementSize; - MatrixKernel* leftBuffer = (MatrixKernel*)p->Left; - MatrixKernel* rightBuffer = (MatrixKernel*)p->Right; - MatrixKernel* ansBuffer = (MatrixKernel*)p->Answer; - MatrixPanel* leftPanel = MatrixPanel.Create(); - MatrixPanel* rightPanel = MatrixPanel.Create(); - MatrixPanel* ansPanel = MatrixPanel.Create(); - ref long offsetRef = ref Unsafe.As(ref p->PrimTileOffset); - ref long lengthRef = ref Unsafe.As(ref p->PrimCount); - int ansWidth = p-> AnsPrimOffset; - int ansHeight = p->AnsSecOffset; - int commonK = p->LeftPrimOffset; - int blocksPerRow = ansWidth / size; - - for (long c = offsetRef; c < offsetRef + lengthRef; c++) - { - int i = (int)(c / blocksPerRow) * size; - int j = (int)(c % blocksPerRow) * size; - NativeIntrinsic.Intrinsic.f32_clear_panel((MatrixPanel*)ansPanel); - for (int k = 0; k < commonK; k += size) - { - NativeIntrinsic.Intrinsic - .f32_build_panel((MatrixPanel*)leftPanel, leftBuffer, commonK, - ansHeight, k, i); - NativeIntrinsic.Intrinsic - .f32_build_panel((MatrixPanel*)rightPanel, rightBuffer, ansWidth, - commonK, j, k); - NativeIntrinsic.Intrinsic - .f32_panel_fma((MatrixPanel*)leftPanel, (MatrixPanel*)rightPanel, (MatrixPanel*)ansPanel); - } - NativeIntrinsic.Intrinsic - .f32_store_panel((MatrixPanel*)ansPanel, ansBuffer, ansWidth, - ansHeight, j, i); - } - MatrixPanel.Destroy(leftPanel); - MatrixPanel.Destroy(rightPanel); - MatrixPanel.Destroy(ansPanel); - } - - } -} diff --git a/StgSharp.Mathematics/Numeric/MatrixCompute.Factorize.cs b/StgSharp.Mathematics/Numeric/MatrixCompute.Factorize.cs index bc4a4d1c..f35e1ce7 100644 --- a/StgSharp.Mathematics/Numeric/MatrixCompute.Factorize.cs +++ b/StgSharp.Mathematics/Numeric/MatrixCompute.Factorize.cs @@ -25,6 +25,7 @@ // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- +using StgSharp.Internal; using System; using System.Collections.Generic; using System.Linq; @@ -36,11 +37,12 @@ namespace StgSharp.Mathematics.Numeric public static partial class MatrixCompute { - public static void FactorizePLU( - Matrix matrix, - Span pivot, - Matrix lower, - Matrix upper) + public static unsafe void FactorizePLU( + Matrix matrix, + Span pivot, + Matrix lower, + Matrix upper + ) { if (matrix.ColumnLength != matrix.RowLength) { throw new InvalidOperationException("Matrix must be square."); @@ -54,7 +56,7 @@ namespace StgSharp.Mathematics.Numeric } if (lower.RowLength != n || lower.ColumnLength != n || - lower.Layout != MatrixLayout.LowerTriangle) { + lower.Layout != MatrixLayout.UpperTriangle) { throw new ArgumentException("Lower matrix must be lower-triangular with same dimensions as input.", nameof(lower)); } if (upper.RowLength != n || @@ -66,37 +68,87 @@ namespace StgSharp.Mathematics.Numeric int size = matrix.KernelColumnLength * matrix.KernelRowLength; if (size < 256) { - // Naive Doolittle-style PLU without row swaps (for illustration). for (int i = 0; i < n; i++) { - pivot[i] = i; // identity pivot - lower[i, i] = 1.0f; // unit diagonal for L + pivot[i] = i; // identity permutation } - for (int k = 0; k < n; k++) + // Aggressive: always call native pivot to fetch four-column candidates + ulong* pivots = stackalloc ulong[4]; + for (int kBlock = 0; kBlock < n; kBlock += 4) { - // Compute U[k, j] for j >= k - for (int j = k; j < n; j++) + NativeIntrinsic.Context + .mat[(int)MatrixElementType.F32].pivot(matrix.Buffer, + (ulong)(kBlock >> 2), + (ulong)(matrix.KernelRowLength - (kBlock >> 2)), + (ulong)pivots); + int colsInBlock = Math.Min(4, n - kBlock); + for (int offset = 0; offset < colsInBlock; offset++) { - float sum = 0f; - for (int s = 0; s < k; s++) { - sum += lower[k, s] * upper[s, j]; - } - upper[k, j] = matrix[k, j] - sum; - } + int k = kBlock + offset; + int pivotRow = k; + float maxAbs; - // Compute L[i, k] for i > k - for (int i = k + 1; i < n; i++) - { - float sum = 0f; - for (int s = 0; s < k; s++) { - sum += lower[i, s] * upper[s, k]; + int candidateRow = (int)pivots[offset]; + int idx = -1; + for (int r = k; r < n; r++) + { + if (pivot[r] == candidateRow) + { + idx = r; + break; + } } - float u = upper[k, k]; - if (u == 0f) { - throw new InvalidOperationException("Zero pivot encountered in demonstration PLU."); + + if (idx != -1) + { + pivotRow = idx; + maxAbs = MathF.Abs(matrix.GetElementUnsafe(pivot[idx], k)); + } else + { + maxAbs = MathF.Abs(matrix.GetElementUnsafe(pivot[k], k)); + for (int r = k + 1; r < n; r++) + { + float val = MathF.Abs(matrix.GetElementUnsafe(pivot[r], k)); + if (val > maxAbs) + { + maxAbs = val; + pivotRow = r; + } + } + } + + if (maxAbs == 0f) { + throw new InvalidOperationException("Zero pivot encountered in PLU."); + } + if (pivotRow != k) { + (pivot[k], pivot[pivotRow]) = (pivot[pivotRow], pivot[k]); + } + lower[k, k] = 1.0f; // unit diagonal for L + + // Compute U[k, j] for j >= k + for (int j = k; j < n; j++) + { + float sum = 0f; + for (int s = 0; s < k; s++) { + sum += lower[k, s] * upper[s, j]; + } + upper[k, j] = matrix.GetElementUnsafe(pivot[k], j) - sum; + } + + // Compute L[i, k] for i > k + for (int i = k + 1; i < n; i++) + { + float sum = 0f; + for (int s = 0; s < k; s++) { + sum += lower[i, s] * upper[s, k]; + } + float u = upper[k, k]; + if (u == 0f) { + throw new InvalidOperationException("Zero pivot encountered in PLU."); + } + lower[i, k] = (matrix.GetElementUnsafe(pivot[i], k) - sum) / u; } - lower[i, k] = (matrix.GetElementUnsafe(i, k) - sum) / u; } } diff --git a/StgSharp.Mathematics/Numeric/MatrixCompute.Float.cs b/StgSharp.Mathematics/Numeric/MatrixCompute.Float.cs new file mode 100644 index 00000000..aa8b106c --- /dev/null +++ b/StgSharp.Mathematics/Numeric/MatrixCompute.Float.cs @@ -0,0 +1,343 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="MatrixCompute.Float" +// 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 StgSharp.Collections; +using StgSharp.HighPerformance; +using StgSharp.Internal; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Numerics; +using System.Security.AccessControl; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Mathematics.Numeric +{ + public static partial class MatrixCompute + { + + public static unsafe void Add( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f32 = (int)MatrixElementType.F32; + if (left.ColumnLength != right.ColumnLength || + left.RowLength != right.RowLength || + left.ColumnLength != ans.ColumnLength || + left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_add(leftPtr, rightPtr, ansPtr, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_add(leftPtr, rightPtr, ansPtr, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(float); + package->PrimCount = ans.KernelColumnLength; + package->SecCount = ans.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f32].buffer_add; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + public static unsafe void Fill( + Matrix ans, + float value + ) + { + int f32 = (int)MatrixElementType.F32; + long count = (long)ans.KernelColumnLength * ans.KernelRowLength; + ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); + scalar->Data(0) = value; + if (count <= 256) + { + NativeIntrinsic.Context.mat[f32].buffer_fill(ans.Buffer, scalar, count); + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + NativeIntrinsic.Context.mat[f32].buffer_fill(ans.Buffer, scalar, count); + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(float); + package->PrimCount = ans.KernelColumnLength; + package->SecCount = ans.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.ANS_SCALAR_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f32].buffer_fill; + package->Scalar = scalar; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + MatrixParallelFactory.Release(scalar); + taskGroup.Dispose(); + } + + public static unsafe void Mul( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f32 = (int)MatrixElementType.F32; + + // For matrix multiplication (left: MxK) * (right: KxN) => ans: MxN + // ColumnLength = number of columns (N), RowLength = number of rows (M) + if (left.ColumnLength != right.RowLength || + ans.ColumnLength != right.ColumnLength || + ans.RowLength != left.RowLength) + { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + int size = MatrixPanel.KernelSideCount(); + if (count <= 1024) + { + MatrixParallelThread[] pool = null; + if (count > 256) { + pool = MatrixParallel.LeadParallel(1); + } + if (NativeIntrinsic.Context.mat[f32].build_panel == null) + { + for (int i = 0; i < ans.KernelRowLength; i += size) + { + for (int j = 0; j < ans.KernelColumnLength; j += size) + { + MatrixKernel* ansPanel = ans.GetKernelAddressUnsafe(i, j); + NativeIntrinsic.Context.mat[f32].clear_panel((MatrixPanel*)ansPanel); + + // Console.WriteLine($"{i}{j}"); + for (int k = 0; k < left.KernelColumnLength; k += size) + { + NativeIntrinsic.Context + .mat[f32].panel_fma((MatrixPanel*)left.GetKernelAddressUnsafe(i, k), + (MatrixPanel*)right.GetKernelAddressUnsafe(k, j), + (MatrixPanel*)ansPanel); + } + } + } + } else + { + MatrixPanel* leftPanel = MatrixPanel.Create(); + MatrixPanel* rightPanel = MatrixPanel.Create(); + MatrixPanel* ansPanel = MatrixPanel.Create(); + for (int i = 0; i < ans.KernelRowLength; i += size) + { + for (int j = 0; j < ans.KernelColumnLength; j += size) + { + NativeIntrinsic.Context.mat[f32].clear_panel((MatrixPanel*)ansPanel); + + // Console.WriteLine($"{i}{j}"); + for (int k = 0; k < left.KernelColumnLength; k += size) + { + NativeIntrinsic.Context + .mat[f32].build_panel((MatrixPanel*)leftPanel, + (MatrixKernel*)left.Buffer, + left.KernelColumnLength, + left.KernelRowLength, i, k); + NativeIntrinsic.Context + .mat[f32].build_panel((MatrixPanel*)rightPanel, + (MatrixKernel*)right.Buffer, + right.KernelColumnLength, + right.KernelRowLength, k, j); + NativeIntrinsic.Context + .mat[f32].panel_fma((MatrixPanel*)leftPanel, + (MatrixPanel*)rightPanel, + (MatrixPanel*)ansPanel); + } + NativeIntrinsic.Context + .mat[f32].store_panel((MatrixPanel*)ansPanel, + (MatrixKernel*)ans.Buffer, + ans.KernelColumnLength, + ans.KernelRowLength, i, j); + } + } + MatrixPanel.Destroy(leftPanel); + MatrixPanel.Destroy(rightPanel); + MatrixPanel.Destroy(ansPanel); + } + if (count > 256) { + MatrixParallel.ReturnParallelResources(ref pool!); + } + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->AnsPrimOffset = ans.KernelRowLength; + package->AnsSecOffset = ans.KernelColumnLength; + package->LeftPrimOffset = left.KernelColumnLength; + package->PrimCount = ans.KernelColumnLength / size; + package->SecCount = ans.KernelRowLength / size; + package->ElementSize = size; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationSpecial.SEQ_FMA); + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + public static unsafe void Mul( + Matrix left, + float right, + Matrix ans + ) + { + int f32 = (int)MatrixElementType.F32; + if (left.ColumnLength != ans.ColumnLength || left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + if (left.Layout != MatrixLayout.DenseRectangle || + ans.Layout != MatrixLayout.DenseRectangle) { + throw new NotSupportedException("Only dense rectangle matrices are supported."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); + scalar->Data(0) = right; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_scalar_mul(leftPtr, ansPtr, scalar, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_scalar_mul(leftPtr, ansPtr, scalar, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Right = (nint)left.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(float); + package->PrimCount = left.KernelColumnLength; + package->SecCount = left.KernelRowLength; + package->Scalar = scalar; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.RIGHT_ANS_SCALAR_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f32].buffer_scalar_mul; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + MatrixParallelFactory.Release(scalar); + return; + } + + public static unsafe void Sub( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f32 = (int)MatrixElementType.F32; + if (left.ColumnLength != right.ColumnLength || + left.RowLength != right.RowLength || + left.ColumnLength != ans.ColumnLength || + left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + if (left.Layout != MatrixLayout.DenseRectangle || + right.Layout != MatrixLayout.DenseRectangle || + ans.Layout != MatrixLayout.DenseRectangle) { + throw new NotSupportedException("Only dense rectangle matrices are supported."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_sub(leftPtr, rightPtr, ansPtr, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f32].buffer_sub(leftPtr, rightPtr, ansPtr, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(float); + package->PrimCount = left.KernelColumnLength; + package->SecCount = left.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f32].buffer_sub; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + } +} diff --git a/StgSharp.Mathematics/Numeric/MatrixCompute.cs b/StgSharp.Mathematics/Numeric/MatrixCompute.cs index cc66b7a2..768d4172 100644 --- a/StgSharp.Mathematics/Numeric/MatrixCompute.cs +++ b/StgSharp.Mathematics/Numeric/MatrixCompute.cs @@ -25,266 +25,162 @@ // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- -using StgSharp.Collections; using StgSharp.HighPerformance; using StgSharp.Internal; using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Numerics; -using System.Security.AccessControl; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace StgSharp.Mathematics.Numeric { - public static partial class MatrixCompute + public partial class MatrixCompute { - public static unsafe void Add(Matrix left, Matrix right, Matrix ans) + internal static unsafe void ComputeFmaPanelF32( + MatrixParallelTaskPackage* p + ) { - if (left.ColumnLength != right.ColumnLength || - left.RowLength != right.RowLength || - left.ColumnLength != ans.ColumnLength || - left.RowLength != ans.RowLength) { - throw new IndexOutOfRangeException("Matrix dimensions must agree."); - } - long count = (long)left.KernelColumnLength * left.KernelRowLength; - if (count <= 256) - { - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* rightPtr = right.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_add(leftPtr, rightPtr, ansPtr, count); - return; - } else if (count <= 1024) - { - MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); - - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* rightPtr = right.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_add(leftPtr, rightPtr, ansPtr, count); - - MatrixParallel.ReturnParallelResources(ref pool); - return; - } - MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); - package->Left = (nint)left.Buffer; - package->Right = (nint)right.Buffer; - package->Answer = (nint)ans.Buffer; - package->ElementSize = sizeof(float); - package->PrimCount = ans.KernelColumnLength; - package->SecCount = ans.KernelRowLength; - package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); - package->ComputeHandle = (IntPtr)NativeIntrinsic.Intrinsic.f32_buffer_add; - MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); - - MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); - taskGroup.Dispose(); - } - - public static unsafe void Fill(Matrix ans, float value) - { - long count = (long)ans.KernelColumnLength * ans.KernelRowLength; - ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); - scalar->Data(0) = value; - if (count <= 256) - { - NativeIntrinsic.Intrinsic.f32_buffer_fill(ans.Buffer, scalar, count); - return; - } else if (count <= 1024) - { - MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); - NativeIntrinsic.Intrinsic.f32_buffer_fill(ans.Buffer, scalar, count); - MatrixParallel.ReturnParallelResources(ref pool); - return; - } - MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); - package->Answer = (nint)ans.Buffer; - package->ElementSize = sizeof(float); - package->PrimCount = ans.KernelColumnLength; - package->SecCount = ans.KernelRowLength; - package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.ANS_SCALAR_PARAM); - package->ComputeHandle = (IntPtr)NativeIntrinsic.Intrinsic.f32_buffer_fill; - package->Scalar = scalar; - MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); - MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); - MatrixParallelFactory.Release(scalar); - taskGroup.Dispose(); - } - - public static unsafe void Mul(Matrix left, Matrix right, Matrix ans) - { - // For matrix multiplication (left: MxK) * (right: KxN) => ans: MxN - // ColumnLength = number of columns (N), RowLength = number of rows (M) - if (left.ColumnLength != right.RowLength || - ans.ColumnLength != right.ColumnLength || - ans.RowLength != left.RowLength) - { - throw new IndexOutOfRangeException("Matrix dimensions must agree."); - } - long count = (long)left.KernelColumnLength * left.KernelRowLength; + int f32 = (int)MatrixElementType.F32; int size = MatrixPanel.KernelSideCount(); - if (count <= 1024) + MatrixKernel* leftBuffer = (MatrixKernel*)p->Left; + MatrixKernel* rightBuffer = (MatrixKernel*)p->Right; + MatrixKernel* ansBuffer = (MatrixKernel*)p->Answer; + ref long offsetRef = ref Unsafe.As(ref p->PrimTileOffset); + ref long lengthRef = ref Unsafe.As(ref p->PrimCount); + int ansWidth = p->AnsPrimOffset; + int ansHeight = p->AnsSecOffset; + int commonK = p->LeftPrimOffset; + int blocksPerRow = ansWidth / size; + if (NativeIntrinsic.Context.mat[f32].build_panel == null) { - MatrixParallelThread[] pool = null; - if (count > 256) { - pool = MatrixParallel.LeadParallel(1); + // in this occasion size must be 1 + for (long c = offsetRef; c < offsetRef + lengthRef; c++) + { + int i = (int)(c / blocksPerRow); + int j = (int)(c % blocksPerRow); + MatrixKernel* ansPanel = GetKernelAddressUnsafe((MatrixKernel*)ansBuffer, + ansHeight, i, j); + NativeIntrinsic.Context.mat[f32].clear_panel((MatrixPanel*)ansPanel); + for (int k = 0; k < commonK; k += size) { + NativeIntrinsic.Context + .mat[f32].panel_fma( + (MatrixPanel*)GetKernelAddressUnsafe((MatrixKernel*)leftBuffer, + ansHeight, k, j), + (MatrixPanel*)GetKernelAddressUnsafe((MatrixKernel*)rightBuffer, + commonK, j, k), + (MatrixPanel*)ansPanel); + } } + } else + { MatrixPanel* leftPanel = MatrixPanel.Create(); MatrixPanel* rightPanel = MatrixPanel.Create(); MatrixPanel* ansPanel = MatrixPanel.Create(); - for (int i = 0; i < ans.KernelRowLength; i += size) + for (long c = offsetRef; c < offsetRef + lengthRef; c++) { - for (int j = 0; j < ans.KernelColumnLength; j += size) + int i = (int)(c / blocksPerRow) * size; + int j = (int)(c % blocksPerRow) * size; + NativeIntrinsic.Context.mat[f32].clear_panel((MatrixPanel*)ansPanel); + for (int k = 0; k < commonK; k += size) { - NativeIntrinsic.Intrinsic.f32_clear_panel((MatrixPanel*)ansPanel); - - // Console.WriteLine($"{i}{j}"); - for (int k = 0; k < left.KernelColumnLength; k += size) - { - NativeIntrinsic.Intrinsic - .f32_build_panel((MatrixPanel*)leftPanel, - (MatrixKernel*)left.Buffer, - left.KernelColumnLength, - left.KernelRowLength, i, k); - NativeIntrinsic.Intrinsic - .f32_build_panel((MatrixPanel*)rightPanel, - (MatrixKernel*)right.Buffer, - right.KernelColumnLength, - right.KernelRowLength, k, j); - NativeIntrinsic.Intrinsic - .f32_panel_fma((MatrixPanel*)leftPanel, - (MatrixPanel*)rightPanel, - (MatrixPanel*)ansPanel); - } - NativeIntrinsic.Intrinsic - .f32_store_panel((MatrixPanel*)ansPanel, - (MatrixKernel*)ans.Buffer, - ans.KernelColumnLength, ans.KernelRowLength, - i, j); + NativeIntrinsic.Context + .mat[f32].build_panel((MatrixPanel*)leftPanel, leftBuffer, + commonK, ansHeight, k, i); + NativeIntrinsic.Context + .mat[f32].build_panel((MatrixPanel*)rightPanel, rightBuffer, + ansWidth, commonK, j, k); + NativeIntrinsic.Context + .mat[f32].panel_fma((MatrixPanel*)leftPanel, (MatrixPanel*)rightPanel, (MatrixPanel*)ansPanel); } + NativeIntrinsic.Context + .mat[f32].store_panel((MatrixPanel*)ansPanel, ansBuffer, + ansWidth, ansHeight, j, i); } MatrixPanel.Destroy(leftPanel); MatrixPanel.Destroy(rightPanel); MatrixPanel.Destroy(ansPanel); - if (count > 256) { - MatrixParallel.ReturnParallelResources(ref pool!); + } + } + + internal static unsafe void ComputeFmaPanelF64( + MatrixParallelTaskPackage* p + ) + { + int f64 = (int)MatrixElementType.F64; + int size = MatrixPanel.KernelSideCount(); + MatrixKernel* leftBuffer = (MatrixKernel*)p->Left; + MatrixKernel* rightBuffer = (MatrixKernel*)p->Right; + MatrixKernel* ansBuffer = (MatrixKernel*)p->Answer; + ref long offsetRef = ref Unsafe.As(ref p->PrimTileOffset); + ref long lengthRef = ref Unsafe.As(ref p->PrimCount); + int ansWidth = p->AnsPrimOffset; + int ansHeight = p->AnsSecOffset; + int commonK = p->LeftPrimOffset; + int blocksPerRow = ansWidth / size; + if (NativeIntrinsic.Context.mat[f64].build_panel == null) + { + // in this occasion size must be 1 + for (long c = offsetRef; c < offsetRef + lengthRef; c++) + { + int i = (int)(c / blocksPerRow); + int j = (int)(c % blocksPerRow); + MatrixKernel* ansPanel = GetKernelAddressUnsafe((MatrixKernel*)ansBuffer, + ansHeight, i, j); + NativeIntrinsic.Context.mat[f64].clear_panel((MatrixPanel*)ansPanel); + for (int k = 0; k < commonK; k += size) { + NativeIntrinsic.Context + .mat[f64].panel_fma( + (MatrixPanel*)GetKernelAddressUnsafe((MatrixKernel*)leftBuffer, + ansHeight, k, j), + (MatrixPanel*)GetKernelAddressUnsafe((MatrixKernel*)rightBuffer, + commonK, j, k), + (MatrixPanel*)ansPanel); + } } - return; + } else + { + MatrixPanel* leftPanel = MatrixPanel.Create(); + MatrixPanel* rightPanel = MatrixPanel.Create(); + MatrixPanel* ansPanel = MatrixPanel.Create(); + for (long c = offsetRef; c < offsetRef + lengthRef; c++) + { + int i = (int)(c / blocksPerRow) * size; + int j = (int)(c % blocksPerRow) * size; + NativeIntrinsic.Context.mat[f64].clear_panel((MatrixPanel*)ansPanel); + for (int k = 0; k < commonK; k += size) + { + NativeIntrinsic.Context + .mat[f64].build_panel((MatrixPanel*)leftPanel, leftBuffer, + commonK, ansHeight, k, i); + NativeIntrinsic.Context + .mat[f64].build_panel((MatrixPanel*)rightPanel, rightBuffer, + ansWidth, commonK, j, k); + NativeIntrinsic.Context + .mat[f64].panel_fma((MatrixPanel*)leftPanel, (MatrixPanel*)rightPanel, (MatrixPanel*)ansPanel); + } + NativeIntrinsic.Context + .mat[f64].store_panel((MatrixPanel*)ansPanel, ansBuffer, + ansWidth, ansHeight, j, i); + } + MatrixPanel.Destroy(leftPanel); + MatrixPanel.Destroy(rightPanel); + MatrixPanel.Destroy(ansPanel); } - MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); - package->Left = (nint)left.Buffer; - package->Right = (nint)right.Buffer; - package->Answer = (nint)ans.Buffer; - package->AnsPrimOffset = ans.KernelRowLength; - package->AnsSecOffset = ans.KernelColumnLength; - package->LeftPrimOffset = left.KernelColumnLength; - package->PrimCount = ans.KernelColumnLength / size; - package->SecCount = ans.KernelRowLength / size; - package->ElementSize = size; - package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationSpecial.SEQ_FMA); - MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); - - MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); - taskGroup.Dispose(); - return; } - public static unsafe void Mul(Matrix left, float right, Matrix ans) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static unsafe MatrixKernel* GetKernelAddressUnsafe( + MatrixKernel* buffer, + int colLength, + int x, + int y + ) where T : unmanaged, INumber { - if (left.ColumnLength != ans.ColumnLength || left.RowLength != ans.RowLength) { - throw new IndexOutOfRangeException("Matrix dimensions must agree."); - } - if (left.Layout != MatrixLayout.DenseRectangle || - ans.Layout != MatrixLayout.DenseRectangle) { - throw new NotSupportedException("Only dense rectangle matrices are supported."); - } - long count = (long)left.KernelColumnLength * left.KernelRowLength; - ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); - scalar->Data(0) = right; - if (count <= 256) - { - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_scalar_mul(leftPtr, ansPtr, scalar, count); - return; - } else if (count <= 1024) - { - MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); - - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_scalar_mul(leftPtr, ansPtr, scalar, count); - - MatrixParallel.ReturnParallelResources(ref pool); - return; - } - MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); - package->Right = (nint)left.Buffer; - package->Answer = (nint)ans.Buffer; - package->ElementSize = sizeof(float); - package->PrimCount = left.KernelColumnLength; - package->SecCount = left.KernelRowLength; - package->Scalar = scalar; - package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.RIGHT_ANS_SCALAR_PARAM); - package->ComputeHandle = (IntPtr)NativeIntrinsic.Intrinsic.f32_buffer_scalar_mul; - MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); - - MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); - taskGroup.Dispose(); - MatrixParallelFactory.Release(scalar); - return; - } - - public static unsafe void Sub(Matrix left, Matrix right, Matrix ans) - { - if (left.ColumnLength != right.ColumnLength || - left.RowLength != right.RowLength || - left.ColumnLength != ans.ColumnLength || - left.RowLength != ans.RowLength) { - throw new IndexOutOfRangeException("Matrix dimensions must agree."); - } - if (left.Layout != MatrixLayout.DenseRectangle || - right.Layout != MatrixLayout.DenseRectangle || - ans.Layout != MatrixLayout.DenseRectangle) { - throw new NotSupportedException("Only dense rectangle matrices are supported."); - } - long count = (long)left.KernelColumnLength * left.KernelRowLength; - if (count <= 256) - { - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* rightPtr = right.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_sub(leftPtr, rightPtr, ansPtr, count); - return; - } else if (count <= 1024) - { - MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); - - MatrixKernel* leftPtr = left.Buffer; - MatrixKernel* rightPtr = right.Buffer; - MatrixKernel* ansPtr = ans.Buffer; - NativeIntrinsic.Intrinsic.f32_buffer_sub(leftPtr, rightPtr, ansPtr, count); - - MatrixParallel.ReturnParallelResources(ref pool); - return; - } - MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); - package->Left = (nint)left.Buffer; - package->Right = (nint)right.Buffer; - package->Answer = (nint)ans.Buffer; - package->ElementSize = sizeof(float); - package->PrimCount = left.KernelColumnLength; - package->SecCount = left.KernelRowLength; - package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); - package->ComputeHandle = (IntPtr)NativeIntrinsic.Intrinsic.f32_buffer_sub; - MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); - - MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); - taskGroup.Dispose(); + return buffer + (colLength * x + y); } } diff --git a/StgSharp.Mathematics/Numeric/MatrixCompute.double.cs b/StgSharp.Mathematics/Numeric/MatrixCompute.double.cs new file mode 100644 index 00000000..6d9eccf3 --- /dev/null +++ b/StgSharp.Mathematics/Numeric/MatrixCompute.double.cs @@ -0,0 +1,339 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="MatrixCompute.double" +// 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 StgSharp.HighPerformance; +using StgSharp.Internal; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Mathematics.Numeric +{ + public partial class MatrixCompute + { + + public static unsafe void Add( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f64 = (int)MatrixElementType.F64; + if (left.ColumnLength != right.ColumnLength || + left.RowLength != right.RowLength || + left.ColumnLength != ans.ColumnLength || + left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_add(leftPtr, rightPtr, ansPtr, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_add(leftPtr, rightPtr, ansPtr, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(double); + package->PrimCount = ans.KernelColumnLength; + package->SecCount = ans.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f64].buffer_add; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + public static unsafe void Fill( + Matrix ans, + double value + ) + { + int f64 = (int)MatrixElementType.F64; + long count = (long)ans.KernelColumnLength * ans.KernelRowLength; + ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); + scalar->Data(0) = value; + if (count <= 256) + { + NativeIntrinsic.Context.mat[f64].buffer_fill(ans.Buffer, scalar, count); + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + NativeIntrinsic.Context.mat[f64].buffer_fill(ans.Buffer, scalar, count); + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(double); + package->PrimCount = ans.KernelColumnLength; + package->SecCount = ans.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.ANS_SCALAR_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f64].buffer_fill; + package->Scalar = scalar; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + MatrixParallelFactory.Release(scalar); + taskGroup.Dispose(); + } + + public static unsafe void Mul( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f64 = (int)MatrixElementType.F64; + + // For matrix multiplication (left: MxK) * (right: KxN) => ans: MxN + // ColumnLength = number of columns (N), RowLength = number of rows (M) + if (left.ColumnLength != right.RowLength || + ans.ColumnLength != right.ColumnLength || + ans.RowLength != left.RowLength) + { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + int size = MatrixPanel.KernelSideCount(); + if (count <= 1024) + { + MatrixParallelThread[] pool = null; + if (count > 256) { + pool = MatrixParallel.LeadParallel(1); + } + if (NativeIntrinsic.Context.mat[f64].build_panel == null) + { + for (int i = 0; i < ans.KernelRowLength; i += size) + { + for (int j = 0; j < ans.KernelColumnLength; j += size) + { + MatrixKernel* ansPanel = ans.GetKernelAddressUnsafe(i, j); + NativeIntrinsic.Context.mat[f64].clear_panel((MatrixPanel*)ansPanel); + + // Console.WriteLine($"{i}{j}"); + for (int k = 0; k < left.KernelColumnLength; k += size) + { + NativeIntrinsic.Context + .mat[f64].panel_fma((MatrixPanel*)left.GetKernelAddressUnsafe(i, k), + (MatrixPanel*)right.GetKernelAddressUnsafe(k, j), + (MatrixPanel*)ansPanel); + } + } + } + } else + { + MatrixPanel* leftPanel = MatrixPanel.Create(); + MatrixPanel* rightPanel = MatrixPanel.Create(); + MatrixPanel* ansPanel = MatrixPanel.Create(); + for (int i = 0; i < ans.KernelRowLength; i += size) + { + for (int j = 0; j < ans.KernelColumnLength; j += size) + { + NativeIntrinsic.Context.mat[f64].clear_panel((MatrixPanel*)ansPanel); + + // Console.WriteLine($"{i}{j}"); + for (int k = 0; k < left.KernelColumnLength; k += size) + { + NativeIntrinsic.Context + .mat[f64].build_panel((MatrixPanel*)leftPanel, + (MatrixKernel*)left.Buffer, + left.KernelColumnLength, + left.KernelRowLength, i, k); + NativeIntrinsic.Context + .mat[f64].build_panel((MatrixPanel*)rightPanel, + (MatrixKernel*)right.Buffer, + right.KernelColumnLength, + right.KernelRowLength, k, j); + NativeIntrinsic.Context + .mat[f64].panel_fma((MatrixPanel*)leftPanel, + (MatrixPanel*)rightPanel, + (MatrixPanel*)ansPanel); + } + NativeIntrinsic.Context + .mat[f64].store_panel((MatrixPanel*)ansPanel, + (MatrixKernel*)ans.Buffer, + ans.KernelColumnLength, + ans.KernelRowLength, i, j); + } + } + MatrixPanel.Destroy(leftPanel); + MatrixPanel.Destroy(rightPanel); + MatrixPanel.Destroy(ansPanel); + } + if (count > 256) { + MatrixParallel.ReturnParallelResources(ref pool!); + } + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->AnsPrimOffset = ans.KernelRowLength; + package->AnsSecOffset = ans.KernelColumnLength; + package->LeftPrimOffset = left.KernelColumnLength; + package->PrimCount = ans.KernelColumnLength / size; + package->SecCount = ans.KernelRowLength / size; + package->ElementSize = (int)MatrixElementType.F64; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationSpecial.SEQ_FMA); + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + public static unsafe void Mul( + Matrix left, + double right, + Matrix ans + ) + { + int f64 = (int)MatrixElementType.F64; + if (left.ColumnLength != ans.ColumnLength || left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + if (left.Layout != MatrixLayout.DenseRectangle || + ans.Layout != MatrixLayout.DenseRectangle) { + throw new NotSupportedException("Only dense rectangle matrices are supported."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + ScalarPacket* scalar = MatrixParallelFactory.CreateScalarPacket(); + scalar->Data(0) = right; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_scalar_mul(leftPtr, ansPtr, scalar, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_scalar_mul(leftPtr, ansPtr, scalar, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Right = (nint)left.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(double); + package->PrimCount = left.KernelColumnLength; + package->SecCount = left.KernelRowLength; + package->Scalar = scalar; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.RIGHT_ANS_SCALAR_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f64].buffer_scalar_mul; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + MatrixParallelFactory.Release(scalar); + return; + } + + public static unsafe void Sub( + Matrix left, + Matrix right, + Matrix ans + ) + { + int f64 = (int)MatrixElementType.F64; + if (left.ColumnLength != right.ColumnLength || + left.RowLength != right.RowLength || + left.ColumnLength != ans.ColumnLength || + left.RowLength != ans.RowLength) { + throw new IndexOutOfRangeException("Matrix dimensions must agree."); + } + if (left.Layout != MatrixLayout.DenseRectangle || + right.Layout != MatrixLayout.DenseRectangle || + ans.Layout != MatrixLayout.DenseRectangle) { + throw new NotSupportedException("Only dense rectangle matrices are supported."); + } + long count = (long)left.KernelColumnLength * left.KernelRowLength; + if (count <= 256) + { + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_sub(leftPtr, rightPtr, ansPtr, count); + + return; + } else if (count <= 1024) + { + MatrixParallelThread[] pool = MatrixParallel.LeadParallel(1); + + MatrixKernel* leftPtr = left.Buffer; + MatrixKernel* rightPtr = right.Buffer; + MatrixKernel* ansPtr = ans.Buffer; + NativeIntrinsic.Context.mat[f64].buffer_sub(leftPtr, rightPtr, ansPtr, count); + + MatrixParallel.ReturnParallelResources(ref pool); + return; + } + MatrixParallelTaskPackage* package = MatrixParallelFactory.CreateBaseTask(); + package->Left = (nint)left.Buffer; + package->Right = (nint)right.Buffer; + package->Answer = (nint)ans.Buffer; + package->ElementSize = sizeof(double); + package->PrimCount = left.KernelColumnLength; + package->SecCount = left.KernelRowLength; + package->ComputeMode = new MatrixOpMode(MatrixIndexStyle.BUFFER_INDEX, MatrixOperationParam.LEFT_RIGHT_ANS_PARAM); + package->ComputeHandle = (IntPtr)NativeIntrinsic.Context.mat[f64].buffer_sub; + MatrixParallelHandle taskGroup = MatrixParallel.ScheduleTask(package); + + MatrixParallel.LaunchParallel(taskGroup, SleepMode.DeepSleep); + taskGroup.Dispose(); + return; + } + + } +} diff --git a/StgSharp.Mathematics/Numeric/MatrixComputeModel.cs b/StgSharp.Mathematics/Numeric/MatrixComputeModel.cs index f3011324..11d080d1 100644 --- a/StgSharp.Mathematics/Numeric/MatrixComputeModel.cs +++ b/StgSharp.Mathematics/Numeric/MatrixComputeModel.cs @@ -34,7 +34,9 @@ namespace StgSharp.Mathematics.Numeric internal static class MatrixComputeModel { - internal static unsafe void BufferComputeBinary(MatrixParallelTaskPackage* p) + internal static unsafe void BufferComputeBinary( + MatrixParallelTaskPackage* p + ) { int size = p->ElementSize * 16; long count = Unsafe.As(ref p->PrimCount); @@ -47,7 +49,9 @@ namespace StgSharp.Mathematics.Numeric MatrixParallelFactory.Release(p); } - internal static unsafe void BufferComputeBinaryScalar(MatrixParallelTaskPackage* p) + internal static unsafe void BufferComputeBinaryScalar( + MatrixParallelTaskPackage* p + ) { int size = p->ElementSize * 16; long count = Unsafe.As(ref p->PrimCount); @@ -61,7 +65,9 @@ namespace StgSharp.Mathematics.Numeric MatrixParallelFactory.Release(p); } - internal static unsafe void BufferComputeNoOperatorScalar(MatrixParallelTaskPackage* p) + internal static unsafe void BufferComputeNoOperatorScalar( + MatrixParallelTaskPackage* p + ) { int size = p->ElementSize * 16; long count = Unsafe.As(ref p->PrimCount); @@ -71,7 +77,9 @@ namespace StgSharp.Mathematics.Numeric MatrixParallelFactory.Release(p); } - internal static unsafe void BufferComputeUnary(MatrixParallelTaskPackage* p) + internal static unsafe void BufferComputeUnary( + MatrixParallelTaskPackage* p + ) { int size = p->ElementSize * 16; long count = Unsafe.As(ref p->PrimCount); @@ -83,7 +91,9 @@ namespace StgSharp.Mathematics.Numeric MatrixParallelFactory.Release(p); } - internal static unsafe void BufferComputeUnaryScalar(MatrixParallelTaskPackage* p) + internal static unsafe void BufferComputeUnaryScalar( + MatrixParallelTaskPackage* p + ) { int size = p->ElementSize * 16; long count = Unsafe.As(ref p->PrimCount); @@ -95,12 +105,24 @@ namespace StgSharp.Mathematics.Numeric MatrixParallelFactory.Release(p); } - internal static unsafe void SpecialBufferCompute(MatrixParallelTaskPackage* p) + internal static unsafe void SpecialBufferCompute( + MatrixParallelTaskPackage* p + ) { switch ((MatrixOperationSpecial)p->ComputeMode.ParameterStyle) { case MatrixOperationSpecial.SEQ_FMA: - MatrixCompute.ComputeFmaPanelF32(p); + switch ((MatrixElementType)p->ElementSize) + { + case MatrixElementType.F64: + MatrixCompute.ComputeFmaPanelF64(p); + return; + case MatrixElementType.F32: + MatrixCompute.ComputeFmaPanelF32(p); + break; + default: + break; + } break; default: break; diff --git a/StgSharp.Mathematics/Numeric/MatrixParallelTaskPackage.cs b/StgSharp.Mathematics/Numeric/MatrixParallelTaskPackage.cs index 4db2273f..9643d0e8 100644 --- a/StgSharp.Mathematics/Numeric/MatrixParallelTaskPackage.cs +++ b/StgSharp.Mathematics/Numeric/MatrixParallelTaskPackage.cs @@ -78,18 +78,34 @@ namespace StgSharp.Mathematics.Numeric } [StructLayout(LayoutKind.Sequential)] - public struct MatrixOpMode(MatrixIndexStyle style, MatrixOperationParam paramLayout) + public struct MatrixOpMode( + MatrixIndexStyle style, + MatrixOperationParam paramLayout + ) { public MatrixIndexStyle OperationStyle = style; public MatrixOperationParam ParameterStyle = paramLayout; - public MatrixOpMode(MatrixIndexStyle style, MatrixOperationSpecial paramLayout) + public MatrixOpMode( + MatrixIndexStyle style, + MatrixOperationSpecial paramLayout + ) : this(style, (MatrixOperationParam)paramLayout) { } } + public enum MatrixElementType : int + { + + F32 = 0, + F64 = 1, + I32 = 2, + I64 = 3, + + } + [StructLayout(LayoutKind.Explicit, Size = 128)] public unsafe struct MatrixParallelTaskPackage { @@ -97,7 +113,8 @@ namespace StgSharp.Mathematics.Numeric [MethodImpl(MethodImplOptions.AggressiveInlining)] public static unsafe void Copy( MatrixParallelTaskPackage* source, - MatrixParallelTaskPackage* target) + MatrixParallelTaskPackage* target + ) { Buffer.MemoryCopy(source, target, sizeof(MatrixParallelTaskPackage), sizeof(MatrixParallelTaskPackage)); diff --git a/StgSharp.Native/sn-head/gl.h b/StgSharp.Native/sn-head/gl.h index 192f3429..e577a601 100644 --- a/StgSharp.Native/sn-head/gl.h +++ b/StgSharp.Native/sn-head/gl.h @@ -10105,159 +10105,53 @@ typedef void(GLAD_API_PTR *PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum GLenum outZ, GLenum outW); typedef struct GladGLContext { - PFNGLACCUMXOESPROC AccumxOES; - PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC AcquireKeyedMutexWin32EXT; - PFNGLACTIVEPROGRAMEXTPROC ActiveProgramEXT; PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram; - PFNGLACTIVESTENCILFACEEXTPROC ActiveStencilFaceEXT; PFNGLACTIVETEXTUREPROC ActiveTexture; - PFNGLACTIVETEXTUREARBPROC ActiveTextureARB; - PFNGLACTIVEVARYINGNVPROC ActiveVaryingNV; - PFNGLALPHAFRAGMENTOP1ATIPROC AlphaFragmentOp1ATI; - PFNGLALPHAFRAGMENTOP2ATIPROC AlphaFragmentOp2ATI; - PFNGLALPHAFRAGMENTOP3ATIPROC AlphaFragmentOp3ATI; - PFNGLALPHAFUNCXOESPROC AlphaFuncxOES; - PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC AlphaToCoverageDitherControlNV; - PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC ApplyFramebufferAttachmentCMAAINTEL; - PFNGLAPPLYTEXTUREEXTPROC ApplyTextureEXT; - PFNGLAREPROGRAMSRESIDENTNVPROC AreProgramsResidentNV; - PFNGLARETEXTURESRESIDENTEXTPROC AreTexturesResidentEXT; - PFNGLARRAYELEMENTEXTPROC ArrayElementEXT; - PFNGLARRAYOBJECTATIPROC ArrayObjectATI; - PFNGLASYNCCOPYBUFFERSUBDATANVXPROC AsyncCopyBufferSubDataNVX; - PFNGLASYNCCOPYIMAGESUBDATANVXPROC AsyncCopyImageSubDataNVX; - PFNGLASYNCMARKERSGIXPROC AsyncMarkerSGIX; - PFNGLATTACHOBJECTARBPROC AttachObjectARB; PFNGLATTACHSHADERPROC AttachShader; PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender; - PFNGLBEGINCONDITIONALRENDERNVPROC BeginConditionalRenderNV; - PFNGLBEGINCONDITIONALRENDERNVXPROC BeginConditionalRenderNVX; - PFNGLBEGINFRAGMENTSHADERATIPROC BeginFragmentShaderATI; - PFNGLBEGINOCCLUSIONQUERYNVPROC BeginOcclusionQueryNV; - PFNGLBEGINPERFMONITORAMDPROC BeginPerfMonitorAMD; - PFNGLBEGINPERFQUERYINTELPROC BeginPerfQueryINTEL; PFNGLBEGINQUERYPROC BeginQuery; - PFNGLBEGINQUERYARBPROC BeginQueryARB; PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed; PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback; - PFNGLBEGINTRANSFORMFEEDBACKEXTPROC BeginTransformFeedbackEXT; - PFNGLBEGINTRANSFORMFEEDBACKNVPROC BeginTransformFeedbackNV; - PFNGLBEGINVERTEXSHADEREXTPROC BeginVertexShaderEXT; - PFNGLBEGINVIDEOCAPTURENVPROC BeginVideoCaptureNV; PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation; - PFNGLBINDATTRIBLOCATIONARBPROC BindAttribLocationARB; PFNGLBINDBUFFERPROC BindBuffer; - PFNGLBINDBUFFERARBPROC BindBufferARB; PFNGLBINDBUFFERBASEPROC BindBufferBase; - PFNGLBINDBUFFERBASEEXTPROC BindBufferBaseEXT; - PFNGLBINDBUFFERBASENVPROC BindBufferBaseNV; - PFNGLBINDBUFFEROFFSETEXTPROC BindBufferOffsetEXT; - PFNGLBINDBUFFEROFFSETNVPROC BindBufferOffsetNV; PFNGLBINDBUFFERRANGEPROC BindBufferRange; - PFNGLBINDBUFFERRANGEEXTPROC BindBufferRangeEXT; - PFNGLBINDBUFFERRANGENVPROC BindBufferRangeNV; PFNGLBINDBUFFERSBASEPROC BindBuffersBase; PFNGLBINDBUFFERSRANGEPROC BindBuffersRange; PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation; - PFNGLBINDFRAGDATALOCATIONEXTPROC BindFragDataLocationEXT; PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed; - PFNGLBINDFRAGMENTSHADERATIPROC BindFragmentShaderATI; PFNGLBINDFRAMEBUFFERPROC BindFramebuffer; - PFNGLBINDFRAMEBUFFEREXTPROC BindFramebufferEXT; PFNGLBINDIMAGETEXTUREPROC BindImageTexture; - PFNGLBINDIMAGETEXTUREEXTPROC BindImageTextureEXT; PFNGLBINDIMAGETEXTURESPROC BindImageTextures; - PFNGLBINDLIGHTPARAMETEREXTPROC BindLightParameterEXT; - PFNGLBINDMATERIALPARAMETEREXTPROC BindMaterialParameterEXT; - PFNGLBINDMULTITEXTUREEXTPROC BindMultiTextureEXT; - PFNGLBINDPARAMETEREXTPROC BindParameterEXT; - PFNGLBINDPROGRAMARBPROC BindProgramARB; - PFNGLBINDPROGRAMNVPROC BindProgramNV; PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline; PFNGLBINDRENDERBUFFERPROC BindRenderbuffer; - PFNGLBINDRENDERBUFFEREXTPROC BindRenderbufferEXT; PFNGLBINDSAMPLERPROC BindSampler; PFNGLBINDSAMPLERSPROC BindSamplers; - PFNGLBINDSHADINGRATEIMAGENVPROC BindShadingRateImageNV; - PFNGLBINDTEXGENPARAMETEREXTPROC BindTexGenParameterEXT; PFNGLBINDTEXTUREPROC BindTexture; - PFNGLBINDTEXTUREEXTPROC BindTextureEXT; PFNGLBINDTEXTUREUNITPROC BindTextureUnit; - PFNGLBINDTEXTUREUNITPARAMETEREXTPROC BindTextureUnitParameterEXT; PFNGLBINDTEXTURESPROC BindTextures; PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback; - PFNGLBINDTRANSFORMFEEDBACKNVPROC BindTransformFeedbackNV; PFNGLBINDVERTEXARRAYPROC BindVertexArray; - PFNGLBINDVERTEXARRAYAPPLEPROC BindVertexArrayAPPLE; PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer; PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers; - PFNGLBINDVERTEXSHADEREXTPROC BindVertexShaderEXT; - PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC BindVideoCaptureStreamBufferNV; - PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC BindVideoCaptureStreamTextureNV; - PFNGLBINORMAL3BEXTPROC Binormal3bEXT; - PFNGLBINORMAL3BVEXTPROC Binormal3bvEXT; - PFNGLBINORMAL3DEXTPROC Binormal3dEXT; - PFNGLBINORMAL3DVEXTPROC Binormal3dvEXT; - PFNGLBINORMAL3FEXTPROC Binormal3fEXT; - PFNGLBINORMAL3FVEXTPROC Binormal3fvEXT; - PFNGLBINORMAL3IEXTPROC Binormal3iEXT; - PFNGLBINORMAL3IVEXTPROC Binormal3ivEXT; - PFNGLBINORMAL3SEXTPROC Binormal3sEXT; - PFNGLBINORMAL3SVEXTPROC Binormal3svEXT; - PFNGLBINORMALPOINTEREXTPROC BinormalPointerEXT; - PFNGLBITMAPXOESPROC BitmapxOES; - PFNGLBLENDBARRIERKHRPROC BlendBarrierKHR; - PFNGLBLENDBARRIERNVPROC BlendBarrierNV; PFNGLBLENDCOLORPROC BlendColor; - PFNGLBLENDCOLOREXTPROC BlendColorEXT; - PFNGLBLENDCOLORXOESPROC BlendColorxOES; PFNGLBLENDEQUATIONPROC BlendEquation; - PFNGLBLENDEQUATIONEXTPROC BlendEquationEXT; - PFNGLBLENDEQUATIONINDEXEDAMDPROC BlendEquationIndexedAMD; PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate; - PFNGLBLENDEQUATIONSEPARATEEXTPROC BlendEquationSeparateEXT; - PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC BlendEquationSeparateIndexedAMD; PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei; - PFNGLBLENDEQUATIONSEPARATEIARBPROC BlendEquationSeparateiARB; PFNGLBLENDEQUATIONIPROC BlendEquationi; - PFNGLBLENDEQUATIONIARBPROC BlendEquationiARB; PFNGLBLENDFUNCPROC BlendFunc; - PFNGLBLENDFUNCINDEXEDAMDPROC BlendFuncIndexedAMD; PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate; - PFNGLBLENDFUNCSEPARATEEXTPROC BlendFuncSeparateEXT; - PFNGLBLENDFUNCSEPARATEINGRPROC BlendFuncSeparateINGR; - PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC BlendFuncSeparateIndexedAMD; PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei; - PFNGLBLENDFUNCSEPARATEIARBPROC BlendFuncSeparateiARB; PFNGLBLENDFUNCIPROC BlendFunci; - PFNGLBLENDFUNCIARBPROC BlendFunciARB; - PFNGLBLENDPARAMETERINVPROC BlendParameteriNV; PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer; - PFNGLBLITFRAMEBUFFEREXTPROC BlitFramebufferEXT; - PFNGLBLITFRAMEBUFFERLAYEREXTPROC BlitFramebufferLayerEXT; - PFNGLBLITFRAMEBUFFERLAYERSEXTPROC BlitFramebufferLayersEXT; PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer; - PFNGLBUFFERADDRESSRANGENVPROC BufferAddressRangeNV; - PFNGLBUFFERATTACHMEMORYNVPROC BufferAttachMemoryNV; PFNGLBUFFERDATAPROC BufferData; - PFNGLBUFFERDATAARBPROC BufferDataARB; - PFNGLBUFFERPAGECOMMITMENTARBPROC BufferPageCommitmentARB; - PFNGLBUFFERPAGECOMMITMENTMEMNVPROC BufferPageCommitmentMemNV; - PFNGLBUFFERPARAMETERIAPPLEPROC BufferParameteriAPPLE; PFNGLBUFFERSTORAGEPROC BufferStorage; - PFNGLBUFFERSTORAGEEXTERNALEXTPROC BufferStorageExternalEXT; - PFNGLBUFFERSTORAGEMEMEXTPROC BufferStorageMemEXT; PFNGLBUFFERSUBDATAPROC BufferSubData; - PFNGLBUFFERSUBDATAARBPROC BufferSubDataARB; - PFNGLCALLCOMMANDLISTNVPROC CallCommandListNV; PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus; - PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC CheckFramebufferStatusEXT; PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus; - PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC CheckNamedFramebufferStatusEXT; PFNGLCLAMPCOLORPROC ClampColor; - PFNGLCLAMPCOLORARBPROC ClampColorARB; PFNGLCLEARPROC Clear; - PFNGLCLEARACCUMXOESPROC ClearAccumxOES; PFNGLCLEARBUFFERDATAPROC ClearBufferData; PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData; PFNGLCLEARBUFFERFIPROC ClearBufferfi; @@ -10265,18 +10159,10 @@ typedef struct GladGLContext { PFNGLCLEARBUFFERIVPROC ClearBufferiv; PFNGLCLEARBUFFERUIVPROC ClearBufferuiv; PFNGLCLEARCOLORPROC ClearColor; - PFNGLCLEARCOLORIIEXTPROC ClearColorIiEXT; - PFNGLCLEARCOLORIUIEXTPROC ClearColorIuiEXT; - PFNGLCLEARCOLORXOESPROC ClearColorxOES; PFNGLCLEARDEPTHPROC ClearDepth; - PFNGLCLEARDEPTHDNVPROC ClearDepthdNV; PFNGLCLEARDEPTHFPROC ClearDepthf; - PFNGLCLEARDEPTHFOESPROC ClearDepthfOES; - PFNGLCLEARDEPTHXOESPROC ClearDepthxOES; PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData; - PFNGLCLEARNAMEDBUFFERDATAEXTPROC ClearNamedBufferDataEXT; PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData; - PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC ClearNamedBufferSubDataEXT; PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi; PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv; PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv; @@ -10284,868 +10170,253 @@ typedef struct GladGLContext { PFNGLCLEARSTENCILPROC ClearStencil; PFNGLCLEARTEXIMAGEPROC ClearTexImage; PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage; - PFNGLCLIENTACTIVETEXTUREARBPROC ClientActiveTextureARB; - PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC ClientActiveVertexStreamATI; - PFNGLCLIENTATTRIBDEFAULTEXTPROC ClientAttribDefaultEXT; - PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC ClientWaitSemaphoreui64NVX; PFNGLCLIENTWAITSYNCPROC ClientWaitSync; PFNGLCLIPCONTROLPROC ClipControl; - PFNGLCLIPPLANEFOESPROC ClipPlanefOES; - PFNGLCLIPPLANEXOESPROC ClipPlanexOES; - PFNGLCOLOR3FVERTEX3FSUNPROC Color3fVertex3fSUN; - PFNGLCOLOR3FVERTEX3FVSUNPROC Color3fVertex3fvSUN; - PFNGLCOLOR3HNVPROC Color3hNV; - PFNGLCOLOR3HVNVPROC Color3hvNV; - PFNGLCOLOR3XOESPROC Color3xOES; - PFNGLCOLOR3XVOESPROC Color3xvOES; - PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC Color4fNormal3fVertex3fSUN; - PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC Color4fNormal3fVertex3fvSUN; - PFNGLCOLOR4HNVPROC Color4hNV; - PFNGLCOLOR4HVNVPROC Color4hvNV; - PFNGLCOLOR4UBVERTEX2FSUNPROC Color4ubVertex2fSUN; - PFNGLCOLOR4UBVERTEX2FVSUNPROC Color4ubVertex2fvSUN; - PFNGLCOLOR4UBVERTEX3FSUNPROC Color4ubVertex3fSUN; - PFNGLCOLOR4UBVERTEX3FVSUNPROC Color4ubVertex3fvSUN; - PFNGLCOLOR4XOESPROC Color4xOES; - PFNGLCOLOR4XVOESPROC Color4xvOES; - PFNGLCOLORFORMATNVPROC ColorFormatNV; - PFNGLCOLORFRAGMENTOP1ATIPROC ColorFragmentOp1ATI; - PFNGLCOLORFRAGMENTOP2ATIPROC ColorFragmentOp2ATI; - PFNGLCOLORFRAGMENTOP3ATIPROC ColorFragmentOp3ATI; PFNGLCOLORMASKPROC ColorMask; - PFNGLCOLORMASKINDEXEDEXTPROC ColorMaskIndexedEXT; PFNGLCOLORMASKIPROC ColorMaski; - PFNGLCOLORPOINTEREXTPROC ColorPointerEXT; - PFNGLCOLORPOINTERLISTIBMPROC ColorPointerListIBM; - PFNGLCOLORPOINTERVINTELPROC ColorPointervINTEL; - PFNGLCOLORSUBTABLEEXTPROC ColorSubTableEXT; - PFNGLCOLORTABLEEXTPROC ColorTableEXT; - PFNGLCOLORTABLEPARAMETERFVSGIPROC ColorTableParameterfvSGI; - PFNGLCOLORTABLEPARAMETERIVSGIPROC ColorTableParameterivSGI; - PFNGLCOLORTABLESGIPROC ColorTableSGI; - PFNGLCOMBINERINPUTNVPROC CombinerInputNV; - PFNGLCOMBINEROUTPUTNVPROC CombinerOutputNV; - PFNGLCOMBINERPARAMETERFNVPROC CombinerParameterfNV; - PFNGLCOMBINERPARAMETERFVNVPROC CombinerParameterfvNV; - PFNGLCOMBINERPARAMETERINVPROC CombinerParameteriNV; - PFNGLCOMBINERPARAMETERIVNVPROC CombinerParameterivNV; - PFNGLCOMBINERSTAGEPARAMETERFVNVPROC CombinerStageParameterfvNV; - PFNGLCOMMANDLISTSEGMENTSNVPROC CommandListSegmentsNV; - PFNGLCOMPILECOMMANDLISTNVPROC CompileCommandListNV; PFNGLCOMPILESHADERPROC CompileShader; - PFNGLCOMPILESHADERARBPROC CompileShaderARB; - PFNGLCOMPILESHADERINCLUDEARBPROC CompileShaderIncludeARB; - PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC CompressedMultiTexImage1DEXT; - PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC CompressedMultiTexImage2DEXT; - PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC CompressedMultiTexImage3DEXT; - PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC CompressedMultiTexSubImage1DEXT; - PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC CompressedMultiTexSubImage2DEXT; - PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC CompressedMultiTexSubImage3DEXT; PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D; - PFNGLCOMPRESSEDTEXIMAGE1DARBPROC CompressedTexImage1DARB; PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D; - PFNGLCOMPRESSEDTEXIMAGE2DARBPROC CompressedTexImage2DARB; PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D; - PFNGLCOMPRESSEDTEXIMAGE3DARBPROC CompressedTexImage3DARB; PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D; - PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC CompressedTexSubImage1DARB; PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D; - PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC CompressedTexSubImage2DARB; PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D; - PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC CompressedTexSubImage3DARB; - PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC CompressedTextureImage1DEXT; - PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC CompressedTextureImage2DEXT; - PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC CompressedTextureImage3DEXT; PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC CompressedTextureSubImage1DEXT; PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC CompressedTextureSubImage2DEXT; PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D; - PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC CompressedTextureSubImage3DEXT; - PFNGLCONSERVATIVERASTERPARAMETERFNVPROC ConservativeRasterParameterfNV; - PFNGLCONSERVATIVERASTERPARAMETERINVPROC ConservativeRasterParameteriNV; - PFNGLCONVOLUTIONFILTER1DEXTPROC ConvolutionFilter1DEXT; - PFNGLCONVOLUTIONFILTER2DEXTPROC ConvolutionFilter2DEXT; - PFNGLCONVOLUTIONPARAMETERFEXTPROC ConvolutionParameterfEXT; - PFNGLCONVOLUTIONPARAMETERFVEXTPROC ConvolutionParameterfvEXT; - PFNGLCONVOLUTIONPARAMETERIEXTPROC ConvolutionParameteriEXT; - PFNGLCONVOLUTIONPARAMETERIVEXTPROC ConvolutionParameterivEXT; - PFNGLCONVOLUTIONPARAMETERXOESPROC ConvolutionParameterxOES; - PFNGLCONVOLUTIONPARAMETERXVOESPROC ConvolutionParameterxvOES; PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData; - PFNGLCOPYCOLORSUBTABLEEXTPROC CopyColorSubTableEXT; - PFNGLCOPYCOLORTABLESGIPROC CopyColorTableSGI; - PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC CopyConvolutionFilter1DEXT; - PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC CopyConvolutionFilter2DEXT; PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData; - PFNGLCOPYIMAGESUBDATANVPROC CopyImageSubDataNV; - PFNGLCOPYMULTITEXIMAGE1DEXTPROC CopyMultiTexImage1DEXT; - PFNGLCOPYMULTITEXIMAGE2DEXTPROC CopyMultiTexImage2DEXT; - PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC CopyMultiTexSubImage1DEXT; - PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC CopyMultiTexSubImage2DEXT; - PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC CopyMultiTexSubImage3DEXT; PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData; - PFNGLCOPYPATHNVPROC CopyPathNV; PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D; - PFNGLCOPYTEXIMAGE1DEXTPROC CopyTexImage1DEXT; PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D; - PFNGLCOPYTEXIMAGE2DEXTPROC CopyTexImage2DEXT; PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D; - PFNGLCOPYTEXSUBIMAGE1DEXTPROC CopyTexSubImage1DEXT; PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D; - PFNGLCOPYTEXSUBIMAGE2DEXTPROC CopyTexSubImage2DEXT; PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D; - PFNGLCOPYTEXSUBIMAGE3DEXTPROC CopyTexSubImage3DEXT; - PFNGLCOPYTEXTUREIMAGE1DEXTPROC CopyTextureImage1DEXT; - PFNGLCOPYTEXTUREIMAGE2DEXTPROC CopyTextureImage2DEXT; PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D; - PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC CopyTextureSubImage1DEXT; PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D; - PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC CopyTextureSubImage2DEXT; PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D; - PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC CopyTextureSubImage3DEXT; - PFNGLCOVERFILLPATHINSTANCEDNVPROC CoverFillPathInstancedNV; - PFNGLCOVERFILLPATHNVPROC CoverFillPathNV; - PFNGLCOVERSTROKEPATHINSTANCEDNVPROC CoverStrokePathInstancedNV; - PFNGLCOVERSTROKEPATHNVPROC CoverStrokePathNV; - PFNGLCOVERAGEMODULATIONNVPROC CoverageModulationNV; - PFNGLCOVERAGEMODULATIONTABLENVPROC CoverageModulationTableNV; PFNGLCREATEBUFFERSPROC CreateBuffers; - PFNGLCREATECOMMANDLISTSNVPROC CreateCommandListsNV; PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers; - PFNGLCREATEMEMORYOBJECTSEXTPROC CreateMemoryObjectsEXT; - PFNGLCREATEPERFQUERYINTELPROC CreatePerfQueryINTEL; PFNGLCREATEPROGRAMPROC CreateProgram; - PFNGLCREATEPROGRAMOBJECTARBPROC CreateProgramObjectARB; PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines; - PFNGLCREATEPROGRESSFENCENVXPROC CreateProgressFenceNVX; PFNGLCREATEQUERIESPROC CreateQueries; PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers; PFNGLCREATESAMPLERSPROC CreateSamplers; - PFNGLCREATESEMAPHORESNVPROC CreateSemaphoresNV; PFNGLCREATESHADERPROC CreateShader; - PFNGLCREATESHADEROBJECTARBPROC CreateShaderObjectARB; - PFNGLCREATESHADERPROGRAMEXTPROC CreateShaderProgramEXT; PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv; - PFNGLCREATESTATESNVPROC CreateStatesNV; - PFNGLCREATESYNCFROMCLEVENTARBPROC CreateSyncFromCLeventARB; PFNGLCREATETEXTURESPROC CreateTextures; PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks; PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays; PFNGLCULLFACEPROC CullFace; - PFNGLCULLPARAMETERDVEXTPROC CullParameterdvEXT; - PFNGLCULLPARAMETERFVEXTPROC CullParameterfvEXT; - PFNGLCURRENTPALETTEMATRIXARBPROC CurrentPaletteMatrixARB; PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback; - PFNGLDEBUGMESSAGECALLBACKAMDPROC DebugMessageCallbackAMD; - PFNGLDEBUGMESSAGECALLBACKARBPROC DebugMessageCallbackARB; PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl; - PFNGLDEBUGMESSAGECONTROLARBPROC DebugMessageControlARB; - PFNGLDEBUGMESSAGEENABLEAMDPROC DebugMessageEnableAMD; PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert; - PFNGLDEBUGMESSAGEINSERTAMDPROC DebugMessageInsertAMD; - PFNGLDEBUGMESSAGEINSERTARBPROC DebugMessageInsertARB; - PFNGLDEFORMSGIXPROC DeformSGIX; - PFNGLDEFORMATIONMAP3DSGIXPROC DeformationMap3dSGIX; - PFNGLDEFORMATIONMAP3FSGIXPROC DeformationMap3fSGIX; - PFNGLDELETEASYNCMARKERSSGIXPROC DeleteAsyncMarkersSGIX; PFNGLDELETEBUFFERSPROC DeleteBuffers; - PFNGLDELETEBUFFERSARBPROC DeleteBuffersARB; - PFNGLDELETECOMMANDLISTSNVPROC DeleteCommandListsNV; - PFNGLDELETEFENCESAPPLEPROC DeleteFencesAPPLE; - PFNGLDELETEFENCESNVPROC DeleteFencesNV; - PFNGLDELETEFRAGMENTSHADERATIPROC DeleteFragmentShaderATI; PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers; - PFNGLDELETEFRAMEBUFFERSEXTPROC DeleteFramebuffersEXT; - PFNGLDELETEMEMORYOBJECTSEXTPROC DeleteMemoryObjectsEXT; - PFNGLDELETENAMEDSTRINGARBPROC DeleteNamedStringARB; - PFNGLDELETENAMESAMDPROC DeleteNamesAMD; - PFNGLDELETEOBJECTARBPROC DeleteObjectARB; - PFNGLDELETEOCCLUSIONQUERIESNVPROC DeleteOcclusionQueriesNV; - PFNGLDELETEPATHSNVPROC DeletePathsNV; - PFNGLDELETEPERFMONITORSAMDPROC DeletePerfMonitorsAMD; - PFNGLDELETEPERFQUERYINTELPROC DeletePerfQueryINTEL; PFNGLDELETEPROGRAMPROC DeleteProgram; PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines; - PFNGLDELETEPROGRAMSARBPROC DeleteProgramsARB; - PFNGLDELETEPROGRAMSNVPROC DeleteProgramsNV; PFNGLDELETEQUERIESPROC DeleteQueries; - PFNGLDELETEQUERIESARBPROC DeleteQueriesARB; - PFNGLDELETEQUERYRESOURCETAGNVPROC DeleteQueryResourceTagNV; PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers; - PFNGLDELETERENDERBUFFERSEXTPROC DeleteRenderbuffersEXT; PFNGLDELETESAMPLERSPROC DeleteSamplers; - PFNGLDELETESEMAPHORESEXTPROC DeleteSemaphoresEXT; PFNGLDELETESHADERPROC DeleteShader; - PFNGLDELETESTATESNVPROC DeleteStatesNV; PFNGLDELETESYNCPROC DeleteSync; PFNGLDELETETEXTURESPROC DeleteTextures; - PFNGLDELETETEXTURESEXTPROC DeleteTexturesEXT; PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks; - PFNGLDELETETRANSFORMFEEDBACKSNVPROC DeleteTransformFeedbacksNV; PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays; - PFNGLDELETEVERTEXARRAYSAPPLEPROC DeleteVertexArraysAPPLE; - PFNGLDELETEVERTEXSHADEREXTPROC DeleteVertexShaderEXT; - PFNGLDEPTHBOUNDSEXTPROC DepthBoundsEXT; - PFNGLDEPTHBOUNDSDNVPROC DepthBoundsdNV; PFNGLDEPTHFUNCPROC DepthFunc; PFNGLDEPTHMASKPROC DepthMask; PFNGLDEPTHRANGEPROC DepthRange; - PFNGLDEPTHRANGEARRAYDVNVPROC DepthRangeArraydvNV; PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv; PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed; - PFNGLDEPTHRANGEINDEXEDDNVPROC DepthRangeIndexeddNV; - PFNGLDEPTHRANGEDNVPROC DepthRangedNV; PFNGLDEPTHRANGEFPROC DepthRangef; - PFNGLDEPTHRANGEFOESPROC DepthRangefOES; - PFNGLDEPTHRANGEXOESPROC DepthRangexOES; - PFNGLDETACHOBJECTARBPROC DetachObjectARB; PFNGLDETACHSHADERPROC DetachShader; - PFNGLDETAILTEXFUNCSGISPROC DetailTexFuncSGIS; PFNGLDISABLEPROC Disable; - PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC DisableClientStateIndexedEXT; - PFNGLDISABLECLIENTSTATEIEXTPROC DisableClientStateiEXT; - PFNGLDISABLEINDEXEDEXTPROC DisableIndexedEXT; - PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC DisableVariantClientStateEXT; PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib; - PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC DisableVertexArrayAttribEXT; - PFNGLDISABLEVERTEXARRAYEXTPROC DisableVertexArrayEXT; - PFNGLDISABLEVERTEXATTRIBAPPLEPROC DisableVertexAttribAPPLE; PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray; - PFNGLDISABLEVERTEXATTRIBARRAYARBPROC DisableVertexAttribArrayARB; PFNGLDISABLEIPROC Disablei; PFNGLDISPATCHCOMPUTEPROC DispatchCompute; - PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC DispatchComputeGroupSizeARB; PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect; PFNGLDRAWARRAYSPROC DrawArrays; - PFNGLDRAWARRAYSEXTPROC DrawArraysEXT; PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect; PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced; - PFNGLDRAWARRAYSINSTANCEDARBPROC DrawArraysInstancedARB; PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance; - PFNGLDRAWARRAYSINSTANCEDEXTPROC DrawArraysInstancedEXT; PFNGLDRAWBUFFERPROC DrawBuffer; PFNGLDRAWBUFFERSPROC DrawBuffers; - PFNGLDRAWBUFFERSARBPROC DrawBuffersARB; - PFNGLDRAWBUFFERSATIPROC DrawBuffersATI; - PFNGLDRAWCOMMANDSADDRESSNVPROC DrawCommandsAddressNV; - PFNGLDRAWCOMMANDSNVPROC DrawCommandsNV; - PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC DrawCommandsStatesAddressNV; - PFNGLDRAWCOMMANDSSTATESNVPROC DrawCommandsStatesNV; - PFNGLDRAWELEMENTARRAYAPPLEPROC DrawElementArrayAPPLE; - PFNGLDRAWELEMENTARRAYATIPROC DrawElementArrayATI; PFNGLDRAWELEMENTSPROC DrawElements; PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex; PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect; PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced; - PFNGLDRAWELEMENTSINSTANCEDARBPROC DrawElementsInstancedARB; PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance; PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex; PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC DrawElementsInstancedBaseVertexBaseInstance; - PFNGLDRAWELEMENTSINSTANCEDEXTPROC DrawElementsInstancedEXT; - PFNGLDRAWMESHARRAYSSUNPROC DrawMeshArraysSUN; - PFNGLDRAWMESHTASKSINDIRECTNVPROC DrawMeshTasksIndirectNV; - PFNGLDRAWMESHTASKSNVPROC DrawMeshTasksNV; - PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC DrawRangeElementArrayAPPLE; - PFNGLDRAWRANGEELEMENTARRAYATIPROC DrawRangeElementArrayATI; PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements; PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex; - PFNGLDRAWRANGEELEMENTSEXTPROC DrawRangeElementsEXT; - PFNGLDRAWTEXTURENVPROC DrawTextureNV; PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback; PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced; - PFNGLDRAWTRANSFORMFEEDBACKNVPROC DrawTransformFeedbackNV; PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream; PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced; - PFNGLDRAWVKIMAGENVPROC DrawVkImageNV; - PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC EGLImageTargetTexStorageEXT; - PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC EGLImageTargetTextureStorageEXT; - PFNGLEDGEFLAGFORMATNVPROC EdgeFlagFormatNV; - PFNGLEDGEFLAGPOINTEREXTPROC EdgeFlagPointerEXT; - PFNGLEDGEFLAGPOINTERLISTIBMPROC EdgeFlagPointerListIBM; - PFNGLELEMENTPOINTERAPPLEPROC ElementPointerAPPLE; - PFNGLELEMENTPOINTERATIPROC ElementPointerATI; PFNGLENABLEPROC Enable; - PFNGLENABLECLIENTSTATEINDEXEDEXTPROC EnableClientStateIndexedEXT; - PFNGLENABLECLIENTSTATEIEXTPROC EnableClientStateiEXT; - PFNGLENABLEINDEXEDEXTPROC EnableIndexedEXT; - PFNGLENABLEVARIANTCLIENTSTATEEXTPROC EnableVariantClientStateEXT; PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib; - PFNGLENABLEVERTEXARRAYATTRIBEXTPROC EnableVertexArrayAttribEXT; - PFNGLENABLEVERTEXARRAYEXTPROC EnableVertexArrayEXT; - PFNGLENABLEVERTEXATTRIBAPPLEPROC EnableVertexAttribAPPLE; PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray; - PFNGLENABLEVERTEXATTRIBARRAYARBPROC EnableVertexAttribArrayARB; PFNGLENABLEIPROC Enablei; PFNGLENDCONDITIONALRENDERPROC EndConditionalRender; - PFNGLENDCONDITIONALRENDERNVPROC EndConditionalRenderNV; - PFNGLENDCONDITIONALRENDERNVXPROC EndConditionalRenderNVX; - PFNGLENDFRAGMENTSHADERATIPROC EndFragmentShaderATI; - PFNGLENDOCCLUSIONQUERYNVPROC EndOcclusionQueryNV; - PFNGLENDPERFMONITORAMDPROC EndPerfMonitorAMD; - PFNGLENDPERFQUERYINTELPROC EndPerfQueryINTEL; PFNGLENDQUERYPROC EndQuery; - PFNGLENDQUERYARBPROC EndQueryARB; PFNGLENDQUERYINDEXEDPROC EndQueryIndexed; PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback; - PFNGLENDTRANSFORMFEEDBACKEXTPROC EndTransformFeedbackEXT; - PFNGLENDTRANSFORMFEEDBACKNVPROC EndTransformFeedbackNV; - PFNGLENDVERTEXSHADEREXTPROC EndVertexShaderEXT; - PFNGLENDVIDEOCAPTURENVPROC EndVideoCaptureNV; - PFNGLEVALCOORD1XOESPROC EvalCoord1xOES; - PFNGLEVALCOORD1XVOESPROC EvalCoord1xvOES; - PFNGLEVALCOORD2XOESPROC EvalCoord2xOES; - PFNGLEVALCOORD2XVOESPROC EvalCoord2xvOES; - PFNGLEVALMAPSNVPROC EvalMapsNV; - PFNGLEVALUATEDEPTHVALUESARBPROC EvaluateDepthValuesARB; - PFNGLEXECUTEPROGRAMNVPROC ExecuteProgramNV; - PFNGLEXTRACTCOMPONENTEXTPROC ExtractComponentEXT; - PFNGLFEEDBACKBUFFERXOESPROC FeedbackBufferxOES; PFNGLFENCESYNCPROC FenceSync; - PFNGLFINALCOMBINERINPUTNVPROC FinalCombinerInputNV; PFNGLFINISHPROC Finish; - PFNGLFINISHASYNCSGIXPROC FinishAsyncSGIX; - PFNGLFINISHFENCEAPPLEPROC FinishFenceAPPLE; - PFNGLFINISHFENCENVPROC FinishFenceNV; - PFNGLFINISHOBJECTAPPLEPROC FinishObjectAPPLE; - PFNGLFINISHTEXTURESUNXPROC FinishTextureSUNX; PFNGLFLUSHPROC Flush; PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange; - PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC FlushMappedBufferRangeAPPLE; PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange; - PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC FlushMappedNamedBufferRangeEXT; - PFNGLFLUSHPIXELDATARANGENVPROC FlushPixelDataRangeNV; - PFNGLFLUSHRASTERSGIXPROC FlushRasterSGIX; - PFNGLFLUSHSTATICDATAIBMPROC FlushStaticDataIBM; - PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC FlushVertexArrayRangeAPPLE; - PFNGLFLUSHVERTEXARRAYRANGENVPROC FlushVertexArrayRangeNV; - PFNGLFOGCOORDFORMATNVPROC FogCoordFormatNV; - PFNGLFOGCOORDPOINTEREXTPROC FogCoordPointerEXT; - PFNGLFOGCOORDPOINTERLISTIBMPROC FogCoordPointerListIBM; - PFNGLFOGCOORDDEXTPROC FogCoorddEXT; - PFNGLFOGCOORDDVEXTPROC FogCoorddvEXT; - PFNGLFOGCOORDFEXTPROC FogCoordfEXT; - PFNGLFOGCOORDFVEXTPROC FogCoordfvEXT; - PFNGLFOGCOORDHNVPROC FogCoordhNV; - PFNGLFOGCOORDHVNVPROC FogCoordhvNV; - PFNGLFOGFUNCSGISPROC FogFuncSGIS; - PFNGLFOGXOESPROC FogxOES; - PFNGLFOGXVOESPROC FogxvOES; - PFNGLFRAGMENTCOLORMATERIALSGIXPROC FragmentColorMaterialSGIX; - PFNGLFRAGMENTCOVERAGECOLORNVPROC FragmentCoverageColorNV; - PFNGLFRAGMENTLIGHTMODELFSGIXPROC FragmentLightModelfSGIX; - PFNGLFRAGMENTLIGHTMODELFVSGIXPROC FragmentLightModelfvSGIX; - PFNGLFRAGMENTLIGHTMODELISGIXPROC FragmentLightModeliSGIX; - PFNGLFRAGMENTLIGHTMODELIVSGIXPROC FragmentLightModelivSGIX; - PFNGLFRAGMENTLIGHTFSGIXPROC FragmentLightfSGIX; - PFNGLFRAGMENTLIGHTFVSGIXPROC FragmentLightfvSGIX; - PFNGLFRAGMENTLIGHTISGIXPROC FragmentLightiSGIX; - PFNGLFRAGMENTLIGHTIVSGIXPROC FragmentLightivSGIX; - PFNGLFRAGMENTMATERIALFSGIXPROC FragmentMaterialfSGIX; - PFNGLFRAGMENTMATERIALFVSGIXPROC FragmentMaterialfvSGIX; - PFNGLFRAGMENTMATERIALISGIXPROC FragmentMaterialiSGIX; - PFNGLFRAGMENTMATERIALIVSGIXPROC FragmentMaterialivSGIX; - PFNGLFRAMETERMINATORGREMEDYPROC FrameTerminatorGREMEDY; - PFNGLFRAMEZOOMSGIXPROC FrameZoomSGIX; - PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC FramebufferDrawBufferEXT; - PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC FramebufferDrawBuffersEXT; - PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC FramebufferFetchBarrierEXT; PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri; - PFNGLFRAMEBUFFERPARAMETERIMESAPROC FramebufferParameteriMESA; - PFNGLFRAMEBUFFERREADBUFFEREXTPROC FramebufferReadBufferEXT; PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer; - PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC FramebufferRenderbufferEXT; - PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC FramebufferSampleLocationsfvARB; - PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC FramebufferSampleLocationsfvNV; - PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC FramebufferSamplePositionsfvAMD; PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture; PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D; - PFNGLFRAMEBUFFERTEXTURE1DEXTPROC FramebufferTexture1DEXT; PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D; - PFNGLFRAMEBUFFERTEXTURE2DEXTPROC FramebufferTexture2DEXT; PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D; - PFNGLFRAMEBUFFERTEXTURE3DEXTPROC FramebufferTexture3DEXT; - PFNGLFRAMEBUFFERTEXTUREARBPROC FramebufferTextureARB; - PFNGLFRAMEBUFFERTEXTUREEXTPROC FramebufferTextureEXT; - PFNGLFRAMEBUFFERTEXTUREFACEARBPROC FramebufferTextureFaceARB; - PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC FramebufferTextureFaceEXT; PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer; - PFNGLFRAMEBUFFERTEXTURELAYERARBPROC FramebufferTextureLayerARB; - PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC FramebufferTextureLayerEXT; - PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC FramebufferTextureMultiviewOVR; - PFNGLFREEOBJECTBUFFERATIPROC FreeObjectBufferATI; PFNGLFRONTFACEPROC FrontFace; - PFNGLFRUSTUMFOESPROC FrustumfOES; - PFNGLFRUSTUMXOESPROC FrustumxOES; - PFNGLGENASYNCMARKERSSGIXPROC GenAsyncMarkersSGIX; PFNGLGENBUFFERSPROC GenBuffers; - PFNGLGENBUFFERSARBPROC GenBuffersARB; - PFNGLGENFENCESAPPLEPROC GenFencesAPPLE; - PFNGLGENFENCESNVPROC GenFencesNV; - PFNGLGENFRAGMENTSHADERSATIPROC GenFragmentShadersATI; PFNGLGENFRAMEBUFFERSPROC GenFramebuffers; - PFNGLGENFRAMEBUFFERSEXTPROC GenFramebuffersEXT; - PFNGLGENNAMESAMDPROC GenNamesAMD; - PFNGLGENOCCLUSIONQUERIESNVPROC GenOcclusionQueriesNV; - PFNGLGENPATHSNVPROC GenPathsNV; - PFNGLGENPERFMONITORSAMDPROC GenPerfMonitorsAMD; PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines; - PFNGLGENPROGRAMSARBPROC GenProgramsARB; - PFNGLGENPROGRAMSNVPROC GenProgramsNV; PFNGLGENQUERIESPROC GenQueries; - PFNGLGENQUERIESARBPROC GenQueriesARB; - PFNGLGENQUERYRESOURCETAGNVPROC GenQueryResourceTagNV; PFNGLGENRENDERBUFFERSPROC GenRenderbuffers; - PFNGLGENRENDERBUFFERSEXTPROC GenRenderbuffersEXT; PFNGLGENSAMPLERSPROC GenSamplers; - PFNGLGENSEMAPHORESEXTPROC GenSemaphoresEXT; - PFNGLGENSYMBOLSEXTPROC GenSymbolsEXT; PFNGLGENTEXTURESPROC GenTextures; - PFNGLGENTEXTURESEXTPROC GenTexturesEXT; PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks; - PFNGLGENTRANSFORMFEEDBACKSNVPROC GenTransformFeedbacksNV; PFNGLGENVERTEXARRAYSPROC GenVertexArrays; - PFNGLGENVERTEXARRAYSAPPLEPROC GenVertexArraysAPPLE; - PFNGLGENVERTEXSHADERSEXTPROC GenVertexShadersEXT; PFNGLGENERATEMIPMAPPROC GenerateMipmap; - PFNGLGENERATEMIPMAPEXTPROC GenerateMipmapEXT; - PFNGLGENERATEMULTITEXMIPMAPEXTPROC GenerateMultiTexMipmapEXT; PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap; - PFNGLGENERATETEXTUREMIPMAPEXTPROC GenerateTextureMipmapEXT; PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv; PFNGLGETACTIVEATTRIBPROC GetActiveAttrib; - PFNGLGETACTIVEATTRIBARBPROC GetActiveAttribARB; PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName; PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName; PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv; PFNGLGETACTIVEUNIFORMPROC GetActiveUniform; - PFNGLGETACTIVEUNIFORMARBPROC GetActiveUniformARB; PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName; PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv; PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName; PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv; - PFNGLGETACTIVEVARYINGNVPROC GetActiveVaryingNV; - PFNGLGETARRAYOBJECTFVATIPROC GetArrayObjectfvATI; - PFNGLGETARRAYOBJECTIVATIPROC GetArrayObjectivATI; - PFNGLGETATTACHEDOBJECTSARBPROC GetAttachedObjectsARB; PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders; PFNGLGETATTRIBLOCATIONPROC GetAttribLocation; - PFNGLGETATTRIBLOCATIONARBPROC GetAttribLocationARB; - PFNGLGETBOOLEANINDEXEDVEXTPROC GetBooleanIndexedvEXT; PFNGLGETBOOLEANI_VPROC GetBooleani_v; PFNGLGETBOOLEANVPROC GetBooleanv; PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v; PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv; - PFNGLGETBUFFERPARAMETERIVARBPROC GetBufferParameterivARB; - PFNGLGETBUFFERPARAMETERUI64VNVPROC GetBufferParameterui64vNV; PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv; - PFNGLGETBUFFERPOINTERVARBPROC GetBufferPointervARB; PFNGLGETBUFFERSUBDATAPROC GetBufferSubData; - PFNGLGETBUFFERSUBDATAARBPROC GetBufferSubDataARB; - PFNGLGETCLIPPLANEFOESPROC GetClipPlanefOES; - PFNGLGETCLIPPLANEXOESPROC GetClipPlanexOES; - PFNGLGETCOLORTABLEEXTPROC GetColorTableEXT; - PFNGLGETCOLORTABLEPARAMETERFVEXTPROC GetColorTableParameterfvEXT; - PFNGLGETCOLORTABLEPARAMETERFVSGIPROC GetColorTableParameterfvSGI; - PFNGLGETCOLORTABLEPARAMETERIVEXTPROC GetColorTableParameterivEXT; - PFNGLGETCOLORTABLEPARAMETERIVSGIPROC GetColorTableParameterivSGI; - PFNGLGETCOLORTABLESGIPROC GetColorTableSGI; - PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GetCombinerInputParameterfvNV; - PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GetCombinerInputParameterivNV; - PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GetCombinerOutputParameterfvNV; - PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GetCombinerOutputParameterivNV; - PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GetCombinerStageParameterfvNV; - PFNGLGETCOMMANDHEADERNVPROC GetCommandHeaderNV; - PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC GetCompressedMultiTexImageEXT; PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage; - PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB; PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage; - PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC GetCompressedTextureImageEXT; PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage; - PFNGLGETCONVOLUTIONFILTEREXTPROC GetConvolutionFilterEXT; - PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC GetConvolutionParameterfvEXT; - PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC GetConvolutionParameterivEXT; - PFNGLGETCONVOLUTIONPARAMETERXVOESPROC GetConvolutionParameterxvOES; - PFNGLGETCOVERAGEMODULATIONTABLENVPROC GetCoverageModulationTableNV; PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog; - PFNGLGETDEBUGMESSAGELOGAMDPROC GetDebugMessageLogAMD; - PFNGLGETDEBUGMESSAGELOGARBPROC GetDebugMessageLogARB; - PFNGLGETDETAILTEXFUNCSGISPROC GetDetailTexFuncSGIS; - PFNGLGETDOUBLEINDEXEDVEXTPROC GetDoubleIndexedvEXT; PFNGLGETDOUBLEI_VPROC GetDoublei_v; - PFNGLGETDOUBLEI_VEXTPROC GetDoublei_vEXT; PFNGLGETDOUBLEVPROC GetDoublev; PFNGLGETERRORPROC GetError; - PFNGLGETFENCEIVNVPROC GetFenceivNV; - PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GetFinalCombinerInputParameterfvNV; - PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GetFinalCombinerInputParameterivNV; - PFNGLGETFIRSTPERFQUERYIDINTELPROC GetFirstPerfQueryIdINTEL; - PFNGLGETFIXEDVOESPROC GetFixedvOES; - PFNGLGETFLOATINDEXEDVEXTPROC GetFloatIndexedvEXT; PFNGLGETFLOATI_VPROC GetFloati_v; - PFNGLGETFLOATI_VEXTPROC GetFloati_vEXT; PFNGLGETFLOATVPROC GetFloatv; - PFNGLGETFOGFUNCSGISPROC GetFogFuncSGIS; PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex; PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation; - PFNGLGETFRAGDATALOCATIONEXTPROC GetFragDataLocationEXT; - PFNGLGETFRAGMENTLIGHTFVSGIXPROC GetFragmentLightfvSGIX; - PFNGLGETFRAGMENTLIGHTIVSGIXPROC GetFragmentLightivSGIX; - PFNGLGETFRAGMENTMATERIALFVSGIXPROC GetFragmentMaterialfvSGIX; - PFNGLGETFRAGMENTMATERIALIVSGIXPROC GetFragmentMaterialivSGIX; PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv; - PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GetFramebufferAttachmentParameterivEXT; - PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC GetFramebufferParameterfvAMD; PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv; - PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC GetFramebufferParameterivEXT; - PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC GetFramebufferParameterivMESA; PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus; - PFNGLGETGRAPHICSRESETSTATUSARBPROC GetGraphicsResetStatusARB; - PFNGLGETHANDLEARBPROC GetHandleARB; - PFNGLGETHISTOGRAMEXTPROC GetHistogramEXT; - PFNGLGETHISTOGRAMPARAMETERFVEXTPROC GetHistogramParameterfvEXT; - PFNGLGETHISTOGRAMPARAMETERIVEXTPROC GetHistogramParameterivEXT; - PFNGLGETHISTOGRAMPARAMETERXVOESPROC GetHistogramParameterxvOES; - PFNGLGETIMAGEHANDLEARBPROC GetImageHandleARB; - PFNGLGETIMAGEHANDLENVPROC GetImageHandleNV; - PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC GetImageTransformParameterfvHP; - PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC GetImageTransformParameterivHP; - PFNGLGETINFOLOGARBPROC GetInfoLogARB; - PFNGLGETINSTRUMENTSSGIXPROC GetInstrumentsSGIX; PFNGLGETINTEGER64I_VPROC GetInteger64i_v; PFNGLGETINTEGER64VPROC GetInteger64v; - PFNGLGETINTEGERINDEXEDVEXTPROC GetIntegerIndexedvEXT; PFNGLGETINTEGERI_VPROC GetIntegeri_v; - PFNGLGETINTEGERUI64I_VNVPROC GetIntegerui64i_vNV; - PFNGLGETINTEGERUI64VNVPROC GetIntegerui64vNV; PFNGLGETINTEGERVPROC GetIntegerv; - PFNGLGETINTERNALFORMATSAMPLEIVNVPROC GetInternalformatSampleivNV; PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v; PFNGLGETINTERNALFORMATIVPROC GetInternalformativ; - PFNGLGETINVARIANTBOOLEANVEXTPROC GetInvariantBooleanvEXT; - PFNGLGETINVARIANTFLOATVEXTPROC GetInvariantFloatvEXT; - PFNGLGETINVARIANTINTEGERVEXTPROC GetInvariantIntegervEXT; - PFNGLGETLIGHTXOESPROC GetLightxOES; - PFNGLGETLISTPARAMETERFVSGIXPROC GetListParameterfvSGIX; - PFNGLGETLISTPARAMETERIVSGIXPROC GetListParameterivSGIX; - PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC GetLocalConstantBooleanvEXT; - PFNGLGETLOCALCONSTANTFLOATVEXTPROC GetLocalConstantFloatvEXT; - PFNGLGETLOCALCONSTANTINTEGERVEXTPROC GetLocalConstantIntegervEXT; - PFNGLGETMAPATTRIBPARAMETERFVNVPROC GetMapAttribParameterfvNV; - PFNGLGETMAPATTRIBPARAMETERIVNVPROC GetMapAttribParameterivNV; - PFNGLGETMAPCONTROLPOINTSNVPROC GetMapControlPointsNV; - PFNGLGETMAPPARAMETERFVNVPROC GetMapParameterfvNV; - PFNGLGETMAPPARAMETERIVNVPROC GetMapParameterivNV; - PFNGLGETMAPXVOESPROC GetMapxvOES; - PFNGLGETMATERIALXOESPROC GetMaterialxOES; - PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC GetMemoryObjectDetachedResourcesuivNV; - PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC GetMemoryObjectParameterivEXT; - PFNGLGETMINMAXEXTPROC GetMinmaxEXT; - PFNGLGETMINMAXPARAMETERFVEXTPROC GetMinmaxParameterfvEXT; - PFNGLGETMINMAXPARAMETERIVEXTPROC GetMinmaxParameterivEXT; - PFNGLGETMULTITEXENVFVEXTPROC GetMultiTexEnvfvEXT; - PFNGLGETMULTITEXENVIVEXTPROC GetMultiTexEnvivEXT; - PFNGLGETMULTITEXGENDVEXTPROC GetMultiTexGendvEXT; - PFNGLGETMULTITEXGENFVEXTPROC GetMultiTexGenfvEXT; - PFNGLGETMULTITEXGENIVEXTPROC GetMultiTexGenivEXT; - PFNGLGETMULTITEXIMAGEEXTPROC GetMultiTexImageEXT; - PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC GetMultiTexLevelParameterfvEXT; - PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC GetMultiTexLevelParameterivEXT; - PFNGLGETMULTITEXPARAMETERIIVEXTPROC GetMultiTexParameterIivEXT; - PFNGLGETMULTITEXPARAMETERIUIVEXTPROC GetMultiTexParameterIuivEXT; - PFNGLGETMULTITEXPARAMETERFVEXTPROC GetMultiTexParameterfvEXT; - PFNGLGETMULTITEXPARAMETERIVEXTPROC GetMultiTexParameterivEXT; PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv; - PFNGLGETMULTISAMPLEFVNVPROC GetMultisamplefvNV; PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v; PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv; - PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC GetNamedBufferParameterivEXT; - PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC GetNamedBufferParameterui64vNV; PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv; - PFNGLGETNAMEDBUFFERPOINTERVEXTPROC GetNamedBufferPointervEXT; PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData; - PFNGLGETNAMEDBUFFERSUBDATAEXTPROC GetNamedBufferSubDataEXT; PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv; - PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC - GetNamedFramebufferAttachmentParameterivEXT; - PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC GetNamedFramebufferParameterfvAMD; PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv; - PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC GetNamedFramebufferParameterivEXT; - PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC GetNamedProgramLocalParameterIivEXT; - PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC GetNamedProgramLocalParameterIuivEXT; - PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC GetNamedProgramLocalParameterdvEXT; - PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC GetNamedProgramLocalParameterfvEXT; - PFNGLGETNAMEDPROGRAMSTRINGEXTPROC GetNamedProgramStringEXT; - PFNGLGETNAMEDPROGRAMIVEXTPROC GetNamedProgramivEXT; PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv; - PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC GetNamedRenderbufferParameterivEXT; - PFNGLGETNAMEDSTRINGARBPROC GetNamedStringARB; - PFNGLGETNAMEDSTRINGIVARBPROC GetNamedStringivARB; - PFNGLGETNEXTPERFQUERYIDINTELPROC GetNextPerfQueryIdINTEL; - PFNGLGETOBJECTBUFFERFVATIPROC GetObjectBufferfvATI; - PFNGLGETOBJECTBUFFERIVATIPROC GetObjectBufferivATI; PFNGLGETOBJECTLABELPROC GetObjectLabel; - PFNGLGETOBJECTLABELEXTPROC GetObjectLabelEXT; - PFNGLGETOBJECTPARAMETERFVARBPROC GetObjectParameterfvARB; - PFNGLGETOBJECTPARAMETERIVAPPLEPROC GetObjectParameterivAPPLE; - PFNGLGETOBJECTPARAMETERIVARBPROC GetObjectParameterivARB; PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel; - PFNGLGETOCCLUSIONQUERYIVNVPROC GetOcclusionQueryivNV; - PFNGLGETOCCLUSIONQUERYUIVNVPROC GetOcclusionQueryuivNV; - PFNGLGETPATHCOMMANDSNVPROC GetPathCommandsNV; - PFNGLGETPATHCOORDSNVPROC GetPathCoordsNV; - PFNGLGETPATHDASHARRAYNVPROC GetPathDashArrayNV; - PFNGLGETPATHLENGTHNVPROC GetPathLengthNV; - PFNGLGETPATHMETRICRANGENVPROC GetPathMetricRangeNV; - PFNGLGETPATHMETRICSNVPROC GetPathMetricsNV; - PFNGLGETPATHPARAMETERFVNVPROC GetPathParameterfvNV; - PFNGLGETPATHPARAMETERIVNVPROC GetPathParameterivNV; - PFNGLGETPATHSPACINGNVPROC GetPathSpacingNV; - PFNGLGETPERFCOUNTERINFOINTELPROC GetPerfCounterInfoINTEL; - PFNGLGETPERFMONITORCOUNTERDATAAMDPROC GetPerfMonitorCounterDataAMD; - PFNGLGETPERFMONITORCOUNTERINFOAMDPROC GetPerfMonitorCounterInfoAMD; - PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC GetPerfMonitorCounterStringAMD; - PFNGLGETPERFMONITORCOUNTERSAMDPROC GetPerfMonitorCountersAMD; - PFNGLGETPERFMONITORGROUPSTRINGAMDPROC GetPerfMonitorGroupStringAMD; - PFNGLGETPERFMONITORGROUPSAMDPROC GetPerfMonitorGroupsAMD; - PFNGLGETPERFQUERYDATAINTELPROC GetPerfQueryDataINTEL; - PFNGLGETPERFQUERYIDBYNAMEINTELPROC GetPerfQueryIdByNameINTEL; - PFNGLGETPERFQUERYINFOINTELPROC GetPerfQueryInfoINTEL; - PFNGLGETPIXELMAPXVPROC GetPixelMapxv; - PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC GetPixelTexGenParameterfvSGIS; - PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC GetPixelTexGenParameterivSGIS; - PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC GetPixelTransformParameterfvEXT; - PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC GetPixelTransformParameterivEXT; - PFNGLGETPOINTERINDEXEDVEXTPROC GetPointerIndexedvEXT; - PFNGLGETPOINTERI_VEXTPROC GetPointeri_vEXT; PFNGLGETPOINTERVPROC GetPointerv; - PFNGLGETPOINTERVEXTPROC GetPointervEXT; PFNGLGETPROGRAMBINARYPROC GetProgramBinary; - PFNGLGETPROGRAMENVPARAMETERIIVNVPROC GetProgramEnvParameterIivNV; - PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC GetProgramEnvParameterIuivNV; - PFNGLGETPROGRAMENVPARAMETERDVARBPROC GetProgramEnvParameterdvARB; - PFNGLGETPROGRAMENVPARAMETERFVARBPROC GetProgramEnvParameterfvARB; PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv; - PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC GetProgramLocalParameterIivNV; - PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC GetProgramLocalParameterIuivNV; - PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GetProgramLocalParameterdvARB; - PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GetProgramLocalParameterfvARB; - PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC GetProgramNamedParameterdvNV; - PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC GetProgramNamedParameterfvNV; - PFNGLGETPROGRAMPARAMETERDVNVPROC GetProgramParameterdvNV; - PFNGLGETPROGRAMPARAMETERFVNVPROC GetProgramParameterfvNV; PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog; PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv; PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex; PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation; PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex; PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName; - PFNGLGETPROGRAMRESOURCEFVNVPROC GetProgramResourcefvNV; PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv; PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv; - PFNGLGETPROGRAMSTRINGARBPROC GetProgramStringARB; - PFNGLGETPROGRAMSTRINGNVPROC GetProgramStringNV; - PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC GetProgramSubroutineParameteruivNV; PFNGLGETPROGRAMIVPROC GetProgramiv; - PFNGLGETPROGRAMIVARBPROC GetProgramivARB; - PFNGLGETPROGRAMIVNVPROC GetProgramivNV; PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v; PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv; PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v; PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv; PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv; PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v; - PFNGLGETQUERYOBJECTI64VEXTPROC GetQueryObjecti64vEXT; PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv; - PFNGLGETQUERYOBJECTIVARBPROC GetQueryObjectivARB; PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v; - PFNGLGETQUERYOBJECTUI64VEXTPROC GetQueryObjectui64vEXT; PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv; - PFNGLGETQUERYOBJECTUIVARBPROC GetQueryObjectuivARB; PFNGLGETQUERYIVPROC GetQueryiv; - PFNGLGETQUERYIVARBPROC GetQueryivARB; PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv; - PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC GetRenderbufferParameterivEXT; PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv; PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv; PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv; PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv; - PFNGLGETSEMAPHOREPARAMETERIVNVPROC GetSemaphoreParameterivNV; - PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC GetSemaphoreParameterui64vEXT; - PFNGLGETSEPARABLEFILTEREXTPROC GetSeparableFilterEXT; PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat; PFNGLGETSHADERSOURCEPROC GetShaderSource; - PFNGLGETSHADERSOURCEARBPROC GetShaderSourceARB; PFNGLGETSHADERIVPROC GetShaderiv; - PFNGLGETSHADINGRATEIMAGEPALETTENVPROC GetShadingRateImagePaletteNV; - PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC GetShadingRateSampleLocationivNV; - PFNGLGETSHARPENTEXFUNCSGISPROC GetSharpenTexFuncSGIS; - PFNGLGETSTAGEINDEXNVPROC GetStageIndexNV; PFNGLGETSTRINGPROC GetString; PFNGLGETSTRINGIPROC GetStringi; PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex; PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation; PFNGLGETSYNCIVPROC GetSynciv; - PFNGLGETTEXBUMPPARAMETERFVATIPROC GetTexBumpParameterfvATI; - PFNGLGETTEXBUMPPARAMETERIVATIPROC GetTexBumpParameterivATI; - PFNGLGETTEXENVXVOESPROC GetTexEnvxvOES; - PFNGLGETTEXFILTERFUNCSGISPROC GetTexFilterFuncSGIS; - PFNGLGETTEXGENXVOESPROC GetTexGenxvOES; PFNGLGETTEXIMAGEPROC GetTexImage; PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv; PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; - PFNGLGETTEXLEVELPARAMETERXVOESPROC GetTexLevelParameterxvOES; PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv; - PFNGLGETTEXPARAMETERIIVEXTPROC GetTexParameterIivEXT; PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv; - PFNGLGETTEXPARAMETERIUIVEXTPROC GetTexParameterIuivEXT; - PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC GetTexParameterPointervAPPLE; PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv; PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv; - PFNGLGETTEXPARAMETERXVOESPROC GetTexParameterxvOES; - PFNGLGETTEXTUREHANDLEARBPROC GetTextureHandleARB; - PFNGLGETTEXTUREHANDLENVPROC GetTextureHandleNV; PFNGLGETTEXTUREIMAGEPROC GetTextureImage; - PFNGLGETTEXTUREIMAGEEXTPROC GetTextureImageEXT; PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv; - PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC GetTextureLevelParameterfvEXT; PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv; - PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC GetTextureLevelParameterivEXT; PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv; - PFNGLGETTEXTUREPARAMETERIIVEXTPROC GetTextureParameterIivEXT; PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv; - PFNGLGETTEXTUREPARAMETERIUIVEXTPROC GetTextureParameterIuivEXT; PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv; - PFNGLGETTEXTUREPARAMETERFVEXTPROC GetTextureParameterfvEXT; PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv; - PFNGLGETTEXTUREPARAMETERIVEXTPROC GetTextureParameterivEXT; - PFNGLGETTEXTURESAMPLERHANDLEARBPROC GetTextureSamplerHandleARB; - PFNGLGETTEXTURESAMPLERHANDLENVPROC GetTextureSamplerHandleNV; PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage; - PFNGLGETTRACKMATRIXIVNVPROC GetTrackMatrixivNV; PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying; - PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC GetTransformFeedbackVaryingEXT; - PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC GetTransformFeedbackVaryingNV; PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v; PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v; PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv; PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex; - PFNGLGETUNIFORMBUFFERSIZEEXTPROC GetUniformBufferSizeEXT; PFNGLGETUNIFORMINDICESPROC GetUniformIndices; PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation; - PFNGLGETUNIFORMLOCATIONARBPROC GetUniformLocationARB; - PFNGLGETUNIFORMOFFSETEXTPROC GetUniformOffsetEXT; PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv; PFNGLGETUNIFORMDVPROC GetUniformdv; PFNGLGETUNIFORMFVPROC GetUniformfv; - PFNGLGETUNIFORMFVARBPROC GetUniformfvARB; - PFNGLGETUNIFORMI64VARBPROC GetUniformi64vARB; - PFNGLGETUNIFORMI64VNVPROC GetUniformi64vNV; PFNGLGETUNIFORMIVPROC GetUniformiv; - PFNGLGETUNIFORMIVARBPROC GetUniformivARB; - PFNGLGETUNIFORMUI64VARBPROC GetUniformui64vARB; - PFNGLGETUNIFORMUI64VNVPROC GetUniformui64vNV; PFNGLGETUNIFORMUIVPROC GetUniformuiv; - PFNGLGETUNIFORMUIVEXTPROC GetUniformuivEXT; - PFNGLGETUNSIGNEDBYTEI_VEXTPROC GetUnsignedBytei_vEXT; - PFNGLGETUNSIGNEDBYTEVEXTPROC GetUnsignedBytevEXT; - PFNGLGETVARIANTARRAYOBJECTFVATIPROC GetVariantArrayObjectfvATI; - PFNGLGETVARIANTARRAYOBJECTIVATIPROC GetVariantArrayObjectivATI; - PFNGLGETVARIANTBOOLEANVEXTPROC GetVariantBooleanvEXT; - PFNGLGETVARIANTFLOATVEXTPROC GetVariantFloatvEXT; - PFNGLGETVARIANTINTEGERVEXTPROC GetVariantIntegervEXT; - PFNGLGETVARIANTPOINTERVEXTPROC GetVariantPointervEXT; - PFNGLGETVARYINGLOCATIONNVPROC GetVaryingLocationNV; PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv; PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv; - PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC GetVertexArrayIntegeri_vEXT; - PFNGLGETVERTEXARRAYINTEGERVEXTPROC GetVertexArrayIntegervEXT; - PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC GetVertexArrayPointeri_vEXT; - PFNGLGETVERTEXARRAYPOINTERVEXTPROC GetVertexArrayPointervEXT; PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv; - PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC GetVertexAttribArrayObjectfvATI; - PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC GetVertexAttribArrayObjectivATI; PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv; - PFNGLGETVERTEXATTRIBIIVEXTPROC GetVertexAttribIivEXT; PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv; - PFNGLGETVERTEXATTRIBIUIVEXTPROC GetVertexAttribIuivEXT; PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv; - PFNGLGETVERTEXATTRIBLDVEXTPROC GetVertexAttribLdvEXT; - PFNGLGETVERTEXATTRIBLI64VNVPROC GetVertexAttribLi64vNV; - PFNGLGETVERTEXATTRIBLUI64VARBPROC GetVertexAttribLui64vARB; - PFNGLGETVERTEXATTRIBLUI64VNVPROC GetVertexAttribLui64vNV; PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv; - PFNGLGETVERTEXATTRIBPOINTERVARBPROC GetVertexAttribPointervARB; - PFNGLGETVERTEXATTRIBPOINTERVNVPROC GetVertexAttribPointervNV; PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv; - PFNGLGETVERTEXATTRIBDVARBPROC GetVertexAttribdvARB; - PFNGLGETVERTEXATTRIBDVNVPROC GetVertexAttribdvNV; PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv; - PFNGLGETVERTEXATTRIBFVARBPROC GetVertexAttribfvARB; - PFNGLGETVERTEXATTRIBFVNVPROC GetVertexAttribfvNV; PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv; - PFNGLGETVERTEXATTRIBIVARBPROC GetVertexAttribivARB; - PFNGLGETVERTEXATTRIBIVNVPROC GetVertexAttribivNV; - PFNGLGETVIDEOCAPTURESTREAMDVNVPROC GetVideoCaptureStreamdvNV; - PFNGLGETVIDEOCAPTURESTREAMFVNVPROC GetVideoCaptureStreamfvNV; - PFNGLGETVIDEOCAPTURESTREAMIVNVPROC GetVideoCaptureStreamivNV; - PFNGLGETVIDEOCAPTUREIVNVPROC GetVideoCaptureivNV; - PFNGLGETVIDEOI64VNVPROC GetVideoi64vNV; - PFNGLGETVIDEOIVNVPROC GetVideoivNV; - PFNGLGETVIDEOUI64VNVPROC GetVideoui64vNV; - PFNGLGETVIDEOUIVNVPROC GetVideouivNV; - PFNGLGETVKPROCADDRNVPROC GetVkProcAddrNV; PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage; - PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC GetnCompressedTexImageARB; PFNGLGETNTEXIMAGEPROC GetnTexImage; - PFNGLGETNTEXIMAGEARBPROC GetnTexImageARB; PFNGLGETNUNIFORMDVPROC GetnUniformdv; - PFNGLGETNUNIFORMDVARBPROC GetnUniformdvARB; PFNGLGETNUNIFORMFVPROC GetnUniformfv; - PFNGLGETNUNIFORMFVARBPROC GetnUniformfvARB; - PFNGLGETNUNIFORMI64VARBPROC GetnUniformi64vARB; PFNGLGETNUNIFORMIVPROC GetnUniformiv; - PFNGLGETNUNIFORMIVARBPROC GetnUniformivARB; - PFNGLGETNUNIFORMUI64VARBPROC GetnUniformui64vARB; PFNGLGETNUNIFORMUIVPROC GetnUniformuiv; - PFNGLGETNUNIFORMUIVARBPROC GetnUniformuivARB; - PFNGLGLOBALALPHAFACTORBSUNPROC GlobalAlphaFactorbSUN; - PFNGLGLOBALALPHAFACTORDSUNPROC GlobalAlphaFactordSUN; - PFNGLGLOBALALPHAFACTORFSUNPROC GlobalAlphaFactorfSUN; - PFNGLGLOBALALPHAFACTORISUNPROC GlobalAlphaFactoriSUN; - PFNGLGLOBALALPHAFACTORSSUNPROC GlobalAlphaFactorsSUN; - PFNGLGLOBALALPHAFACTORUBSUNPROC GlobalAlphaFactorubSUN; - PFNGLGLOBALALPHAFACTORUISUNPROC GlobalAlphaFactoruiSUN; - PFNGLGLOBALALPHAFACTORUSSUNPROC GlobalAlphaFactorusSUN; PFNGLHINTPROC Hint; - PFNGLHINTPGIPROC HintPGI; - PFNGLHISTOGRAMEXTPROC HistogramEXT; - PFNGLIGLOOINTERFACESGIXPROC IglooInterfaceSGIX; - PFNGLIMAGETRANSFORMPARAMETERFHPPROC ImageTransformParameterfHP; - PFNGLIMAGETRANSFORMPARAMETERFVHPPROC ImageTransformParameterfvHP; - PFNGLIMAGETRANSFORMPARAMETERIHPPROC ImageTransformParameteriHP; - PFNGLIMAGETRANSFORMPARAMETERIVHPPROC ImageTransformParameterivHP; - PFNGLIMPORTMEMORYFDEXTPROC ImportMemoryFdEXT; - PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC ImportMemoryWin32HandleEXT; - PFNGLIMPORTMEMORYWIN32NAMEEXTPROC ImportMemoryWin32NameEXT; - PFNGLIMPORTSEMAPHOREFDEXTPROC ImportSemaphoreFdEXT; - PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC ImportSemaphoreWin32HandleEXT; - PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC ImportSemaphoreWin32NameEXT; - PFNGLIMPORTSYNCEXTPROC ImportSyncEXT; - PFNGLINDEXFORMATNVPROC IndexFormatNV; - PFNGLINDEXFUNCEXTPROC IndexFuncEXT; - PFNGLINDEXMATERIALEXTPROC IndexMaterialEXT; - PFNGLINDEXPOINTEREXTPROC IndexPointerEXT; - PFNGLINDEXPOINTERLISTIBMPROC IndexPointerListIBM; - PFNGLINDEXXOESPROC IndexxOES; - PFNGLINDEXXVOESPROC IndexxvOES; - PFNGLINSERTCOMPONENTEXTPROC InsertComponentEXT; - PFNGLINSERTEVENTMARKEREXTPROC InsertEventMarkerEXT; - PFNGLINSTRUMENTSBUFFERSGIXPROC InstrumentsBufferSGIX; - PFNGLINTERPOLATEPATHSNVPROC InterpolatePathsNV; PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData; PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData; PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer; @@ -11154,1360 +10425,329 @@ typedef struct GladGLContext { PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer; PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage; PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage; - PFNGLISASYNCMARKERSGIXPROC IsAsyncMarkerSGIX; PFNGLISBUFFERPROC IsBuffer; - PFNGLISBUFFERARBPROC IsBufferARB; - PFNGLISBUFFERRESIDENTNVPROC IsBufferResidentNV; - PFNGLISCOMMANDLISTNVPROC IsCommandListNV; PFNGLISENABLEDPROC IsEnabled; - PFNGLISENABLEDINDEXEDEXTPROC IsEnabledIndexedEXT; PFNGLISENABLEDIPROC IsEnabledi; - PFNGLISFENCEAPPLEPROC IsFenceAPPLE; - PFNGLISFENCENVPROC IsFenceNV; PFNGLISFRAMEBUFFERPROC IsFramebuffer; - PFNGLISFRAMEBUFFEREXTPROC IsFramebufferEXT; - PFNGLISIMAGEHANDLERESIDENTARBPROC IsImageHandleResidentARB; - PFNGLISIMAGEHANDLERESIDENTNVPROC IsImageHandleResidentNV; - PFNGLISMEMORYOBJECTEXTPROC IsMemoryObjectEXT; - PFNGLISNAMEAMDPROC IsNameAMD; - PFNGLISNAMEDBUFFERRESIDENTNVPROC IsNamedBufferResidentNV; - PFNGLISNAMEDSTRINGARBPROC IsNamedStringARB; - PFNGLISOBJECTBUFFERATIPROC IsObjectBufferATI; - PFNGLISOCCLUSIONQUERYNVPROC IsOcclusionQueryNV; - PFNGLISPATHNVPROC IsPathNV; - PFNGLISPOINTINFILLPATHNVPROC IsPointInFillPathNV; - PFNGLISPOINTINSTROKEPATHNVPROC IsPointInStrokePathNV; PFNGLISPROGRAMPROC IsProgram; - PFNGLISPROGRAMARBPROC IsProgramARB; - PFNGLISPROGRAMNVPROC IsProgramNV; PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline; PFNGLISQUERYPROC IsQuery; - PFNGLISQUERYARBPROC IsQueryARB; PFNGLISRENDERBUFFERPROC IsRenderbuffer; - PFNGLISRENDERBUFFEREXTPROC IsRenderbufferEXT; PFNGLISSAMPLERPROC IsSampler; - PFNGLISSEMAPHOREEXTPROC IsSemaphoreEXT; PFNGLISSHADERPROC IsShader; - PFNGLISSTATENVPROC IsStateNV; PFNGLISSYNCPROC IsSync; PFNGLISTEXTUREPROC IsTexture; - PFNGLISTEXTUREEXTPROC IsTextureEXT; - PFNGLISTEXTUREHANDLERESIDENTARBPROC IsTextureHandleResidentARB; - PFNGLISTEXTUREHANDLERESIDENTNVPROC IsTextureHandleResidentNV; PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback; - PFNGLISTRANSFORMFEEDBACKNVPROC IsTransformFeedbackNV; - PFNGLISVARIANTENABLEDEXTPROC IsVariantEnabledEXT; PFNGLISVERTEXARRAYPROC IsVertexArray; - PFNGLISVERTEXARRAYAPPLEPROC IsVertexArrayAPPLE; - PFNGLISVERTEXATTRIBENABLEDAPPLEPROC IsVertexAttribEnabledAPPLE; - PFNGLLGPUCOPYIMAGESUBDATANVXPROC LGPUCopyImageSubDataNVX; - PFNGLLGPUINTERLOCKNVXPROC LGPUInterlockNVX; - PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC LGPUNamedBufferSubDataNVX; - PFNGLLABELOBJECTEXTPROC LabelObjectEXT; - PFNGLLIGHTENVISGIXPROC LightEnviSGIX; - PFNGLLIGHTMODELXOESPROC LightModelxOES; - PFNGLLIGHTMODELXVOESPROC LightModelxvOES; - PFNGLLIGHTXOESPROC LightxOES; - PFNGLLIGHTXVOESPROC LightxvOES; PFNGLLINEWIDTHPROC LineWidth; - PFNGLLINEWIDTHXOESPROC LineWidthxOES; PFNGLLINKPROGRAMPROC LinkProgram; - PFNGLLINKPROGRAMARBPROC LinkProgramARB; - PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC ListDrawCommandsStatesClientNV; - PFNGLLISTPARAMETERFSGIXPROC ListParameterfSGIX; - PFNGLLISTPARAMETERFVSGIXPROC ListParameterfvSGIX; - PFNGLLISTPARAMETERISGIXPROC ListParameteriSGIX; - PFNGLLISTPARAMETERIVSGIXPROC ListParameterivSGIX; - PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC LoadIdentityDeformationMapSGIX; - PFNGLLOADMATRIXXOESPROC LoadMatrixxOES; - PFNGLLOADPROGRAMNVPROC LoadProgramNV; - PFNGLLOADTRANSPOSEMATRIXDARBPROC LoadTransposeMatrixdARB; - PFNGLLOADTRANSPOSEMATRIXFARBPROC LoadTransposeMatrixfARB; - PFNGLLOADTRANSPOSEMATRIXXOESPROC LoadTransposeMatrixxOES; - PFNGLLOCKARRAYSEXTPROC LockArraysEXT; PFNGLLOGICOPPROC LogicOp; - PFNGLMAKEBUFFERNONRESIDENTNVPROC MakeBufferNonResidentNV; - PFNGLMAKEBUFFERRESIDENTNVPROC MakeBufferResidentNV; - PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC MakeImageHandleNonResidentARB; - PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC MakeImageHandleNonResidentNV; - PFNGLMAKEIMAGEHANDLERESIDENTARBPROC MakeImageHandleResidentARB; - PFNGLMAKEIMAGEHANDLERESIDENTNVPROC MakeImageHandleResidentNV; - PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC MakeNamedBufferNonResidentNV; - PFNGLMAKENAMEDBUFFERRESIDENTNVPROC MakeNamedBufferResidentNV; - PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC MakeTextureHandleNonResidentARB; - PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC MakeTextureHandleNonResidentNV; - PFNGLMAKETEXTUREHANDLERESIDENTARBPROC MakeTextureHandleResidentARB; - PFNGLMAKETEXTUREHANDLERESIDENTNVPROC MakeTextureHandleResidentNV; - PFNGLMAP1XOESPROC Map1xOES; - PFNGLMAP2XOESPROC Map2xOES; PFNGLMAPBUFFERPROC MapBuffer; - PFNGLMAPBUFFERARBPROC MapBufferARB; PFNGLMAPBUFFERRANGEPROC MapBufferRange; - PFNGLMAPCONTROLPOINTSNVPROC MapControlPointsNV; - PFNGLMAPGRID1XOESPROC MapGrid1xOES; - PFNGLMAPGRID2XOESPROC MapGrid2xOES; PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer; - PFNGLMAPNAMEDBUFFEREXTPROC MapNamedBufferEXT; PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange; - PFNGLMAPNAMEDBUFFERRANGEEXTPROC MapNamedBufferRangeEXT; - PFNGLMAPOBJECTBUFFERATIPROC MapObjectBufferATI; - PFNGLMAPPARAMETERFVNVPROC MapParameterfvNV; - PFNGLMAPPARAMETERIVNVPROC MapParameterivNV; - PFNGLMAPTEXTURE2DINTELPROC MapTexture2DINTEL; - PFNGLMAPVERTEXATTRIB1DAPPLEPROC MapVertexAttrib1dAPPLE; - PFNGLMAPVERTEXATTRIB1FAPPLEPROC MapVertexAttrib1fAPPLE; - PFNGLMAPVERTEXATTRIB2DAPPLEPROC MapVertexAttrib2dAPPLE; - PFNGLMAPVERTEXATTRIB2FAPPLEPROC MapVertexAttrib2fAPPLE; - PFNGLMATERIALXOESPROC MaterialxOES; - PFNGLMATERIALXVOESPROC MaterialxvOES; - PFNGLMATRIXFRUSTUMEXTPROC MatrixFrustumEXT; - PFNGLMATRIXINDEXPOINTERARBPROC MatrixIndexPointerARB; - PFNGLMATRIXINDEXUBVARBPROC MatrixIndexubvARB; - PFNGLMATRIXINDEXUIVARBPROC MatrixIndexuivARB; - PFNGLMATRIXINDEXUSVARBPROC MatrixIndexusvARB; - PFNGLMATRIXLOAD3X2FNVPROC MatrixLoad3x2fNV; - PFNGLMATRIXLOAD3X3FNVPROC MatrixLoad3x3fNV; - PFNGLMATRIXLOADIDENTITYEXTPROC MatrixLoadIdentityEXT; - PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC MatrixLoadTranspose3x3fNV; - PFNGLMATRIXLOADTRANSPOSEDEXTPROC MatrixLoadTransposedEXT; - PFNGLMATRIXLOADTRANSPOSEFEXTPROC MatrixLoadTransposefEXT; - PFNGLMATRIXLOADDEXTPROC MatrixLoaddEXT; - PFNGLMATRIXLOADFEXTPROC MatrixLoadfEXT; - PFNGLMATRIXMULT3X2FNVPROC MatrixMult3x2fNV; - PFNGLMATRIXMULT3X3FNVPROC MatrixMult3x3fNV; - PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC MatrixMultTranspose3x3fNV; - PFNGLMATRIXMULTTRANSPOSEDEXTPROC MatrixMultTransposedEXT; - PFNGLMATRIXMULTTRANSPOSEFEXTPROC MatrixMultTransposefEXT; - PFNGLMATRIXMULTDEXTPROC MatrixMultdEXT; - PFNGLMATRIXMULTFEXTPROC MatrixMultfEXT; - PFNGLMATRIXORTHOEXTPROC MatrixOrthoEXT; - PFNGLMATRIXPOPEXTPROC MatrixPopEXT; - PFNGLMATRIXPUSHEXTPROC MatrixPushEXT; - PFNGLMATRIXROTATEDEXTPROC MatrixRotatedEXT; - PFNGLMATRIXROTATEFEXTPROC MatrixRotatefEXT; - PFNGLMATRIXSCALEDEXTPROC MatrixScaledEXT; - PFNGLMATRIXSCALEFEXTPROC MatrixScalefEXT; - PFNGLMATRIXTRANSLATEDEXTPROC MatrixTranslatedEXT; - PFNGLMATRIXTRANSLATEFEXTPROC MatrixTranslatefEXT; - PFNGLMAXSHADERCOMPILERTHREADSARBPROC MaxShaderCompilerThreadsARB; - PFNGLMAXSHADERCOMPILERTHREADSKHRPROC MaxShaderCompilerThreadsKHR; PFNGLMEMORYBARRIERPROC MemoryBarrier; PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion; - PFNGLMEMORYBARRIEREXTPROC MemoryBarrierEXT; - PFNGLMEMORYOBJECTPARAMETERIVEXTPROC MemoryObjectParameterivEXT; PFNGLMINSAMPLESHADINGPROC MinSampleShading; - PFNGLMINSAMPLESHADINGARBPROC MinSampleShadingARB; - PFNGLMINMAXEXTPROC MinmaxEXT; - PFNGLMULTMATRIXXOESPROC MultMatrixxOES; - PFNGLMULTTRANSPOSEMATRIXDARBPROC MultTransposeMatrixdARB; - PFNGLMULTTRANSPOSEMATRIXFARBPROC MultTransposeMatrixfARB; - PFNGLMULTTRANSPOSEMATRIXXOESPROC MultTransposeMatrixxOES; PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays; - PFNGLMULTIDRAWARRAYSEXTPROC MultiDrawArraysEXT; PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect; - PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC MultiDrawArraysIndirectAMD; - PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC MultiDrawArraysIndirectBindlessCountNV; - PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC MultiDrawArraysIndirectBindlessNV; PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount; - PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC MultiDrawArraysIndirectCountARB; - PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC MultiDrawElementArrayAPPLE; PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements; PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex; - PFNGLMULTIDRAWELEMENTSEXTPROC MultiDrawElementsEXT; PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect; - PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC MultiDrawElementsIndirectAMD; - PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC MultiDrawElementsIndirectBindlessCountNV; - PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC MultiDrawElementsIndirectBindlessNV; PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount; - PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC MultiDrawElementsIndirectCountARB; - PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC MultiDrawMeshTasksIndirectCountNV; - PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC MultiDrawMeshTasksIndirectNV; - PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC MultiDrawRangeElementArrayAPPLE; - PFNGLMULTIMODEDRAWARRAYSIBMPROC MultiModeDrawArraysIBM; - PFNGLMULTIMODEDRAWELEMENTSIBMPROC MultiModeDrawElementsIBM; - PFNGLMULTITEXBUFFEREXTPROC MultiTexBufferEXT; - PFNGLMULTITEXCOORD1BOESPROC MultiTexCoord1bOES; - PFNGLMULTITEXCOORD1BVOESPROC MultiTexCoord1bvOES; - PFNGLMULTITEXCOORD1DARBPROC MultiTexCoord1dARB; - PFNGLMULTITEXCOORD1DVARBPROC MultiTexCoord1dvARB; - PFNGLMULTITEXCOORD1FARBPROC MultiTexCoord1fARB; - PFNGLMULTITEXCOORD1FVARBPROC MultiTexCoord1fvARB; - PFNGLMULTITEXCOORD1HNVPROC MultiTexCoord1hNV; - PFNGLMULTITEXCOORD1HVNVPROC MultiTexCoord1hvNV; - PFNGLMULTITEXCOORD1IARBPROC MultiTexCoord1iARB; - PFNGLMULTITEXCOORD1IVARBPROC MultiTexCoord1ivARB; - PFNGLMULTITEXCOORD1SARBPROC MultiTexCoord1sARB; - PFNGLMULTITEXCOORD1SVARBPROC MultiTexCoord1svARB; - PFNGLMULTITEXCOORD1XOESPROC MultiTexCoord1xOES; - PFNGLMULTITEXCOORD1XVOESPROC MultiTexCoord1xvOES; - PFNGLMULTITEXCOORD2BOESPROC MultiTexCoord2bOES; - PFNGLMULTITEXCOORD2BVOESPROC MultiTexCoord2bvOES; - PFNGLMULTITEXCOORD2DARBPROC MultiTexCoord2dARB; - PFNGLMULTITEXCOORD2DVARBPROC MultiTexCoord2dvARB; - PFNGLMULTITEXCOORD2FARBPROC MultiTexCoord2fARB; - PFNGLMULTITEXCOORD2FVARBPROC MultiTexCoord2fvARB; - PFNGLMULTITEXCOORD2HNVPROC MultiTexCoord2hNV; - PFNGLMULTITEXCOORD2HVNVPROC MultiTexCoord2hvNV; - PFNGLMULTITEXCOORD2IARBPROC MultiTexCoord2iARB; - PFNGLMULTITEXCOORD2IVARBPROC MultiTexCoord2ivARB; - PFNGLMULTITEXCOORD2SARBPROC MultiTexCoord2sARB; - PFNGLMULTITEXCOORD2SVARBPROC MultiTexCoord2svARB; - PFNGLMULTITEXCOORD2XOESPROC MultiTexCoord2xOES; - PFNGLMULTITEXCOORD2XVOESPROC MultiTexCoord2xvOES; - PFNGLMULTITEXCOORD3BOESPROC MultiTexCoord3bOES; - PFNGLMULTITEXCOORD3BVOESPROC MultiTexCoord3bvOES; - PFNGLMULTITEXCOORD3DARBPROC MultiTexCoord3dARB; - PFNGLMULTITEXCOORD3DVARBPROC MultiTexCoord3dvARB; - PFNGLMULTITEXCOORD3FARBPROC MultiTexCoord3fARB; - PFNGLMULTITEXCOORD3FVARBPROC MultiTexCoord3fvARB; - PFNGLMULTITEXCOORD3HNVPROC MultiTexCoord3hNV; - PFNGLMULTITEXCOORD3HVNVPROC MultiTexCoord3hvNV; - PFNGLMULTITEXCOORD3IARBPROC MultiTexCoord3iARB; - PFNGLMULTITEXCOORD3IVARBPROC MultiTexCoord3ivARB; - PFNGLMULTITEXCOORD3SARBPROC MultiTexCoord3sARB; - PFNGLMULTITEXCOORD3SVARBPROC MultiTexCoord3svARB; - PFNGLMULTITEXCOORD3XOESPROC MultiTexCoord3xOES; - PFNGLMULTITEXCOORD3XVOESPROC MultiTexCoord3xvOES; - PFNGLMULTITEXCOORD4BOESPROC MultiTexCoord4bOES; - PFNGLMULTITEXCOORD4BVOESPROC MultiTexCoord4bvOES; - PFNGLMULTITEXCOORD4DARBPROC MultiTexCoord4dARB; - PFNGLMULTITEXCOORD4DVARBPROC MultiTexCoord4dvARB; - PFNGLMULTITEXCOORD4FARBPROC MultiTexCoord4fARB; - PFNGLMULTITEXCOORD4FVARBPROC MultiTexCoord4fvARB; - PFNGLMULTITEXCOORD4HNVPROC MultiTexCoord4hNV; - PFNGLMULTITEXCOORD4HVNVPROC MultiTexCoord4hvNV; - PFNGLMULTITEXCOORD4IARBPROC MultiTexCoord4iARB; - PFNGLMULTITEXCOORD4IVARBPROC MultiTexCoord4ivARB; - PFNGLMULTITEXCOORD4SARBPROC MultiTexCoord4sARB; - PFNGLMULTITEXCOORD4SVARBPROC MultiTexCoord4svARB; - PFNGLMULTITEXCOORD4XOESPROC MultiTexCoord4xOES; - PFNGLMULTITEXCOORD4XVOESPROC MultiTexCoord4xvOES; - PFNGLMULTITEXCOORDPOINTEREXTPROC MultiTexCoordPointerEXT; - PFNGLMULTITEXENVFEXTPROC MultiTexEnvfEXT; - PFNGLMULTITEXENVFVEXTPROC MultiTexEnvfvEXT; - PFNGLMULTITEXENVIEXTPROC MultiTexEnviEXT; - PFNGLMULTITEXENVIVEXTPROC MultiTexEnvivEXT; - PFNGLMULTITEXGENDEXTPROC MultiTexGendEXT; - PFNGLMULTITEXGENDVEXTPROC MultiTexGendvEXT; - PFNGLMULTITEXGENFEXTPROC MultiTexGenfEXT; - PFNGLMULTITEXGENFVEXTPROC MultiTexGenfvEXT; - PFNGLMULTITEXGENIEXTPROC MultiTexGeniEXT; - PFNGLMULTITEXGENIVEXTPROC MultiTexGenivEXT; - PFNGLMULTITEXIMAGE1DEXTPROC MultiTexImage1DEXT; - PFNGLMULTITEXIMAGE2DEXTPROC MultiTexImage2DEXT; - PFNGLMULTITEXIMAGE3DEXTPROC MultiTexImage3DEXT; - PFNGLMULTITEXPARAMETERIIVEXTPROC MultiTexParameterIivEXT; - PFNGLMULTITEXPARAMETERIUIVEXTPROC MultiTexParameterIuivEXT; - PFNGLMULTITEXPARAMETERFEXTPROC MultiTexParameterfEXT; - PFNGLMULTITEXPARAMETERFVEXTPROC MultiTexParameterfvEXT; - PFNGLMULTITEXPARAMETERIEXTPROC MultiTexParameteriEXT; - PFNGLMULTITEXPARAMETERIVEXTPROC MultiTexParameterivEXT; - PFNGLMULTITEXRENDERBUFFEREXTPROC MultiTexRenderbufferEXT; - PFNGLMULTITEXSUBIMAGE1DEXTPROC MultiTexSubImage1DEXT; - PFNGLMULTITEXSUBIMAGE2DEXTPROC MultiTexSubImage2DEXT; - PFNGLMULTITEXSUBIMAGE3DEXTPROC MultiTexSubImage3DEXT; - PFNGLMULTICASTBARRIERNVPROC MulticastBarrierNV; - PFNGLMULTICASTBLITFRAMEBUFFERNVPROC MulticastBlitFramebufferNV; - PFNGLMULTICASTBUFFERSUBDATANVPROC MulticastBufferSubDataNV; - PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC MulticastCopyBufferSubDataNV; - PFNGLMULTICASTCOPYIMAGESUBDATANVPROC MulticastCopyImageSubDataNV; - PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC MulticastFramebufferSampleLocationsfvNV; - PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC MulticastGetQueryObjecti64vNV; - PFNGLMULTICASTGETQUERYOBJECTIVNVPROC MulticastGetQueryObjectivNV; - PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC MulticastGetQueryObjectui64vNV; - PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC MulticastGetQueryObjectuivNV; - PFNGLMULTICASTSCISSORARRAYVNVXPROC MulticastScissorArrayvNVX; - PFNGLMULTICASTVIEWPORTARRAYVNVXPROC MulticastViewportArrayvNVX; - PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC MulticastViewportPositionWScaleNVX; - PFNGLMULTICASTWAITSYNCNVPROC MulticastWaitSyncNV; - PFNGLNAMEDBUFFERATTACHMEMORYNVPROC NamedBufferAttachMemoryNV; PFNGLNAMEDBUFFERDATAPROC NamedBufferData; - PFNGLNAMEDBUFFERDATAEXTPROC NamedBufferDataEXT; - PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC NamedBufferPageCommitmentARB; - PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC NamedBufferPageCommitmentEXT; - PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC NamedBufferPageCommitmentMemNV; PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage; - PFNGLNAMEDBUFFERSTORAGEEXTPROC NamedBufferStorageEXT; - PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC NamedBufferStorageExternalEXT; - PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC NamedBufferStorageMemEXT; PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData; - PFNGLNAMEDBUFFERSUBDATAEXTPROC NamedBufferSubDataEXT; - PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC NamedCopyBufferSubDataEXT; PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer; PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers; PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri; - PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC NamedFramebufferParameteriEXT; PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer; PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer; - PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC NamedFramebufferRenderbufferEXT; - PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC NamedFramebufferSampleLocationsfvARB; - PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC NamedFramebufferSampleLocationsfvNV; - PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC NamedFramebufferSamplePositionsfvAMD; PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture; - PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC NamedFramebufferTexture1DEXT; - PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC NamedFramebufferTexture2DEXT; - PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC NamedFramebufferTexture3DEXT; - PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC NamedFramebufferTextureEXT; - PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC NamedFramebufferTextureFaceEXT; PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer; - PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC NamedFramebufferTextureLayerEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC NamedProgramLocalParameter4dEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC NamedProgramLocalParameter4dvEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC NamedProgramLocalParameter4fEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC NamedProgramLocalParameter4fvEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC NamedProgramLocalParameterI4iEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC NamedProgramLocalParameterI4ivEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC NamedProgramLocalParameterI4uiEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC NamedProgramLocalParameterI4uivEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC NamedProgramLocalParameters4fvEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC NamedProgramLocalParametersI4ivEXT; - PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC NamedProgramLocalParametersI4uivEXT; - PFNGLNAMEDPROGRAMSTRINGEXTPROC NamedProgramStringEXT; PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage; - PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC NamedRenderbufferStorageEXT; PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample; - PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC - NamedRenderbufferStorageMultisampleAdvancedAMD; - PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC - NamedRenderbufferStorageMultisampleCoverageEXT; - PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC NamedRenderbufferStorageMultisampleEXT; - PFNGLNAMEDSTRINGARBPROC NamedStringARB; - PFNGLNEWOBJECTBUFFERATIPROC NewObjectBufferATI; - PFNGLNORMAL3FVERTEX3FSUNPROC Normal3fVertex3fSUN; - PFNGLNORMAL3FVERTEX3FVSUNPROC Normal3fVertex3fvSUN; - PFNGLNORMAL3HNVPROC Normal3hNV; - PFNGLNORMAL3HVNVPROC Normal3hvNV; - PFNGLNORMAL3XOESPROC Normal3xOES; - PFNGLNORMAL3XVOESPROC Normal3xvOES; - PFNGLNORMALFORMATNVPROC NormalFormatNV; - PFNGLNORMALPOINTEREXTPROC NormalPointerEXT; - PFNGLNORMALPOINTERLISTIBMPROC NormalPointerListIBM; - PFNGLNORMALPOINTERVINTELPROC NormalPointervINTEL; - PFNGLNORMALSTREAM3BATIPROC NormalStream3bATI; - PFNGLNORMALSTREAM3BVATIPROC NormalStream3bvATI; - PFNGLNORMALSTREAM3DATIPROC NormalStream3dATI; - PFNGLNORMALSTREAM3DVATIPROC NormalStream3dvATI; - PFNGLNORMALSTREAM3FATIPROC NormalStream3fATI; - PFNGLNORMALSTREAM3FVATIPROC NormalStream3fvATI; - PFNGLNORMALSTREAM3IATIPROC NormalStream3iATI; - PFNGLNORMALSTREAM3IVATIPROC NormalStream3ivATI; - PFNGLNORMALSTREAM3SATIPROC NormalStream3sATI; - PFNGLNORMALSTREAM3SVATIPROC NormalStream3svATI; PFNGLOBJECTLABELPROC ObjectLabel; PFNGLOBJECTPTRLABELPROC ObjectPtrLabel; - PFNGLOBJECTPURGEABLEAPPLEPROC ObjectPurgeableAPPLE; - PFNGLOBJECTUNPURGEABLEAPPLEPROC ObjectUnpurgeableAPPLE; - PFNGLORTHOFOESPROC OrthofOES; - PFNGLORTHOXOESPROC OrthoxOES; - PFNGLPNTRIANGLESFATIPROC PNTrianglesfATI; - PFNGLPNTRIANGLESIATIPROC PNTrianglesiATI; - PFNGLPASSTEXCOORDATIPROC PassTexCoordATI; - PFNGLPASSTHROUGHXOESPROC PassThroughxOES; PFNGLPATCHPARAMETERFVPROC PatchParameterfv; PFNGLPATCHPARAMETERIPROC PatchParameteri; - PFNGLPATHCOMMANDSNVPROC PathCommandsNV; - PFNGLPATHCOORDSNVPROC PathCoordsNV; - PFNGLPATHCOVERDEPTHFUNCNVPROC PathCoverDepthFuncNV; - PFNGLPATHDASHARRAYNVPROC PathDashArrayNV; - PFNGLPATHGLYPHINDEXARRAYNVPROC PathGlyphIndexArrayNV; - PFNGLPATHGLYPHINDEXRANGENVPROC PathGlyphIndexRangeNV; - PFNGLPATHGLYPHRANGENVPROC PathGlyphRangeNV; - PFNGLPATHGLYPHSNVPROC PathGlyphsNV; - PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC PathMemoryGlyphIndexArrayNV; - PFNGLPATHPARAMETERFNVPROC PathParameterfNV; - PFNGLPATHPARAMETERFVNVPROC PathParameterfvNV; - PFNGLPATHPARAMETERINVPROC PathParameteriNV; - PFNGLPATHPARAMETERIVNVPROC PathParameterivNV; - PFNGLPATHSTENCILDEPTHOFFSETNVPROC PathStencilDepthOffsetNV; - PFNGLPATHSTENCILFUNCNVPROC PathStencilFuncNV; - PFNGLPATHSTRINGNVPROC PathStringNV; - PFNGLPATHSUBCOMMANDSNVPROC PathSubCommandsNV; - PFNGLPATHSUBCOORDSNVPROC PathSubCoordsNV; PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback; - PFNGLPAUSETRANSFORMFEEDBACKNVPROC PauseTransformFeedbackNV; - PFNGLPIXELDATARANGENVPROC PixelDataRangeNV; - PFNGLPIXELMAPXPROC PixelMapx; PFNGLPIXELSTOREFPROC PixelStoref; PFNGLPIXELSTOREIPROC PixelStorei; - PFNGLPIXELSTOREXPROC PixelStorex; - PFNGLPIXELTEXGENPARAMETERFSGISPROC PixelTexGenParameterfSGIS; - PFNGLPIXELTEXGENPARAMETERFVSGISPROC PixelTexGenParameterfvSGIS; - PFNGLPIXELTEXGENPARAMETERISGISPROC PixelTexGenParameteriSGIS; - PFNGLPIXELTEXGENPARAMETERIVSGISPROC PixelTexGenParameterivSGIS; - PFNGLPIXELTEXGENSGIXPROC PixelTexGenSGIX; - PFNGLPIXELTRANSFERXOESPROC PixelTransferxOES; - PFNGLPIXELTRANSFORMPARAMETERFEXTPROC PixelTransformParameterfEXT; - PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC PixelTransformParameterfvEXT; - PFNGLPIXELTRANSFORMPARAMETERIEXTPROC PixelTransformParameteriEXT; - PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC PixelTransformParameterivEXT; - PFNGLPIXELZOOMXOESPROC PixelZoomxOES; - PFNGLPOINTALONGPATHNVPROC PointAlongPathNV; PFNGLPOINTPARAMETERFPROC PointParameterf; - PFNGLPOINTPARAMETERFARBPROC PointParameterfARB; - PFNGLPOINTPARAMETERFEXTPROC PointParameterfEXT; - PFNGLPOINTPARAMETERFSGISPROC PointParameterfSGIS; PFNGLPOINTPARAMETERFVPROC PointParameterfv; - PFNGLPOINTPARAMETERFVARBPROC PointParameterfvARB; - PFNGLPOINTPARAMETERFVEXTPROC PointParameterfvEXT; - PFNGLPOINTPARAMETERFVSGISPROC PointParameterfvSGIS; PFNGLPOINTPARAMETERIPROC PointParameteri; - PFNGLPOINTPARAMETERINVPROC PointParameteriNV; PFNGLPOINTPARAMETERIVPROC PointParameteriv; - PFNGLPOINTPARAMETERIVNVPROC PointParameterivNV; - PFNGLPOINTPARAMETERXVOESPROC PointParameterxvOES; PFNGLPOINTSIZEPROC PointSize; - PFNGLPOINTSIZEXOESPROC PointSizexOES; - PFNGLPOLLASYNCSGIXPROC PollAsyncSGIX; - PFNGLPOLLINSTRUMENTSSGIXPROC PollInstrumentsSGIX; PFNGLPOLYGONMODEPROC PolygonMode; PFNGLPOLYGONOFFSETPROC PolygonOffset; PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp; - PFNGLPOLYGONOFFSETCLAMPEXTPROC PolygonOffsetClampEXT; - PFNGLPOLYGONOFFSETEXTPROC PolygonOffsetEXT; - PFNGLPOLYGONOFFSETXOESPROC PolygonOffsetxOES; PFNGLPOPDEBUGGROUPPROC PopDebugGroup; - PFNGLPOPGROUPMARKEREXTPROC PopGroupMarkerEXT; - PFNGLPRESENTFRAMEDUALFILLNVPROC PresentFrameDualFillNV; - PFNGLPRESENTFRAMEKEYEDNVPROC PresentFrameKeyedNV; - PFNGLPRIMITIVEBOUNDINGBOXARBPROC PrimitiveBoundingBoxARB; PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex; - PFNGLPRIMITIVERESTARTINDEXNVPROC PrimitiveRestartIndexNV; - PFNGLPRIMITIVERESTARTNVPROC PrimitiveRestartNV; - PFNGLPRIORITIZETEXTURESEXTPROC PrioritizeTexturesEXT; - PFNGLPRIORITIZETEXTURESXOESPROC PrioritizeTexturesxOES; PFNGLPROGRAMBINARYPROC ProgramBinary; - PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC ProgramBufferParametersIivNV; - PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC ProgramBufferParametersIuivNV; - PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC ProgramBufferParametersfvNV; - PFNGLPROGRAMENVPARAMETER4DARBPROC ProgramEnvParameter4dARB; - PFNGLPROGRAMENVPARAMETER4DVARBPROC ProgramEnvParameter4dvARB; - PFNGLPROGRAMENVPARAMETER4FARBPROC ProgramEnvParameter4fARB; - PFNGLPROGRAMENVPARAMETER4FVARBPROC ProgramEnvParameter4fvARB; - PFNGLPROGRAMENVPARAMETERI4INVPROC ProgramEnvParameterI4iNV; - PFNGLPROGRAMENVPARAMETERI4IVNVPROC ProgramEnvParameterI4ivNV; - PFNGLPROGRAMENVPARAMETERI4UINVPROC ProgramEnvParameterI4uiNV; - PFNGLPROGRAMENVPARAMETERI4UIVNVPROC ProgramEnvParameterI4uivNV; - PFNGLPROGRAMENVPARAMETERS4FVEXTPROC ProgramEnvParameters4fvEXT; - PFNGLPROGRAMENVPARAMETERSI4IVNVPROC ProgramEnvParametersI4ivNV; - PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC ProgramEnvParametersI4uivNV; - PFNGLPROGRAMLOCALPARAMETER4DARBPROC ProgramLocalParameter4dARB; - PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ProgramLocalParameter4dvARB; - PFNGLPROGRAMLOCALPARAMETER4FARBPROC ProgramLocalParameter4fARB; - PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ProgramLocalParameter4fvARB; - PFNGLPROGRAMLOCALPARAMETERI4INVPROC ProgramLocalParameterI4iNV; - PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC ProgramLocalParameterI4ivNV; - PFNGLPROGRAMLOCALPARAMETERI4UINVPROC ProgramLocalParameterI4uiNV; - PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC ProgramLocalParameterI4uivNV; - PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC ProgramLocalParameters4fvEXT; - PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC ProgramLocalParametersI4ivNV; - PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC ProgramLocalParametersI4uivNV; - PFNGLPROGRAMNAMEDPARAMETER4DNVPROC ProgramNamedParameter4dNV; - PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC ProgramNamedParameter4dvNV; - PFNGLPROGRAMNAMEDPARAMETER4FNVPROC ProgramNamedParameter4fNV; - PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC ProgramNamedParameter4fvNV; - PFNGLPROGRAMPARAMETER4DNVPROC ProgramParameter4dNV; - PFNGLPROGRAMPARAMETER4DVNVPROC ProgramParameter4dvNV; - PFNGLPROGRAMPARAMETER4FNVPROC ProgramParameter4fNV; - PFNGLPROGRAMPARAMETER4FVNVPROC ProgramParameter4fvNV; PFNGLPROGRAMPARAMETERIPROC ProgramParameteri; - PFNGLPROGRAMPARAMETERIARBPROC ProgramParameteriARB; - PFNGLPROGRAMPARAMETERIEXTPROC ProgramParameteriEXT; - PFNGLPROGRAMPARAMETERS4DVNVPROC ProgramParameters4dvNV; - PFNGLPROGRAMPARAMETERS4FVNVPROC ProgramParameters4fvNV; - PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC ProgramPathFragmentInputGenNV; - PFNGLPROGRAMSTRINGARBPROC ProgramStringARB; - PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC ProgramSubroutineParametersuivNV; PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d; - PFNGLPROGRAMUNIFORM1DEXTPROC ProgramUniform1dEXT; PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv; - PFNGLPROGRAMUNIFORM1DVEXTPROC ProgramUniform1dvEXT; PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f; - PFNGLPROGRAMUNIFORM1FEXTPROC ProgramUniform1fEXT; PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv; - PFNGLPROGRAMUNIFORM1FVEXTPROC ProgramUniform1fvEXT; PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i; - PFNGLPROGRAMUNIFORM1I64ARBPROC ProgramUniform1i64ARB; - PFNGLPROGRAMUNIFORM1I64NVPROC ProgramUniform1i64NV; - PFNGLPROGRAMUNIFORM1I64VARBPROC ProgramUniform1i64vARB; - PFNGLPROGRAMUNIFORM1I64VNVPROC ProgramUniform1i64vNV; - PFNGLPROGRAMUNIFORM1IEXTPROC ProgramUniform1iEXT; PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv; - PFNGLPROGRAMUNIFORM1IVEXTPROC ProgramUniform1ivEXT; PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui; - PFNGLPROGRAMUNIFORM1UI64ARBPROC ProgramUniform1ui64ARB; - PFNGLPROGRAMUNIFORM1UI64NVPROC ProgramUniform1ui64NV; - PFNGLPROGRAMUNIFORM1UI64VARBPROC ProgramUniform1ui64vARB; - PFNGLPROGRAMUNIFORM1UI64VNVPROC ProgramUniform1ui64vNV; - PFNGLPROGRAMUNIFORM1UIEXTPROC ProgramUniform1uiEXT; PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv; - PFNGLPROGRAMUNIFORM1UIVEXTPROC ProgramUniform1uivEXT; PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d; - PFNGLPROGRAMUNIFORM2DEXTPROC ProgramUniform2dEXT; PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv; - PFNGLPROGRAMUNIFORM2DVEXTPROC ProgramUniform2dvEXT; PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f; - PFNGLPROGRAMUNIFORM2FEXTPROC ProgramUniform2fEXT; PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv; - PFNGLPROGRAMUNIFORM2FVEXTPROC ProgramUniform2fvEXT; PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i; - PFNGLPROGRAMUNIFORM2I64ARBPROC ProgramUniform2i64ARB; - PFNGLPROGRAMUNIFORM2I64NVPROC ProgramUniform2i64NV; - PFNGLPROGRAMUNIFORM2I64VARBPROC ProgramUniform2i64vARB; - PFNGLPROGRAMUNIFORM2I64VNVPROC ProgramUniform2i64vNV; - PFNGLPROGRAMUNIFORM2IEXTPROC ProgramUniform2iEXT; PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv; - PFNGLPROGRAMUNIFORM2IVEXTPROC ProgramUniform2ivEXT; PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui; - PFNGLPROGRAMUNIFORM2UI64ARBPROC ProgramUniform2ui64ARB; - PFNGLPROGRAMUNIFORM2UI64NVPROC ProgramUniform2ui64NV; - PFNGLPROGRAMUNIFORM2UI64VARBPROC ProgramUniform2ui64vARB; - PFNGLPROGRAMUNIFORM2UI64VNVPROC ProgramUniform2ui64vNV; - PFNGLPROGRAMUNIFORM2UIEXTPROC ProgramUniform2uiEXT; PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv; - PFNGLPROGRAMUNIFORM2UIVEXTPROC ProgramUniform2uivEXT; PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d; - PFNGLPROGRAMUNIFORM3DEXTPROC ProgramUniform3dEXT; PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv; - PFNGLPROGRAMUNIFORM3DVEXTPROC ProgramUniform3dvEXT; PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f; - PFNGLPROGRAMUNIFORM3FEXTPROC ProgramUniform3fEXT; PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv; - PFNGLPROGRAMUNIFORM3FVEXTPROC ProgramUniform3fvEXT; PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i; - PFNGLPROGRAMUNIFORM3I64ARBPROC ProgramUniform3i64ARB; - PFNGLPROGRAMUNIFORM3I64NVPROC ProgramUniform3i64NV; - PFNGLPROGRAMUNIFORM3I64VARBPROC ProgramUniform3i64vARB; - PFNGLPROGRAMUNIFORM3I64VNVPROC ProgramUniform3i64vNV; - PFNGLPROGRAMUNIFORM3IEXTPROC ProgramUniform3iEXT; PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv; - PFNGLPROGRAMUNIFORM3IVEXTPROC ProgramUniform3ivEXT; PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui; - PFNGLPROGRAMUNIFORM3UI64ARBPROC ProgramUniform3ui64ARB; - PFNGLPROGRAMUNIFORM3UI64NVPROC ProgramUniform3ui64NV; - PFNGLPROGRAMUNIFORM3UI64VARBPROC ProgramUniform3ui64vARB; - PFNGLPROGRAMUNIFORM3UI64VNVPROC ProgramUniform3ui64vNV; - PFNGLPROGRAMUNIFORM3UIEXTPROC ProgramUniform3uiEXT; PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv; - PFNGLPROGRAMUNIFORM3UIVEXTPROC ProgramUniform3uivEXT; PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d; - PFNGLPROGRAMUNIFORM4DEXTPROC ProgramUniform4dEXT; PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv; - PFNGLPROGRAMUNIFORM4DVEXTPROC ProgramUniform4dvEXT; PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f; - PFNGLPROGRAMUNIFORM4FEXTPROC ProgramUniform4fEXT; PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv; - PFNGLPROGRAMUNIFORM4FVEXTPROC ProgramUniform4fvEXT; PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i; - PFNGLPROGRAMUNIFORM4I64ARBPROC ProgramUniform4i64ARB; - PFNGLPROGRAMUNIFORM4I64NVPROC ProgramUniform4i64NV; - PFNGLPROGRAMUNIFORM4I64VARBPROC ProgramUniform4i64vARB; - PFNGLPROGRAMUNIFORM4I64VNVPROC ProgramUniform4i64vNV; - PFNGLPROGRAMUNIFORM4IEXTPROC ProgramUniform4iEXT; PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv; - PFNGLPROGRAMUNIFORM4IVEXTPROC ProgramUniform4ivEXT; PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui; - PFNGLPROGRAMUNIFORM4UI64ARBPROC ProgramUniform4ui64ARB; - PFNGLPROGRAMUNIFORM4UI64NVPROC ProgramUniform4ui64NV; - PFNGLPROGRAMUNIFORM4UI64VARBPROC ProgramUniform4ui64vARB; - PFNGLPROGRAMUNIFORM4UI64VNVPROC ProgramUniform4ui64vNV; - PFNGLPROGRAMUNIFORM4UIEXTPROC ProgramUniform4uiEXT; PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv; - PFNGLPROGRAMUNIFORM4UIVEXTPROC ProgramUniform4uivEXT; - PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC ProgramUniformHandleui64ARB; - PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC ProgramUniformHandleui64NV; - PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC ProgramUniformHandleui64vARB; - PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC ProgramUniformHandleui64vNV; PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv; - PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC ProgramUniformMatrix2dvEXT; PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv; - PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC ProgramUniformMatrix2fvEXT; PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv; - PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC ProgramUniformMatrix2x3dvEXT; PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv; - PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC ProgramUniformMatrix2x3fvEXT; PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv; - PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC ProgramUniformMatrix2x4dvEXT; PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv; - PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC ProgramUniformMatrix2x4fvEXT; PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv; - PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC ProgramUniformMatrix3dvEXT; PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv; - PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC ProgramUniformMatrix3fvEXT; PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv; - PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC ProgramUniformMatrix3x2dvEXT; PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv; - PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC ProgramUniformMatrix3x2fvEXT; PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv; - PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC ProgramUniformMatrix3x4dvEXT; PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv; - PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC ProgramUniformMatrix3x4fvEXT; PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv; - PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC ProgramUniformMatrix4dvEXT; PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv; - PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC ProgramUniformMatrix4fvEXT; PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv; - PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC ProgramUniformMatrix4x2dvEXT; PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv; - PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC ProgramUniformMatrix4x2fvEXT; PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv; - PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC ProgramUniformMatrix4x3dvEXT; PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv; - PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC ProgramUniformMatrix4x3fvEXT; - PFNGLPROGRAMUNIFORMUI64NVPROC ProgramUniformui64NV; - PFNGLPROGRAMUNIFORMUI64VNVPROC ProgramUniformui64vNV; - PFNGLPROGRAMVERTEXLIMITNVPROC ProgramVertexLimitNV; PFNGLPROVOKINGVERTEXPROC ProvokingVertex; - PFNGLPROVOKINGVERTEXEXTPROC ProvokingVertexEXT; - PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC PushClientAttribDefaultEXT; PFNGLPUSHDEBUGGROUPPROC PushDebugGroup; - PFNGLPUSHGROUPMARKEREXTPROC PushGroupMarkerEXT; PFNGLQUERYCOUNTERPROC QueryCounter; - PFNGLQUERYMATRIXXOESPROC QueryMatrixxOES; - PFNGLQUERYOBJECTPARAMETERUIAMDPROC QueryObjectParameteruiAMD; - PFNGLQUERYRESOURCENVPROC QueryResourceNV; - PFNGLQUERYRESOURCETAGNVPROC QueryResourceTagNV; - PFNGLRASTERPOS2XOESPROC RasterPos2xOES; - PFNGLRASTERPOS2XVOESPROC RasterPos2xvOES; - PFNGLRASTERPOS3XOESPROC RasterPos3xOES; - PFNGLRASTERPOS3XVOESPROC RasterPos3xvOES; - PFNGLRASTERPOS4XOESPROC RasterPos4xOES; - PFNGLRASTERPOS4XVOESPROC RasterPos4xvOES; - PFNGLRASTERSAMPLESEXTPROC RasterSamplesEXT; PFNGLREADBUFFERPROC ReadBuffer; - PFNGLREADINSTRUMENTSSGIXPROC ReadInstrumentsSGIX; PFNGLREADPIXELSPROC ReadPixels; PFNGLREADNPIXELSPROC ReadnPixels; - PFNGLREADNPIXELSARBPROC ReadnPixelsARB; - PFNGLRECTXOESPROC RectxOES; - PFNGLRECTXVOESPROC RectxvOES; - PFNGLREFERENCEPLANESGIXPROC ReferencePlaneSGIX; - PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC ReleaseKeyedMutexWin32EXT; PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler; - PFNGLRENDERGPUMASKNVPROC RenderGpuMaskNV; PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage; - PFNGLRENDERBUFFERSTORAGEEXTPROC RenderbufferStorageEXT; PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample; - PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC RenderbufferStorageMultisampleAdvancedAMD; - PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC RenderbufferStorageMultisampleCoverageNV; - PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC RenderbufferStorageMultisampleEXT; - PFNGLREPLACEMENTCODEPOINTERSUNPROC ReplacementCodePointerSUN; - PFNGLREPLACEMENTCODEUBSUNPROC ReplacementCodeubSUN; - PFNGLREPLACEMENTCODEUBVSUNPROC ReplacementCodeubvSUN; - PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC ReplacementCodeuiColor3fVertex3fSUN; - PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC ReplacementCodeuiColor3fVertex3fvSUN; - PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC - ReplacementCodeuiColor4fNormal3fVertex3fSUN; - PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC - ReplacementCodeuiColor4fNormal3fVertex3fvSUN; - PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC ReplacementCodeuiColor4ubVertex3fSUN; - PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC ReplacementCodeuiColor4ubVertex3fvSUN; - PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC ReplacementCodeuiNormal3fVertex3fSUN; - PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC ReplacementCodeuiNormal3fVertex3fvSUN; - PFNGLREPLACEMENTCODEUISUNPROC ReplacementCodeuiSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC - ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC - ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC - ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC - ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC ReplacementCodeuiTexCoord2fVertex3fSUN; - PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC ReplacementCodeuiTexCoord2fVertex3fvSUN; - PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC ReplacementCodeuiVertex3fSUN; - PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC ReplacementCodeuiVertex3fvSUN; - PFNGLREPLACEMENTCODEUIVSUNPROC ReplacementCodeuivSUN; - PFNGLREPLACEMENTCODEUSSUNPROC ReplacementCodeusSUN; - PFNGLREPLACEMENTCODEUSVSUNPROC ReplacementCodeusvSUN; - PFNGLREQUESTRESIDENTPROGRAMSNVPROC RequestResidentProgramsNV; - PFNGLRESETHISTOGRAMEXTPROC ResetHistogramEXT; - PFNGLRESETMEMORYOBJECTPARAMETERNVPROC ResetMemoryObjectParameterNV; - PFNGLRESETMINMAXEXTPROC ResetMinmaxEXT; - PFNGLRESIZEBUFFERSMESAPROC ResizeBuffersMESA; - PFNGLRESOLVEDEPTHVALUESNVPROC ResolveDepthValuesNV; PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback; - PFNGLRESUMETRANSFORMFEEDBACKNVPROC ResumeTransformFeedbackNV; - PFNGLROTATEXOESPROC RotatexOES; PFNGLSAMPLECOVERAGEPROC SampleCoverage; - PFNGLSAMPLECOVERAGEARBPROC SampleCoverageARB; - PFNGLSAMPLEMAPATIPROC SampleMapATI; - PFNGLSAMPLEMASKEXTPROC SampleMaskEXT; - PFNGLSAMPLEMASKINDEXEDNVPROC SampleMaskIndexedNV; - PFNGLSAMPLEMASKSGISPROC SampleMaskSGIS; PFNGLSAMPLEMASKIPROC SampleMaski; - PFNGLSAMPLEPATTERNEXTPROC SamplePatternEXT; - PFNGLSAMPLEPATTERNSGISPROC SamplePatternSGIS; PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv; PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv; PFNGLSAMPLERPARAMETERFPROC SamplerParameterf; PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv; PFNGLSAMPLERPARAMETERIPROC SamplerParameteri; PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv; - PFNGLSCALEXOESPROC ScalexOES; PFNGLSCISSORPROC Scissor; PFNGLSCISSORARRAYVPROC ScissorArrayv; - PFNGLSCISSOREXCLUSIVEARRAYVNVPROC ScissorExclusiveArrayvNV; - PFNGLSCISSOREXCLUSIVENVPROC ScissorExclusiveNV; PFNGLSCISSORINDEXEDPROC ScissorIndexed; PFNGLSCISSORINDEXEDVPROC ScissorIndexedv; - PFNGLSECONDARYCOLOR3BEXTPROC SecondaryColor3bEXT; - PFNGLSECONDARYCOLOR3BVEXTPROC SecondaryColor3bvEXT; - PFNGLSECONDARYCOLOR3DEXTPROC SecondaryColor3dEXT; - PFNGLSECONDARYCOLOR3DVEXTPROC SecondaryColor3dvEXT; - PFNGLSECONDARYCOLOR3FEXTPROC SecondaryColor3fEXT; - PFNGLSECONDARYCOLOR3FVEXTPROC SecondaryColor3fvEXT; - PFNGLSECONDARYCOLOR3HNVPROC SecondaryColor3hNV; - PFNGLSECONDARYCOLOR3HVNVPROC SecondaryColor3hvNV; - PFNGLSECONDARYCOLOR3IEXTPROC SecondaryColor3iEXT; - PFNGLSECONDARYCOLOR3IVEXTPROC SecondaryColor3ivEXT; - PFNGLSECONDARYCOLOR3SEXTPROC SecondaryColor3sEXT; - PFNGLSECONDARYCOLOR3SVEXTPROC SecondaryColor3svEXT; - PFNGLSECONDARYCOLOR3UBEXTPROC SecondaryColor3ubEXT; - PFNGLSECONDARYCOLOR3UBVEXTPROC SecondaryColor3ubvEXT; - PFNGLSECONDARYCOLOR3UIEXTPROC SecondaryColor3uiEXT; - PFNGLSECONDARYCOLOR3UIVEXTPROC SecondaryColor3uivEXT; - PFNGLSECONDARYCOLOR3USEXTPROC SecondaryColor3usEXT; - PFNGLSECONDARYCOLOR3USVEXTPROC SecondaryColor3usvEXT; - PFNGLSECONDARYCOLORFORMATNVPROC SecondaryColorFormatNV; - PFNGLSECONDARYCOLORPOINTEREXTPROC SecondaryColorPointerEXT; - PFNGLSECONDARYCOLORPOINTERLISTIBMPROC SecondaryColorPointerListIBM; - PFNGLSELECTPERFMONITORCOUNTERSAMDPROC SelectPerfMonitorCountersAMD; - PFNGLSEMAPHOREPARAMETERIVNVPROC SemaphoreParameterivNV; - PFNGLSEMAPHOREPARAMETERUI64VEXTPROC SemaphoreParameterui64vEXT; - PFNGLSEPARABLEFILTER2DEXTPROC SeparableFilter2DEXT; - PFNGLSETFENCEAPPLEPROC SetFenceAPPLE; - PFNGLSETFENCENVPROC SetFenceNV; - PFNGLSETFRAGMENTSHADERCONSTANTATIPROC SetFragmentShaderConstantATI; - PFNGLSETINVARIANTEXTPROC SetInvariantEXT; - PFNGLSETLOCALCONSTANTEXTPROC SetLocalConstantEXT; - PFNGLSETMULTISAMPLEFVAMDPROC SetMultisamplefvAMD; PFNGLSHADERBINARYPROC ShaderBinary; - PFNGLSHADEROP1EXTPROC ShaderOp1EXT; - PFNGLSHADEROP2EXTPROC ShaderOp2EXT; - PFNGLSHADEROP3EXTPROC ShaderOp3EXT; PFNGLSHADERSOURCEPROC ShaderSource; - PFNGLSHADERSOURCEARBPROC ShaderSourceARB; PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding; - PFNGLSHADINGRATEIMAGEBARRIERNVPROC ShadingRateImageBarrierNV; - PFNGLSHADINGRATEIMAGEPALETTENVPROC ShadingRateImagePaletteNV; - PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC ShadingRateSampleOrderCustomNV; - PFNGLSHADINGRATESAMPLEORDERNVPROC ShadingRateSampleOrderNV; - PFNGLSHARPENTEXFUNCSGISPROC SharpenTexFuncSGIS; - PFNGLSIGNALSEMAPHOREEXTPROC SignalSemaphoreEXT; - PFNGLSIGNALSEMAPHOREUI64NVXPROC SignalSemaphoreui64NVX; - PFNGLSIGNALVKFENCENVPROC SignalVkFenceNV; - PFNGLSIGNALVKSEMAPHORENVPROC SignalVkSemaphoreNV; PFNGLSPECIALIZESHADERPROC SpecializeShader; - PFNGLSPECIALIZESHADERARBPROC SpecializeShaderARB; - PFNGLSPRITEPARAMETERFSGIXPROC SpriteParameterfSGIX; - PFNGLSPRITEPARAMETERFVSGIXPROC SpriteParameterfvSGIX; - PFNGLSPRITEPARAMETERISGIXPROC SpriteParameteriSGIX; - PFNGLSPRITEPARAMETERIVSGIXPROC SpriteParameterivSGIX; - PFNGLSTARTINSTRUMENTSSGIXPROC StartInstrumentsSGIX; - PFNGLSTATECAPTURENVPROC StateCaptureNV; - PFNGLSTENCILCLEARTAGEXTPROC StencilClearTagEXT; - PFNGLSTENCILFILLPATHINSTANCEDNVPROC StencilFillPathInstancedNV; - PFNGLSTENCILFILLPATHNVPROC StencilFillPathNV; PFNGLSTENCILFUNCPROC StencilFunc; PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate; - PFNGLSTENCILFUNCSEPARATEATIPROC StencilFuncSeparateATI; PFNGLSTENCILMASKPROC StencilMask; PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate; PFNGLSTENCILOPPROC StencilOp; PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate; - PFNGLSTENCILOPSEPARATEATIPROC StencilOpSeparateATI; - PFNGLSTENCILOPVALUEAMDPROC StencilOpValueAMD; - PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC StencilStrokePathInstancedNV; - PFNGLSTENCILSTROKEPATHNVPROC StencilStrokePathNV; - PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC StencilThenCoverFillPathInstancedNV; - PFNGLSTENCILTHENCOVERFILLPATHNVPROC StencilThenCoverFillPathNV; - PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC StencilThenCoverStrokePathInstancedNV; - PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC StencilThenCoverStrokePathNV; - PFNGLSTOPINSTRUMENTSSGIXPROC StopInstrumentsSGIX; - PFNGLSTRINGMARKERGREMEDYPROC StringMarkerGREMEDY; - PFNGLSUBPIXELPRECISIONBIASNVPROC SubpixelPrecisionBiasNV; - PFNGLSWIZZLEEXTPROC SwizzleEXT; - PFNGLSYNCTEXTUREINTELPROC SyncTextureINTEL; - PFNGLTAGSAMPLEBUFFERSGIXPROC TagSampleBufferSGIX; - PFNGLTANGENT3BEXTPROC Tangent3bEXT; - PFNGLTANGENT3BVEXTPROC Tangent3bvEXT; - PFNGLTANGENT3DEXTPROC Tangent3dEXT; - PFNGLTANGENT3DVEXTPROC Tangent3dvEXT; - PFNGLTANGENT3FEXTPROC Tangent3fEXT; - PFNGLTANGENT3FVEXTPROC Tangent3fvEXT; - PFNGLTANGENT3IEXTPROC Tangent3iEXT; - PFNGLTANGENT3IVEXTPROC Tangent3ivEXT; - PFNGLTANGENT3SEXTPROC Tangent3sEXT; - PFNGLTANGENT3SVEXTPROC Tangent3svEXT; - PFNGLTANGENTPOINTEREXTPROC TangentPointerEXT; - PFNGLTBUFFERMASK3DFXPROC TbufferMask3DFX; - PFNGLTESSELLATIONFACTORAMDPROC TessellationFactorAMD; - PFNGLTESSELLATIONMODEAMDPROC TessellationModeAMD; - PFNGLTESTFENCEAPPLEPROC TestFenceAPPLE; - PFNGLTESTFENCENVPROC TestFenceNV; - PFNGLTESTOBJECTAPPLEPROC TestObjectAPPLE; - PFNGLTEXATTACHMEMORYNVPROC TexAttachMemoryNV; PFNGLTEXBUFFERPROC TexBuffer; - PFNGLTEXBUFFERARBPROC TexBufferARB; - PFNGLTEXBUFFEREXTPROC TexBufferEXT; PFNGLTEXBUFFERRANGEPROC TexBufferRange; - PFNGLTEXBUMPPARAMETERFVATIPROC TexBumpParameterfvATI; - PFNGLTEXBUMPPARAMETERIVATIPROC TexBumpParameterivATI; - PFNGLTEXCOORD1BOESPROC TexCoord1bOES; - PFNGLTEXCOORD1BVOESPROC TexCoord1bvOES; - PFNGLTEXCOORD1HNVPROC TexCoord1hNV; - PFNGLTEXCOORD1HVNVPROC TexCoord1hvNV; - PFNGLTEXCOORD1XOESPROC TexCoord1xOES; - PFNGLTEXCOORD1XVOESPROC TexCoord1xvOES; - PFNGLTEXCOORD2BOESPROC TexCoord2bOES; - PFNGLTEXCOORD2BVOESPROC TexCoord2bvOES; - PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC TexCoord2fColor3fVertex3fSUN; - PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC TexCoord2fColor3fVertex3fvSUN; - PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC TexCoord2fColor4fNormal3fVertex3fSUN; - PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC TexCoord2fColor4fNormal3fVertex3fvSUN; - PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC TexCoord2fColor4ubVertex3fSUN; - PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC TexCoord2fColor4ubVertex3fvSUN; - PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC TexCoord2fNormal3fVertex3fSUN; - PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC TexCoord2fNormal3fVertex3fvSUN; - PFNGLTEXCOORD2FVERTEX3FSUNPROC TexCoord2fVertex3fSUN; - PFNGLTEXCOORD2FVERTEX3FVSUNPROC TexCoord2fVertex3fvSUN; - PFNGLTEXCOORD2HNVPROC TexCoord2hNV; - PFNGLTEXCOORD2HVNVPROC TexCoord2hvNV; - PFNGLTEXCOORD2XOESPROC TexCoord2xOES; - PFNGLTEXCOORD2XVOESPROC TexCoord2xvOES; - PFNGLTEXCOORD3BOESPROC TexCoord3bOES; - PFNGLTEXCOORD3BVOESPROC TexCoord3bvOES; - PFNGLTEXCOORD3HNVPROC TexCoord3hNV; - PFNGLTEXCOORD3HVNVPROC TexCoord3hvNV; - PFNGLTEXCOORD3XOESPROC TexCoord3xOES; - PFNGLTEXCOORD3XVOESPROC TexCoord3xvOES; - PFNGLTEXCOORD4BOESPROC TexCoord4bOES; - PFNGLTEXCOORD4BVOESPROC TexCoord4bvOES; - PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC TexCoord4fColor4fNormal3fVertex4fSUN; - PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC TexCoord4fColor4fNormal3fVertex4fvSUN; - PFNGLTEXCOORD4FVERTEX4FSUNPROC TexCoord4fVertex4fSUN; - PFNGLTEXCOORD4FVERTEX4FVSUNPROC TexCoord4fVertex4fvSUN; - PFNGLTEXCOORD4HNVPROC TexCoord4hNV; - PFNGLTEXCOORD4HVNVPROC TexCoord4hvNV; - PFNGLTEXCOORD4XOESPROC TexCoord4xOES; - PFNGLTEXCOORD4XVOESPROC TexCoord4xvOES; - PFNGLTEXCOORDFORMATNVPROC TexCoordFormatNV; - PFNGLTEXCOORDPOINTEREXTPROC TexCoordPointerEXT; - PFNGLTEXCOORDPOINTERLISTIBMPROC TexCoordPointerListIBM; - PFNGLTEXCOORDPOINTERVINTELPROC TexCoordPointervINTEL; - PFNGLTEXENVXOESPROC TexEnvxOES; - PFNGLTEXENVXVOESPROC TexEnvxvOES; - PFNGLTEXFILTERFUNCSGISPROC TexFilterFuncSGIS; - PFNGLTEXGENXOESPROC TexGenxOES; - PFNGLTEXGENXVOESPROC TexGenxvOES; PFNGLTEXIMAGE1DPROC TexImage1D; PFNGLTEXIMAGE2DPROC TexImage2D; PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample; - PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC TexImage2DMultisampleCoverageNV; PFNGLTEXIMAGE3DPROC TexImage3D; - PFNGLTEXIMAGE3DEXTPROC TexImage3DEXT; PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample; - PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC TexImage3DMultisampleCoverageNV; - PFNGLTEXIMAGE4DSGISPROC TexImage4DSGIS; - PFNGLTEXPAGECOMMITMENTARBPROC TexPageCommitmentARB; - PFNGLTEXPAGECOMMITMENTMEMNVPROC TexPageCommitmentMemNV; PFNGLTEXPARAMETERIIVPROC TexParameterIiv; - PFNGLTEXPARAMETERIIVEXTPROC TexParameterIivEXT; PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv; - PFNGLTEXPARAMETERIUIVEXTPROC TexParameterIuivEXT; PFNGLTEXPARAMETERFPROC TexParameterf; PFNGLTEXPARAMETERFVPROC TexParameterfv; PFNGLTEXPARAMETERIPROC TexParameteri; PFNGLTEXPARAMETERIVPROC TexParameteriv; - PFNGLTEXPARAMETERXOESPROC TexParameterxOES; - PFNGLTEXPARAMETERXVOESPROC TexParameterxvOES; - PFNGLTEXRENDERBUFFERNVPROC TexRenderbufferNV; PFNGLTEXSTORAGE1DPROC TexStorage1D; - PFNGLTEXSTORAGE1DEXTPROC TexStorage1DEXT; PFNGLTEXSTORAGE2DPROC TexStorage2D; - PFNGLTEXSTORAGE2DEXTPROC TexStorage2DEXT; PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample; PFNGLTEXSTORAGE3DPROC TexStorage3D; - PFNGLTEXSTORAGE3DEXTPROC TexStorage3DEXT; PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample; - PFNGLTEXSTORAGEMEM1DEXTPROC TexStorageMem1DEXT; - PFNGLTEXSTORAGEMEM2DEXTPROC TexStorageMem2DEXT; - PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC TexStorageMem2DMultisampleEXT; - PFNGLTEXSTORAGEMEM3DEXTPROC TexStorageMem3DEXT; - PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC TexStorageMem3DMultisampleEXT; - PFNGLTEXSTORAGESPARSEAMDPROC TexStorageSparseAMD; PFNGLTEXSUBIMAGE1DPROC TexSubImage1D; - PFNGLTEXSUBIMAGE1DEXTPROC TexSubImage1DEXT; PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; - PFNGLTEXSUBIMAGE2DEXTPROC TexSubImage2DEXT; PFNGLTEXSUBIMAGE3DPROC TexSubImage3D; - PFNGLTEXSUBIMAGE3DEXTPROC TexSubImage3DEXT; - PFNGLTEXSUBIMAGE4DSGISPROC TexSubImage4DSGIS; - PFNGLTEXTUREATTACHMEMORYNVPROC TextureAttachMemoryNV; PFNGLTEXTUREBARRIERPROC TextureBarrier; - PFNGLTEXTUREBARRIERNVPROC TextureBarrierNV; PFNGLTEXTUREBUFFERPROC TextureBuffer; - PFNGLTEXTUREBUFFEREXTPROC TextureBufferEXT; PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange; - PFNGLTEXTUREBUFFERRANGEEXTPROC TextureBufferRangeEXT; - PFNGLTEXTURECOLORMASKSGISPROC TextureColorMaskSGIS; - PFNGLTEXTUREIMAGE1DEXTPROC TextureImage1DEXT; - PFNGLTEXTUREIMAGE2DEXTPROC TextureImage2DEXT; - PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC TextureImage2DMultisampleCoverageNV; - PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC TextureImage2DMultisampleNV; - PFNGLTEXTUREIMAGE3DEXTPROC TextureImage3DEXT; - PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC TextureImage3DMultisampleCoverageNV; - PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC TextureImage3DMultisampleNV; - PFNGLTEXTURELIGHTEXTPROC TextureLightEXT; - PFNGLTEXTUREMATERIALEXTPROC TextureMaterialEXT; - PFNGLTEXTURENORMALEXTPROC TextureNormalEXT; - PFNGLTEXTUREPAGECOMMITMENTEXTPROC TexturePageCommitmentEXT; - PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC TexturePageCommitmentMemNV; PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv; - PFNGLTEXTUREPARAMETERIIVEXTPROC TextureParameterIivEXT; PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv; - PFNGLTEXTUREPARAMETERIUIVEXTPROC TextureParameterIuivEXT; PFNGLTEXTUREPARAMETERFPROC TextureParameterf; - PFNGLTEXTUREPARAMETERFEXTPROC TextureParameterfEXT; PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv; - PFNGLTEXTUREPARAMETERFVEXTPROC TextureParameterfvEXT; PFNGLTEXTUREPARAMETERIPROC TextureParameteri; - PFNGLTEXTUREPARAMETERIEXTPROC TextureParameteriEXT; PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv; - PFNGLTEXTUREPARAMETERIVEXTPROC TextureParameterivEXT; - PFNGLTEXTURERANGEAPPLEPROC TextureRangeAPPLE; - PFNGLTEXTURERENDERBUFFEREXTPROC TextureRenderbufferEXT; PFNGLTEXTURESTORAGE1DPROC TextureStorage1D; - PFNGLTEXTURESTORAGE1DEXTPROC TextureStorage1DEXT; PFNGLTEXTURESTORAGE2DPROC TextureStorage2D; - PFNGLTEXTURESTORAGE2DEXTPROC TextureStorage2DEXT; PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample; - PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC TextureStorage2DMultisampleEXT; PFNGLTEXTURESTORAGE3DPROC TextureStorage3D; - PFNGLTEXTURESTORAGE3DEXTPROC TextureStorage3DEXT; PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample; - PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC TextureStorage3DMultisampleEXT; - PFNGLTEXTURESTORAGEMEM1DEXTPROC TextureStorageMem1DEXT; - PFNGLTEXTURESTORAGEMEM2DEXTPROC TextureStorageMem2DEXT; - PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC TextureStorageMem2DMultisampleEXT; - PFNGLTEXTURESTORAGEMEM3DEXTPROC TextureStorageMem3DEXT; - PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC TextureStorageMem3DMultisampleEXT; - PFNGLTEXTURESTORAGESPARSEAMDPROC TextureStorageSparseAMD; PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D; - PFNGLTEXTURESUBIMAGE1DEXTPROC TextureSubImage1DEXT; PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D; - PFNGLTEXTURESUBIMAGE2DEXTPROC TextureSubImage2DEXT; PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D; - PFNGLTEXTURESUBIMAGE3DEXTPROC TextureSubImage3DEXT; PFNGLTEXTUREVIEWPROC TextureView; - PFNGLTRACKMATRIXNVPROC TrackMatrixNV; - PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC TransformFeedbackAttribsNV; PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase; PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange; - PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC TransformFeedbackStreamAttribsNV; PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings; - PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC TransformFeedbackVaryingsEXT; - PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC TransformFeedbackVaryingsNV; - PFNGLTRANSFORMPATHNVPROC TransformPathNV; - PFNGLTRANSLATEXOESPROC TranslatexOES; PFNGLUNIFORM1DPROC Uniform1d; PFNGLUNIFORM1DVPROC Uniform1dv; PFNGLUNIFORM1FPROC Uniform1f; - PFNGLUNIFORM1FARBPROC Uniform1fARB; PFNGLUNIFORM1FVPROC Uniform1fv; - PFNGLUNIFORM1FVARBPROC Uniform1fvARB; PFNGLUNIFORM1IPROC Uniform1i; - PFNGLUNIFORM1I64ARBPROC Uniform1i64ARB; - PFNGLUNIFORM1I64NVPROC Uniform1i64NV; - PFNGLUNIFORM1I64VARBPROC Uniform1i64vARB; - PFNGLUNIFORM1I64VNVPROC Uniform1i64vNV; - PFNGLUNIFORM1IARBPROC Uniform1iARB; PFNGLUNIFORM1IVPROC Uniform1iv; - PFNGLUNIFORM1IVARBPROC Uniform1ivARB; PFNGLUNIFORM1UIPROC Uniform1ui; - PFNGLUNIFORM1UI64ARBPROC Uniform1ui64ARB; - PFNGLUNIFORM1UI64NVPROC Uniform1ui64NV; - PFNGLUNIFORM1UI64VARBPROC Uniform1ui64vARB; - PFNGLUNIFORM1UI64VNVPROC Uniform1ui64vNV; - PFNGLUNIFORM1UIEXTPROC Uniform1uiEXT; PFNGLUNIFORM1UIVPROC Uniform1uiv; - PFNGLUNIFORM1UIVEXTPROC Uniform1uivEXT; PFNGLUNIFORM2DPROC Uniform2d; PFNGLUNIFORM2DVPROC Uniform2dv; PFNGLUNIFORM2FPROC Uniform2f; - PFNGLUNIFORM2FARBPROC Uniform2fARB; PFNGLUNIFORM2FVPROC Uniform2fv; - PFNGLUNIFORM2FVARBPROC Uniform2fvARB; PFNGLUNIFORM2IPROC Uniform2i; - PFNGLUNIFORM2I64ARBPROC Uniform2i64ARB; - PFNGLUNIFORM2I64NVPROC Uniform2i64NV; - PFNGLUNIFORM2I64VARBPROC Uniform2i64vARB; - PFNGLUNIFORM2I64VNVPROC Uniform2i64vNV; - PFNGLUNIFORM2IARBPROC Uniform2iARB; PFNGLUNIFORM2IVPROC Uniform2iv; - PFNGLUNIFORM2IVARBPROC Uniform2ivARB; PFNGLUNIFORM2UIPROC Uniform2ui; - PFNGLUNIFORM2UI64ARBPROC Uniform2ui64ARB; - PFNGLUNIFORM2UI64NVPROC Uniform2ui64NV; - PFNGLUNIFORM2UI64VARBPROC Uniform2ui64vARB; - PFNGLUNIFORM2UI64VNVPROC Uniform2ui64vNV; - PFNGLUNIFORM2UIEXTPROC Uniform2uiEXT; PFNGLUNIFORM2UIVPROC Uniform2uiv; - PFNGLUNIFORM2UIVEXTPROC Uniform2uivEXT; PFNGLUNIFORM3DPROC Uniform3d; PFNGLUNIFORM3DVPROC Uniform3dv; PFNGLUNIFORM3FPROC Uniform3f; - PFNGLUNIFORM3FARBPROC Uniform3fARB; PFNGLUNIFORM3FVPROC Uniform3fv; - PFNGLUNIFORM3FVARBPROC Uniform3fvARB; PFNGLUNIFORM3IPROC Uniform3i; - PFNGLUNIFORM3I64ARBPROC Uniform3i64ARB; - PFNGLUNIFORM3I64NVPROC Uniform3i64NV; - PFNGLUNIFORM3I64VARBPROC Uniform3i64vARB; - PFNGLUNIFORM3I64VNVPROC Uniform3i64vNV; - PFNGLUNIFORM3IARBPROC Uniform3iARB; PFNGLUNIFORM3IVPROC Uniform3iv; - PFNGLUNIFORM3IVARBPROC Uniform3ivARB; PFNGLUNIFORM3UIPROC Uniform3ui; - PFNGLUNIFORM3UI64ARBPROC Uniform3ui64ARB; - PFNGLUNIFORM3UI64NVPROC Uniform3ui64NV; - PFNGLUNIFORM3UI64VARBPROC Uniform3ui64vARB; - PFNGLUNIFORM3UI64VNVPROC Uniform3ui64vNV; - PFNGLUNIFORM3UIEXTPROC Uniform3uiEXT; PFNGLUNIFORM3UIVPROC Uniform3uiv; - PFNGLUNIFORM3UIVEXTPROC Uniform3uivEXT; PFNGLUNIFORM4DPROC Uniform4d; PFNGLUNIFORM4DVPROC Uniform4dv; PFNGLUNIFORM4FPROC Uniform4f; - PFNGLUNIFORM4FARBPROC Uniform4fARB; PFNGLUNIFORM4FVPROC Uniform4fv; - PFNGLUNIFORM4FVARBPROC Uniform4fvARB; PFNGLUNIFORM4IPROC Uniform4i; - PFNGLUNIFORM4I64ARBPROC Uniform4i64ARB; - PFNGLUNIFORM4I64NVPROC Uniform4i64NV; - PFNGLUNIFORM4I64VARBPROC Uniform4i64vARB; - PFNGLUNIFORM4I64VNVPROC Uniform4i64vNV; - PFNGLUNIFORM4IARBPROC Uniform4iARB; PFNGLUNIFORM4IVPROC Uniform4iv; - PFNGLUNIFORM4IVARBPROC Uniform4ivARB; PFNGLUNIFORM4UIPROC Uniform4ui; - PFNGLUNIFORM4UI64ARBPROC Uniform4ui64ARB; - PFNGLUNIFORM4UI64NVPROC Uniform4ui64NV; - PFNGLUNIFORM4UI64VARBPROC Uniform4ui64vARB; - PFNGLUNIFORM4UI64VNVPROC Uniform4ui64vNV; - PFNGLUNIFORM4UIEXTPROC Uniform4uiEXT; PFNGLUNIFORM4UIVPROC Uniform4uiv; - PFNGLUNIFORM4UIVEXTPROC Uniform4uivEXT; PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding; - PFNGLUNIFORMBUFFEREXTPROC UniformBufferEXT; - PFNGLUNIFORMHANDLEUI64ARBPROC UniformHandleui64ARB; - PFNGLUNIFORMHANDLEUI64NVPROC UniformHandleui64NV; - PFNGLUNIFORMHANDLEUI64VARBPROC UniformHandleui64vARB; - PFNGLUNIFORMHANDLEUI64VNVPROC UniformHandleui64vNV; PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv; PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv; - PFNGLUNIFORMMATRIX2FVARBPROC UniformMatrix2fvARB; PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv; PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv; PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv; PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv; PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv; PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv; - PFNGLUNIFORMMATRIX3FVARBPROC UniformMatrix3fvARB; PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv; PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv; PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv; PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv; PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv; PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; - PFNGLUNIFORMMATRIX4FVARBPROC UniformMatrix4fvARB; PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv; PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv; PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv; PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv; PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv; - PFNGLUNIFORMUI64NVPROC Uniformui64NV; - PFNGLUNIFORMUI64VNVPROC Uniformui64vNV; - PFNGLUNLOCKARRAYSEXTPROC UnlockArraysEXT; PFNGLUNMAPBUFFERPROC UnmapBuffer; - PFNGLUNMAPBUFFERARBPROC UnmapBufferARB; PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer; - PFNGLUNMAPNAMEDBUFFEREXTPROC UnmapNamedBufferEXT; - PFNGLUNMAPOBJECTBUFFERATIPROC UnmapObjectBufferATI; - PFNGLUNMAPTEXTURE2DINTELPROC UnmapTexture2DINTEL; - PFNGLUPDATEOBJECTBUFFERATIPROC UpdateObjectBufferATI; - PFNGLUPLOADGPUMASKNVXPROC UploadGpuMaskNVX; PFNGLUSEPROGRAMPROC UseProgram; - PFNGLUSEPROGRAMOBJECTARBPROC UseProgramObjectARB; PFNGLUSEPROGRAMSTAGESPROC UseProgramStages; - PFNGLUSESHADERPROGRAMEXTPROC UseShaderProgramEXT; - PFNGLVDPAUFININVPROC VDPAUFiniNV; - PFNGLVDPAUGETSURFACEIVNVPROC VDPAUGetSurfaceivNV; - PFNGLVDPAUINITNVPROC VDPAUInitNV; - PFNGLVDPAUISSURFACENVPROC VDPAUIsSurfaceNV; - PFNGLVDPAUMAPSURFACESNVPROC VDPAUMapSurfacesNV; - PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC VDPAURegisterOutputSurfaceNV; - PFNGLVDPAUREGISTERVIDEOSURFACENVPROC VDPAURegisterVideoSurfaceNV; - PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC - VDPAURegisterVideoSurfaceWithPictureStructureNV; - PFNGLVDPAUSURFACEACCESSNVPROC VDPAUSurfaceAccessNV; - PFNGLVDPAUUNMAPSURFACESNVPROC VDPAUUnmapSurfacesNV; - PFNGLVDPAUUNREGISTERSURFACENVPROC VDPAUUnregisterSurfaceNV; PFNGLVALIDATEPROGRAMPROC ValidateProgram; - PFNGLVALIDATEPROGRAMARBPROC ValidateProgramARB; PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline; - PFNGLVARIANTARRAYOBJECTATIPROC VariantArrayObjectATI; - PFNGLVARIANTPOINTEREXTPROC VariantPointerEXT; - PFNGLVARIANTBVEXTPROC VariantbvEXT; - PFNGLVARIANTDVEXTPROC VariantdvEXT; - PFNGLVARIANTFVEXTPROC VariantfvEXT; - PFNGLVARIANTIVEXTPROC VariantivEXT; - PFNGLVARIANTSVEXTPROC VariantsvEXT; - PFNGLVARIANTUBVEXTPROC VariantubvEXT; - PFNGLVARIANTUIVEXTPROC VariantuivEXT; - PFNGLVARIANTUSVEXTPROC VariantusvEXT; - PFNGLVERTEX2BOESPROC Vertex2bOES; - PFNGLVERTEX2BVOESPROC Vertex2bvOES; - PFNGLVERTEX2HNVPROC Vertex2hNV; - PFNGLVERTEX2HVNVPROC Vertex2hvNV; - PFNGLVERTEX2XOESPROC Vertex2xOES; - PFNGLVERTEX2XVOESPROC Vertex2xvOES; - PFNGLVERTEX3BOESPROC Vertex3bOES; - PFNGLVERTEX3BVOESPROC Vertex3bvOES; - PFNGLVERTEX3HNVPROC Vertex3hNV; - PFNGLVERTEX3HVNVPROC Vertex3hvNV; - PFNGLVERTEX3XOESPROC Vertex3xOES; - PFNGLVERTEX3XVOESPROC Vertex3xvOES; - PFNGLVERTEX4BOESPROC Vertex4bOES; - PFNGLVERTEX4BVOESPROC Vertex4bvOES; - PFNGLVERTEX4HNVPROC Vertex4hNV; - PFNGLVERTEX4HVNVPROC Vertex4hvNV; - PFNGLVERTEX4XOESPROC Vertex4xOES; - PFNGLVERTEX4XVOESPROC Vertex4xvOES; PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding; PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat; PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat; PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat; - PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC VertexArrayBindVertexBufferEXT; PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor; - PFNGLVERTEXARRAYCOLOROFFSETEXTPROC VertexArrayColorOffsetEXT; - PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC VertexArrayEdgeFlagOffsetEXT; PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer; - PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC VertexArrayFogCoordOffsetEXT; - PFNGLVERTEXARRAYINDEXOFFSETEXTPROC VertexArrayIndexOffsetEXT; - PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC VertexArrayMultiTexCoordOffsetEXT; - PFNGLVERTEXARRAYNORMALOFFSETEXTPROC VertexArrayNormalOffsetEXT; - PFNGLVERTEXARRAYPARAMETERIAPPLEPROC VertexArrayParameteriAPPLE; - PFNGLVERTEXARRAYRANGEAPPLEPROC VertexArrayRangeAPPLE; - PFNGLVERTEXARRAYRANGENVPROC VertexArrayRangeNV; - PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC VertexArraySecondaryColorOffsetEXT; - PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC VertexArrayTexCoordOffsetEXT; - PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC VertexArrayVertexAttribBindingEXT; - PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC VertexArrayVertexAttribDivisorEXT; - PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC VertexArrayVertexAttribFormatEXT; - PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC VertexArrayVertexAttribIFormatEXT; - PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC VertexArrayVertexAttribIOffsetEXT; - PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC VertexArrayVertexAttribLFormatEXT; - PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC VertexArrayVertexAttribLOffsetEXT; - PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC VertexArrayVertexAttribOffsetEXT; - PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC VertexArrayVertexBindingDivisorEXT; PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer; PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers; - PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC VertexArrayVertexOffsetEXT; PFNGLVERTEXATTRIB1DPROC VertexAttrib1d; - PFNGLVERTEXATTRIB1DARBPROC VertexAttrib1dARB; - PFNGLVERTEXATTRIB1DNVPROC VertexAttrib1dNV; PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv; - PFNGLVERTEXATTRIB1DVARBPROC VertexAttrib1dvARB; - PFNGLVERTEXATTRIB1DVNVPROC VertexAttrib1dvNV; PFNGLVERTEXATTRIB1FPROC VertexAttrib1f; - PFNGLVERTEXATTRIB1FARBPROC VertexAttrib1fARB; - PFNGLVERTEXATTRIB1FNVPROC VertexAttrib1fNV; PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv; - PFNGLVERTEXATTRIB1FVARBPROC VertexAttrib1fvARB; - PFNGLVERTEXATTRIB1FVNVPROC VertexAttrib1fvNV; - PFNGLVERTEXATTRIB1HNVPROC VertexAttrib1hNV; - PFNGLVERTEXATTRIB1HVNVPROC VertexAttrib1hvNV; PFNGLVERTEXATTRIB1SPROC VertexAttrib1s; - PFNGLVERTEXATTRIB1SARBPROC VertexAttrib1sARB; - PFNGLVERTEXATTRIB1SNVPROC VertexAttrib1sNV; PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv; - PFNGLVERTEXATTRIB1SVARBPROC VertexAttrib1svARB; - PFNGLVERTEXATTRIB1SVNVPROC VertexAttrib1svNV; PFNGLVERTEXATTRIB2DPROC VertexAttrib2d; - PFNGLVERTEXATTRIB2DARBPROC VertexAttrib2dARB; - PFNGLVERTEXATTRIB2DNVPROC VertexAttrib2dNV; PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv; - PFNGLVERTEXATTRIB2DVARBPROC VertexAttrib2dvARB; - PFNGLVERTEXATTRIB2DVNVPROC VertexAttrib2dvNV; PFNGLVERTEXATTRIB2FPROC VertexAttrib2f; - PFNGLVERTEXATTRIB2FARBPROC VertexAttrib2fARB; - PFNGLVERTEXATTRIB2FNVPROC VertexAttrib2fNV; PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv; - PFNGLVERTEXATTRIB2FVARBPROC VertexAttrib2fvARB; - PFNGLVERTEXATTRIB2FVNVPROC VertexAttrib2fvNV; - PFNGLVERTEXATTRIB2HNVPROC VertexAttrib2hNV; - PFNGLVERTEXATTRIB2HVNVPROC VertexAttrib2hvNV; PFNGLVERTEXATTRIB2SPROC VertexAttrib2s; - PFNGLVERTEXATTRIB2SARBPROC VertexAttrib2sARB; - PFNGLVERTEXATTRIB2SNVPROC VertexAttrib2sNV; PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv; - PFNGLVERTEXATTRIB2SVARBPROC VertexAttrib2svARB; - PFNGLVERTEXATTRIB2SVNVPROC VertexAttrib2svNV; PFNGLVERTEXATTRIB3DPROC VertexAttrib3d; - PFNGLVERTEXATTRIB3DARBPROC VertexAttrib3dARB; - PFNGLVERTEXATTRIB3DNVPROC VertexAttrib3dNV; PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv; - PFNGLVERTEXATTRIB3DVARBPROC VertexAttrib3dvARB; - PFNGLVERTEXATTRIB3DVNVPROC VertexAttrib3dvNV; PFNGLVERTEXATTRIB3FPROC VertexAttrib3f; - PFNGLVERTEXATTRIB3FARBPROC VertexAttrib3fARB; - PFNGLVERTEXATTRIB3FNVPROC VertexAttrib3fNV; PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv; - PFNGLVERTEXATTRIB3FVARBPROC VertexAttrib3fvARB; - PFNGLVERTEXATTRIB3FVNVPROC VertexAttrib3fvNV; - PFNGLVERTEXATTRIB3HNVPROC VertexAttrib3hNV; - PFNGLVERTEXATTRIB3HVNVPROC VertexAttrib3hvNV; PFNGLVERTEXATTRIB3SPROC VertexAttrib3s; - PFNGLVERTEXATTRIB3SARBPROC VertexAttrib3sARB; - PFNGLVERTEXATTRIB3SNVPROC VertexAttrib3sNV; PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv; - PFNGLVERTEXATTRIB3SVARBPROC VertexAttrib3svARB; - PFNGLVERTEXATTRIB3SVNVPROC VertexAttrib3svNV; PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv; - PFNGLVERTEXATTRIB4NBVARBPROC VertexAttrib4NbvARB; PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv; - PFNGLVERTEXATTRIB4NIVARBPROC VertexAttrib4NivARB; PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv; - PFNGLVERTEXATTRIB4NSVARBPROC VertexAttrib4NsvARB; PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub; - PFNGLVERTEXATTRIB4NUBARBPROC VertexAttrib4NubARB; PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv; - PFNGLVERTEXATTRIB4NUBVARBPROC VertexAttrib4NubvARB; PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv; - PFNGLVERTEXATTRIB4NUIVARBPROC VertexAttrib4NuivARB; PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv; - PFNGLVERTEXATTRIB4NUSVARBPROC VertexAttrib4NusvARB; PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv; - PFNGLVERTEXATTRIB4BVARBPROC VertexAttrib4bvARB; PFNGLVERTEXATTRIB4DPROC VertexAttrib4d; - PFNGLVERTEXATTRIB4DARBPROC VertexAttrib4dARB; - PFNGLVERTEXATTRIB4DNVPROC VertexAttrib4dNV; PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv; - PFNGLVERTEXATTRIB4DVARBPROC VertexAttrib4dvARB; - PFNGLVERTEXATTRIB4DVNVPROC VertexAttrib4dvNV; PFNGLVERTEXATTRIB4FPROC VertexAttrib4f; - PFNGLVERTEXATTRIB4FARBPROC VertexAttrib4fARB; - PFNGLVERTEXATTRIB4FNVPROC VertexAttrib4fNV; PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv; - PFNGLVERTEXATTRIB4FVARBPROC VertexAttrib4fvARB; - PFNGLVERTEXATTRIB4FVNVPROC VertexAttrib4fvNV; - PFNGLVERTEXATTRIB4HNVPROC VertexAttrib4hNV; - PFNGLVERTEXATTRIB4HVNVPROC VertexAttrib4hvNV; PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv; - PFNGLVERTEXATTRIB4IVARBPROC VertexAttrib4ivARB; PFNGLVERTEXATTRIB4SPROC VertexAttrib4s; - PFNGLVERTEXATTRIB4SARBPROC VertexAttrib4sARB; - PFNGLVERTEXATTRIB4SNVPROC VertexAttrib4sNV; PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv; - PFNGLVERTEXATTRIB4SVARBPROC VertexAttrib4svARB; - PFNGLVERTEXATTRIB4SVNVPROC VertexAttrib4svNV; - PFNGLVERTEXATTRIB4UBNVPROC VertexAttrib4ubNV; PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv; - PFNGLVERTEXATTRIB4UBVARBPROC VertexAttrib4ubvARB; - PFNGLVERTEXATTRIB4UBVNVPROC VertexAttrib4ubvNV; PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv; - PFNGLVERTEXATTRIB4UIVARBPROC VertexAttrib4uivARB; PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv; - PFNGLVERTEXATTRIB4USVARBPROC VertexAttrib4usvARB; - PFNGLVERTEXATTRIBARRAYOBJECTATIPROC VertexAttribArrayObjectATI; PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding; PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor; - PFNGLVERTEXATTRIBDIVISORARBPROC VertexAttribDivisorARB; PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat; - PFNGLVERTEXATTRIBFORMATNVPROC VertexAttribFormatNV; PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i; - PFNGLVERTEXATTRIBI1IEXTPROC VertexAttribI1iEXT; PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv; - PFNGLVERTEXATTRIBI1IVEXTPROC VertexAttribI1ivEXT; PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui; - PFNGLVERTEXATTRIBI1UIEXTPROC VertexAttribI1uiEXT; PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv; - PFNGLVERTEXATTRIBI1UIVEXTPROC VertexAttribI1uivEXT; PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i; - PFNGLVERTEXATTRIBI2IEXTPROC VertexAttribI2iEXT; PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv; - PFNGLVERTEXATTRIBI2IVEXTPROC VertexAttribI2ivEXT; PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui; - PFNGLVERTEXATTRIBI2UIEXTPROC VertexAttribI2uiEXT; PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv; - PFNGLVERTEXATTRIBI2UIVEXTPROC VertexAttribI2uivEXT; PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i; - PFNGLVERTEXATTRIBI3IEXTPROC VertexAttribI3iEXT; PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv; - PFNGLVERTEXATTRIBI3IVEXTPROC VertexAttribI3ivEXT; PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui; - PFNGLVERTEXATTRIBI3UIEXTPROC VertexAttribI3uiEXT; PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv; - PFNGLVERTEXATTRIBI3UIVEXTPROC VertexAttribI3uivEXT; PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv; - PFNGLVERTEXATTRIBI4BVEXTPROC VertexAttribI4bvEXT; PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i; - PFNGLVERTEXATTRIBI4IEXTPROC VertexAttribI4iEXT; PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv; - PFNGLVERTEXATTRIBI4IVEXTPROC VertexAttribI4ivEXT; PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv; - PFNGLVERTEXATTRIBI4SVEXTPROC VertexAttribI4svEXT; PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv; - PFNGLVERTEXATTRIBI4UBVEXTPROC VertexAttribI4ubvEXT; PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui; - PFNGLVERTEXATTRIBI4UIEXTPROC VertexAttribI4uiEXT; PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv; - PFNGLVERTEXATTRIBI4UIVEXTPROC VertexAttribI4uivEXT; PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv; - PFNGLVERTEXATTRIBI4USVEXTPROC VertexAttribI4usvEXT; PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat; - PFNGLVERTEXATTRIBIFORMATNVPROC VertexAttribIFormatNV; PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer; - PFNGLVERTEXATTRIBIPOINTEREXTPROC VertexAttribIPointerEXT; PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d; - PFNGLVERTEXATTRIBL1DEXTPROC VertexAttribL1dEXT; PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv; - PFNGLVERTEXATTRIBL1DVEXTPROC VertexAttribL1dvEXT; - PFNGLVERTEXATTRIBL1I64NVPROC VertexAttribL1i64NV; - PFNGLVERTEXATTRIBL1I64VNVPROC VertexAttribL1i64vNV; - PFNGLVERTEXATTRIBL1UI64ARBPROC VertexAttribL1ui64ARB; - PFNGLVERTEXATTRIBL1UI64NVPROC VertexAttribL1ui64NV; - PFNGLVERTEXATTRIBL1UI64VARBPROC VertexAttribL1ui64vARB; - PFNGLVERTEXATTRIBL1UI64VNVPROC VertexAttribL1ui64vNV; PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d; - PFNGLVERTEXATTRIBL2DEXTPROC VertexAttribL2dEXT; PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv; - PFNGLVERTEXATTRIBL2DVEXTPROC VertexAttribL2dvEXT; - PFNGLVERTEXATTRIBL2I64NVPROC VertexAttribL2i64NV; - PFNGLVERTEXATTRIBL2I64VNVPROC VertexAttribL2i64vNV; - PFNGLVERTEXATTRIBL2UI64NVPROC VertexAttribL2ui64NV; - PFNGLVERTEXATTRIBL2UI64VNVPROC VertexAttribL2ui64vNV; PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d; - PFNGLVERTEXATTRIBL3DEXTPROC VertexAttribL3dEXT; PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv; - PFNGLVERTEXATTRIBL3DVEXTPROC VertexAttribL3dvEXT; - PFNGLVERTEXATTRIBL3I64NVPROC VertexAttribL3i64NV; - PFNGLVERTEXATTRIBL3I64VNVPROC VertexAttribL3i64vNV; - PFNGLVERTEXATTRIBL3UI64NVPROC VertexAttribL3ui64NV; - PFNGLVERTEXATTRIBL3UI64VNVPROC VertexAttribL3ui64vNV; PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d; - PFNGLVERTEXATTRIBL4DEXTPROC VertexAttribL4dEXT; PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv; - PFNGLVERTEXATTRIBL4DVEXTPROC VertexAttribL4dvEXT; - PFNGLVERTEXATTRIBL4I64NVPROC VertexAttribL4i64NV; - PFNGLVERTEXATTRIBL4I64VNVPROC VertexAttribL4i64vNV; - PFNGLVERTEXATTRIBL4UI64NVPROC VertexAttribL4ui64NV; - PFNGLVERTEXATTRIBL4UI64VNVPROC VertexAttribL4ui64vNV; PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat; - PFNGLVERTEXATTRIBLFORMATNVPROC VertexAttribLFormatNV; PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer; - PFNGLVERTEXATTRIBLPOINTEREXTPROC VertexAttribLPointerEXT; PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui; PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv; PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui; @@ -12516,138 +10756,14 @@ typedef struct GladGLContext { PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv; PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui; PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv; - PFNGLVERTEXATTRIBPARAMETERIAMDPROC VertexAttribParameteriAMD; PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer; - PFNGLVERTEXATTRIBPOINTERARBPROC VertexAttribPointerARB; - PFNGLVERTEXATTRIBPOINTERNVPROC VertexAttribPointerNV; - PFNGLVERTEXATTRIBS1DVNVPROC VertexAttribs1dvNV; - PFNGLVERTEXATTRIBS1FVNVPROC VertexAttribs1fvNV; - PFNGLVERTEXATTRIBS1HVNVPROC VertexAttribs1hvNV; - PFNGLVERTEXATTRIBS1SVNVPROC VertexAttribs1svNV; - PFNGLVERTEXATTRIBS2DVNVPROC VertexAttribs2dvNV; - PFNGLVERTEXATTRIBS2FVNVPROC VertexAttribs2fvNV; - PFNGLVERTEXATTRIBS2HVNVPROC VertexAttribs2hvNV; - PFNGLVERTEXATTRIBS2SVNVPROC VertexAttribs2svNV; - PFNGLVERTEXATTRIBS3DVNVPROC VertexAttribs3dvNV; - PFNGLVERTEXATTRIBS3FVNVPROC VertexAttribs3fvNV; - PFNGLVERTEXATTRIBS3HVNVPROC VertexAttribs3hvNV; - PFNGLVERTEXATTRIBS3SVNVPROC VertexAttribs3svNV; - PFNGLVERTEXATTRIBS4DVNVPROC VertexAttribs4dvNV; - PFNGLVERTEXATTRIBS4FVNVPROC VertexAttribs4fvNV; - PFNGLVERTEXATTRIBS4HVNVPROC VertexAttribs4hvNV; - PFNGLVERTEXATTRIBS4SVNVPROC VertexAttribs4svNV; - PFNGLVERTEXATTRIBS4UBVNVPROC VertexAttribs4ubvNV; PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor; - PFNGLVERTEXBLENDARBPROC VertexBlendARB; - PFNGLVERTEXBLENDENVFATIPROC VertexBlendEnvfATI; - PFNGLVERTEXBLENDENVIATIPROC VertexBlendEnviATI; - PFNGLVERTEXFORMATNVPROC VertexFormatNV; - PFNGLVERTEXPOINTEREXTPROC VertexPointerEXT; - PFNGLVERTEXPOINTERLISTIBMPROC VertexPointerListIBM; - PFNGLVERTEXPOINTERVINTELPROC VertexPointervINTEL; - PFNGLVERTEXSTREAM1DATIPROC VertexStream1dATI; - PFNGLVERTEXSTREAM1DVATIPROC VertexStream1dvATI; - PFNGLVERTEXSTREAM1FATIPROC VertexStream1fATI; - PFNGLVERTEXSTREAM1FVATIPROC VertexStream1fvATI; - PFNGLVERTEXSTREAM1IATIPROC VertexStream1iATI; - PFNGLVERTEXSTREAM1IVATIPROC VertexStream1ivATI; - PFNGLVERTEXSTREAM1SATIPROC VertexStream1sATI; - PFNGLVERTEXSTREAM1SVATIPROC VertexStream1svATI; - PFNGLVERTEXSTREAM2DATIPROC VertexStream2dATI; - PFNGLVERTEXSTREAM2DVATIPROC VertexStream2dvATI; - PFNGLVERTEXSTREAM2FATIPROC VertexStream2fATI; - PFNGLVERTEXSTREAM2FVATIPROC VertexStream2fvATI; - PFNGLVERTEXSTREAM2IATIPROC VertexStream2iATI; - PFNGLVERTEXSTREAM2IVATIPROC VertexStream2ivATI; - PFNGLVERTEXSTREAM2SATIPROC VertexStream2sATI; - PFNGLVERTEXSTREAM2SVATIPROC VertexStream2svATI; - PFNGLVERTEXSTREAM3DATIPROC VertexStream3dATI; - PFNGLVERTEXSTREAM3DVATIPROC VertexStream3dvATI; - PFNGLVERTEXSTREAM3FATIPROC VertexStream3fATI; - PFNGLVERTEXSTREAM3FVATIPROC VertexStream3fvATI; - PFNGLVERTEXSTREAM3IATIPROC VertexStream3iATI; - PFNGLVERTEXSTREAM3IVATIPROC VertexStream3ivATI; - PFNGLVERTEXSTREAM3SATIPROC VertexStream3sATI; - PFNGLVERTEXSTREAM3SVATIPROC VertexStream3svATI; - PFNGLVERTEXSTREAM4DATIPROC VertexStream4dATI; - PFNGLVERTEXSTREAM4DVATIPROC VertexStream4dvATI; - PFNGLVERTEXSTREAM4FATIPROC VertexStream4fATI; - PFNGLVERTEXSTREAM4FVATIPROC VertexStream4fvATI; - PFNGLVERTEXSTREAM4IATIPROC VertexStream4iATI; - PFNGLVERTEXSTREAM4IVATIPROC VertexStream4ivATI; - PFNGLVERTEXSTREAM4SATIPROC VertexStream4sATI; - PFNGLVERTEXSTREAM4SVATIPROC VertexStream4svATI; - PFNGLVERTEXWEIGHTPOINTEREXTPROC VertexWeightPointerEXT; - PFNGLVERTEXWEIGHTFEXTPROC VertexWeightfEXT; - PFNGLVERTEXWEIGHTFVEXTPROC VertexWeightfvEXT; - PFNGLVERTEXWEIGHTHNVPROC VertexWeighthNV; - PFNGLVERTEXWEIGHTHVNVPROC VertexWeighthvNV; - PFNGLVIDEOCAPTURENVPROC VideoCaptureNV; - PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC VideoCaptureStreamParameterdvNV; - PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC VideoCaptureStreamParameterfvNV; - PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC VideoCaptureStreamParameterivNV; PFNGLVIEWPORTPROC Viewport; PFNGLVIEWPORTARRAYVPROC ViewportArrayv; PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf; PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv; - PFNGLVIEWPORTPOSITIONWSCALENVPROC ViewportPositionWScaleNV; - PFNGLVIEWPORTSWIZZLENVPROC ViewportSwizzleNV; - PFNGLWAITSEMAPHOREEXTPROC WaitSemaphoreEXT; - PFNGLWAITSEMAPHOREUI64NVXPROC WaitSemaphoreui64NVX; PFNGLWAITSYNCPROC WaitSync; - PFNGLWAITVKSEMAPHORENVPROC WaitVkSemaphoreNV; - PFNGLWEIGHTPATHSNVPROC WeightPathsNV; - PFNGLWEIGHTPOINTERARBPROC WeightPointerARB; - PFNGLWEIGHTBVARBPROC WeightbvARB; - PFNGLWEIGHTDVARBPROC WeightdvARB; - PFNGLWEIGHTFVARBPROC WeightfvARB; - PFNGLWEIGHTIVARBPROC WeightivARB; - PFNGLWEIGHTSVARBPROC WeightsvARB; - PFNGLWEIGHTUBVARBPROC WeightubvARB; - PFNGLWEIGHTUIVARBPROC WeightuivARB; - PFNGLWEIGHTUSVARBPROC WeightusvARB; - PFNGLWINDOWPOS2DARBPROC WindowPos2dARB; - PFNGLWINDOWPOS2DMESAPROC WindowPos2dMESA; - PFNGLWINDOWPOS2DVARBPROC WindowPos2dvARB; - PFNGLWINDOWPOS2DVMESAPROC WindowPos2dvMESA; - PFNGLWINDOWPOS2FARBPROC WindowPos2fARB; - PFNGLWINDOWPOS2FMESAPROC WindowPos2fMESA; - PFNGLWINDOWPOS2FVARBPROC WindowPos2fvARB; - PFNGLWINDOWPOS2FVMESAPROC WindowPos2fvMESA; - PFNGLWINDOWPOS2IARBPROC WindowPos2iARB; - PFNGLWINDOWPOS2IMESAPROC WindowPos2iMESA; - PFNGLWINDOWPOS2IVARBPROC WindowPos2ivARB; - PFNGLWINDOWPOS2IVMESAPROC WindowPos2ivMESA; - PFNGLWINDOWPOS2SARBPROC WindowPos2sARB; - PFNGLWINDOWPOS2SMESAPROC WindowPos2sMESA; - PFNGLWINDOWPOS2SVARBPROC WindowPos2svARB; - PFNGLWINDOWPOS2SVMESAPROC WindowPos2svMESA; - PFNGLWINDOWPOS3DARBPROC WindowPos3dARB; - PFNGLWINDOWPOS3DMESAPROC WindowPos3dMESA; - PFNGLWINDOWPOS3DVARBPROC WindowPos3dvARB; - PFNGLWINDOWPOS3DVMESAPROC WindowPos3dvMESA; - PFNGLWINDOWPOS3FARBPROC WindowPos3fARB; - PFNGLWINDOWPOS3FMESAPROC WindowPos3fMESA; - PFNGLWINDOWPOS3FVARBPROC WindowPos3fvARB; - PFNGLWINDOWPOS3FVMESAPROC WindowPos3fvMESA; - PFNGLWINDOWPOS3IARBPROC WindowPos3iARB; - PFNGLWINDOWPOS3IMESAPROC WindowPos3iMESA; - PFNGLWINDOWPOS3IVARBPROC WindowPos3ivARB; - PFNGLWINDOWPOS3IVMESAPROC WindowPos3ivMESA; - PFNGLWINDOWPOS3SARBPROC WindowPos3sARB; - PFNGLWINDOWPOS3SMESAPROC WindowPos3sMESA; - PFNGLWINDOWPOS3SVARBPROC WindowPos3svARB; - PFNGLWINDOWPOS3SVMESAPROC WindowPos3svMESA; - PFNGLWINDOWPOS4DMESAPROC WindowPos4dMESA; - PFNGLWINDOWPOS4DVMESAPROC WindowPos4dvMESA; - PFNGLWINDOWPOS4FMESAPROC WindowPos4fMESA; - PFNGLWINDOWPOS4FVMESAPROC WindowPos4fvMESA; - PFNGLWINDOWPOS4IMESAPROC WindowPos4iMESA; - PFNGLWINDOWPOS4IVMESAPROC WindowPos4ivMESA; - PFNGLWINDOWPOS4SMESAPROC WindowPos4sMESA; - PFNGLWINDOWPOS4SVMESAPROC WindowPos4svMESA; - PFNGLWINDOWRECTANGLESEXTPROC WindowRectanglesEXT; - PFNGLWRITEMASKEXTPROC WriteMaskEXT; + } GladGLContext; #ifdef __cplusplus diff --git a/StgSharp.Native/sn-head/sn_intrinsic.h b/StgSharp.Native/sn-head/sn_intrinsic.h index d75204f0..9a64e480 100644 --- a/StgSharp.Native/sn-head/sn_intrinsic.h +++ b/StgSharp.Native/sn-head/sn_intrinsic.h @@ -186,15 +186,10 @@ typedef void(SN_DECL *KER_PROC_LAS)(mat_kernel *matrix, mat_kernel *ans, scalar_ #pragma region special matrix kernel operation -typedef void(SN_DECL *POVITPROC)(mat_kernel const *source, mat_kernel *ans); -#define MAT_POVIT_PROC(T_type, T_arch) povit_##T_type##_##T_arch -#define DECLARE_MAT_POVIT_PROC(T_type, T_arch) \ - INTERNAL void SN_DECL MAT_POVIT_PROC(T_type, T_arch)(MAT_KERNEL(T_type) const *source, \ - size_t col_begin, size_t col_length, \ - size_t *restrict ans) -DECLARE_MAT_POVIT_PROC(float, sse); -DECLARE_MAT_POVIT_PROC(float, avx); -DECLARE_MAT_POVIT_PROC(float, 512); +typedef void(SN_DECL *PIVOTPROC)(mat_kernel const *source, size_t col_begin, size_t col_length, + size_t *restrict ans); +INTERNAL void SN_DECL pivot_float(MAT_KERNEL(float) const *source, size_t col_begin, + size_t col_length, size_t *restrict ans); #pragma endregion @@ -210,10 +205,18 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, add); DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, add); DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, add); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, add); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, add); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, add); + DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, sub); DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, sub); DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, sub); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, sub); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, sub); +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, sub); + DECLARE_KER_PROC_RIGHT_ANS(float, sse, transpose); DECLARE_KER_PROC_RIGHT_ANS(float, avx, transpose); DECLARE_KER_PROC_RIGHT_ANS(float, 512, transpose); @@ -222,10 +225,18 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul); DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul); DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul); +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, scalar_mul); +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, scalar_mul); +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, scalar_mul); + DECLARE_BUF_PROC_ANS_SCALAR(float, sse, fill); DECLARE_BUF_PROC_ANS_SCALAR(float, avx, fill); DECLARE_BUF_PROC_ANS_SCALAR(float, 512, fill); +DECLARE_BUF_PROC_ANS_SCALAR(double, sse, fill); +DECLARE_BUF_PROC_ANS_SCALAR(double, avx, fill); +DECLARE_BUF_PROC_ANS_SCALAR(double, 512, fill); + #pragma endregion #pragma region fma @@ -233,6 +244,10 @@ DECLARE_PNL_PROC_ANS(float, sse, clear); DECLARE_PNL_PROC_ANS(float, avx, clear); DECLARE_PNL_PROC_ANS(float, 512, clear); +DECLARE_PNL_PROC_ANS(double, sse, clear); +DECLARE_PNL_PROC_ANS(double, avx, clear); +DECLARE_PNL_PROC_ANS(double, 512, clear); + DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, sse, fma); DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx, fma); DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx_fma, fma); @@ -269,24 +284,31 @@ INTERNAL int SN_DECL index_pair_sse(short const *str, uint32_t target, int lengt #pragma endregion +typedef struct mat_intrinsic { + BUF_PROC_LRA buffer_add; + BUF_PROC_AS buffer_fill; + BUF_PROC_RAS buffer_scalar_mul; + BUF_PROC_LRA buffer_sub; + KER_PROC_RA buffer_transpose; + PANEL_PROC build_panel; + PANEL_PROC clear_panel; + PNL_PROC_LRA panel_fma; + PIVOTPROC pivot; + PANEL_PROC store_panel; + +} mat_intrinsic; + // Mirrors C# IntrinsicContext field order so managed/unmanaged layouts stay in sync. typedef struct sn_intrinsic { HASH city_hash_simplify; - BUF_PROC_LRA f32_buffer_add; - BUF_PROC_AS f32_buffer_fill; - BUF_PROC_RAS f32_buffer_scalar_mul; - BUF_PROC_LRA f32_buffer_sub; - KER_PROC_RA f32_buffer_transpose; - PANEL_PROC f32_build_panel; - PANEL_PROC f32_clear_panel; - VECTORNORMALIZEPROC f32_normalize_3; - PNL_PROC_LRA f32_panel_fma; - PANEL_PROC f32_store_panel; FACTORIALROC factorial_simd; INDEX_PAIR index_pair; - BUF_PROC_RAS variant; + VECTORNORMALIZEPROC vec_f32_normalize_3; + mat_intrinsic mat[4]; } sn_intrinsic; +typedef enum elment_type { F32 = 0, F64 = 1, I32 = 2, I64 = 3 } element_type; + typedef enum most_advanced_instruction { #ifdef _MSC_VER SSE = __IA_SUPPORT_SSE42, diff --git a/StgSharp.Native/sn-head/sn_matkernel.h b/StgSharp.Native/sn-head/sn_matkernel.h index f9ce24c0..5236d28c 100644 --- a/StgSharp.Native/sn-head/sn_matkernel.h +++ b/StgSharp.Native/sn-head/sn_matkernel.h @@ -12,20 +12,28 @@ #define YMMCOUNT(T) (sizeof(T) / 2) #define ZMMCOUNT(T) (sizeof(T) / 4) -#define MAT_KERNEL(T) \ - union { \ - __m128 xmm[XMMCOUNT(T) / 4]; \ - __m256 ymm[YMMCOUNT(T) / 4]; \ - __m512 zmm[ZMMCOUNT(T) / 4]; \ - T m[4][4]; \ +#define MAT_KERNEL(T) \ + union /* MAT_KERNEL_##T## /**/ { \ + __m128 f32_x[XMMCOUNT(T)]; \ + __m256 f32_y[YMMCOUNT(T)]; \ + __m512 f32_z[ZMMCOUNT(T)]; \ + \ + __m128d f64_x[XMMCOUNT(T)]; \ + __m256d f64_y[YMMCOUNT(T)]; \ + __m512d f64_z[ZMMCOUNT(T)]; \ + T m[4][4]; \ } -#define VEC(T) \ - union { \ - __m128 xmm[XMMCOUNT(T) / 4]; \ - __m256 ymm[YMMCOUNT(T) / 4]; \ - __m512 zmm[ZMMCOUNT(T) / 4]; \ - T v[4]; \ +#define VEC(T) \ + union { \ + __m128 f32_x[XMMCOUNT(T) / 4]; \ + __m256 f32_y[YMMCOUNT(T) / 4]; \ + __m512 f32_z[ZMMCOUNT(T) / 4]; \ + \ + __m128d f64_x[XMMCOUNT(T) / 4]; \ + __m256d f64_y[YMMCOUNT(T) / 4]; \ + __m512d f64_z[ZMMCOUNT(T) / 4]; \ + T v[4]; \ } /* Provide a named alias for the zero kernel type to ensure consistent linkage in C++. */ @@ -35,6 +43,8 @@ typedef MAT_KERNEL(uint64_t) sn_zero_kernel_u64; #define SN_LANES(T_VEC, T) (sizeof(T_VEC) / sizeof(T)) #define SN_MAX(a, b) (((a)) > ((b)) ? (a) : (b)) #define SN_CEIL_DIV(a, b) (((a) + (b) - 1) / (b)) +#define SN_BITS(x) ((int)(sizeof(x) * 8)) +#define PANEL_MINQ(T_VEC, T) SN_MAX(4, SN_MAX(SN_BITS(T_VEC) / 64, SN_BITS(T_VEC) / SN_BITS(T))) /* Panel geometry helpers (all compile-time): */ #define PANEL_Q(T, T_VEC, MINQ) SN_MAX(SN_LANES(T_VEC, T), (MINQ)) @@ -60,26 +70,25 @@ typedef MAT_KERNEL(uint64_t) sn_zero_kernel_u64; /* ISA presets with minimum square side: - SSE : MINQ=4 (avoid 2x2 for double) - - AVX2 : MINQ=8 - - AVX-512: MINQ=8 (16 for float/i32 naturally, so this is a no-op there) + - AVX2 : MINQ computed as max(4, vector_bits/64, vector_bits/element_bits) + - AVX-512: same rule (float/i32 naturally expand to 16) */ /* SSE panel layout: column-major buffer holding 4 logical columns with MINQ=4. Columns: each column packs up to four scalars so ALIGN equals sizeof(__m128). Alignment: every column boundary lands on a 16-byte multiple for XMM loads. */ -#define MAT_PANEL_sse(T) SN_ALIGNAS(16) MAT_PANEL_SQ_MIN_NOALIGN(T, __m128, 4) -/* AVX2 panel layout: column-major buffer holding 8 logical columns with MINQ=8. - Columns: each column stores eight elements via two 256-bit chunks when T is 32-bit. +#define MAT_PANEL_sse(T) SN_ALIGNAS(16) MAT_PANEL_SQ_MIN_NOALIGN(T, __m128, PANEL_MINQ(__m128, T)) +/* AVX2 panel layout: column-major buffer holding 8 logical columns with MINQ per PANEL_MINQ. + Columns: each column stores up to lanes elements via contiguous chunks. Alignment: column starts are 32-byte aligned so AVX2 loads/stores remain contiguous. */ -#define MAT_PANEL_avx(T) SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, 8) -/* AVX2 panel layout: column-major buffer holding 8 logical columns with MINQ=8. - Columns: each column stores eight elements via two 256-bit chunks when T is 32-bit. - Alignment: column starts are 32-byte aligned so AVX2 loads/stores remain contiguous. */ -#define MAT_PANEL_avx_fma(T) SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, 8) +#define MAT_PANEL_avx(T) SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T)) +/* AVX2/FMA panel layout shares the same geometry as AVX2. */ +#define MAT_PANEL_avx_fma(T) \ + SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T)) /* AVX-512 panel layout: column-major buffer holding 8 or more columns depending on T. - Columns: each column expands to ceil(Q/lanes) ZMM chunks; default MINQ=8 keeps doublse-wide tiles. + Columns: each column expands to ceil(Q/lanes) ZMM chunks. Alignment: column starts sit on 64-byte boundaries to match AVX-512 streaming access. */ -#define MAT_PANEL_512(T) SN_ALIGNAS(64) MAT_PANEL_SQ_MIN_NOALIGN(T, __m512, 8) +#define MAT_PANEL_512(T) SN_ALIGNAS(64) MAT_PANEL_SQ_MIN_NOALIGN(T, __m512, PANEL_MINQ(__m512, T)) /* Global zero kernel declaration (defined in dllmain.c), aligned to 64 bytes */ #ifdef __cplusplus @@ -117,12 +126,15 @@ extern __declspec(align(64)) sn_zero_kernel_u64 SN_ZERO_KERNEL; int col_index, int row_index) /* Declarations for AVX float variant */ -DECLARE_BUILD_PANEL(sse, float); DECLARE_BUILD_PANEL(avx, float); DECLARE_BUILD_PANEL(512, float); -DECLARE_STORE_PANEL(sse, float); + DECLARE_STORE_PANEL(avx, float); DECLARE_STORE_PANEL(512, float); DECLARE_STORE_PANEL(512, float); +DECLARE_BUILD_PANEL(512, double); + +DECLARE_STORE_PANEL(512, double); + #endif /* SN_MATKERNEL */ diff --git a/StgSharp.Native/sn-src/k_basicop.c b/StgSharp.Native/sn-src/k_basicop.c index 85975824..9240b2fa 100644 --- a/StgSharp.Native/sn-src/k_basicop.c +++ b/StgSharp.Native/sn-src/k_basicop.c @@ -23,29 +23,54 @@ DECLARE_PNL_PROC_ANS(float, 512, clear) PANEL_COL_VEC((*ans), i, 0) = zero; } } - + +DECLARE_PNL_PROC_ANS(double, sse, clear) +{ + register __m128 zero = _mm_setzero_ps(); + PANEL_COL_VEC((*ans), 0, 0) = zero; + PANEL_COL_VEC((*ans), 1, 0) = zero; + PANEL_COL_VEC((*ans), 2, 0) = zero; + PANEL_COL_VEC((*ans), 3, 0) = zero; +} + +DECLARE_PNL_PROC_ANS(double, avx, clear) +{ + register __m256 zero = _mm256_setzero_ps(); + for (size_t i = 0; i < 8; i++) { + PANEL_COL_VEC((*ans), i, 0) = zero; + } +} + +DECLARE_PNL_PROC_ANS(double, 512, clear) +{ + register __m512 zero = _mm512_setzero_ps(); + for (size_t i = 0; i < 16; i++) { + PANEL_COL_VEC((*ans), i, 0) = zero; + } +} + // Matrix transpose implementations DECLARE_KER_PROC_RIGHT_ANS(float, sse, transpose) { - register __m128 col0 = right->xmm[0]; - register __m128 col1 = right->xmm[1]; - register __m128 col2 = right->xmm[2]; - register __m128 col3 = right->xmm[3]; + register __m128 col0 = right->f32_x[0]; + register __m128 col1 = right->f32_x[1]; + register __m128 col2 = right->f32_x[2]; + register __m128 col3 = right->f32_x[3]; register __m128 tmp0 = _mm_unpacklo_ps(col0, col1); register __m128 tmp1 = _mm_unpackhi_ps(col0, col1); register __m128 tmp2 = _mm_unpacklo_ps(col2, col3); register __m128 tmp3 = _mm_unpackhi_ps(col2, col3); - ans->xmm[0] = _mm_movelh_ps(tmp0, tmp2); - ans->xmm[1] = _mm_movehl_ps(tmp2, tmp0); - ans->xmm[2] = _mm_movelh_ps(tmp1, tmp3); - ans->xmm[3] = _mm_movehl_ps(tmp3, tmp1); + ans->f32_x[0] = _mm_movelh_ps(tmp0, tmp2); + ans->f32_x[1] = _mm_movehl_ps(tmp2, tmp0); + ans->f32_x[2] = _mm_movelh_ps(tmp1, tmp3); + ans->f32_x[3] = _mm_movehl_ps(tmp3, tmp1); } DECLARE_KER_PROC_RIGHT_ANS(float, avx, transpose) { - register __m256 col_low = right->ymm[0]; - register __m256 col_high = right->ymm[1]; + register __m256 col_low = right->f32_y[0]; + register __m256 col_high = right->f32_y[1]; register __m256 unpack_low = _mm256_unpacklo_ps(col_low, col_high); register __m256 unpack_high = _mm256_unpackhi_ps(col_low, col_high); @@ -53,16 +78,16 @@ DECLARE_KER_PROC_RIGHT_ANS(float, avx, transpose) col_low = _mm256_permute2f128_ps(unpack_low, unpack_high, 0x20); col_high = _mm256_permute2f128_ps(unpack_low, unpack_high, 0x31); - ans->ymm[0] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(2, 0, 2, 0)); - ans->ymm[1] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(3, 1, 3, 1)); + ans->f32_y[0] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(2, 0, 2, 0)); + ans->f32_y[1] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(3, 1, 3, 1)); } DECLARE_KER_PROC_RIGHT_ANS(float, 512, transpose) { - register __m512 matrix = right->zmm[0]; + register __m512 matrix = right->f32_z[0]; const __m512i transpose_indices = _mm512_setr_epi32(0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15); - ans->zmm[0] = _mm512_permutexvar_ps(transpose_indices, matrix); + ans->f32_z[0] = _mm512_permutexvar_ps(transpose_indices, matrix); } diff --git a/StgSharp.Native/sn-src/k_bufop.c b/StgSharp.Native/sn-src/k_bufop.c index ce3d29ad..0bfa9ca7 100644 --- a/StgSharp.Native/sn-src/k_bufop.c +++ b/StgSharp.Native/sn-src/k_bufop.c @@ -4,10 +4,10 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, sse, fill) { register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]); for (size_t i = 0; i < count; i++) { - ans[i].xmm[0] = vec; - ans[i].xmm[1] = vec; - ans[i].xmm[2] = vec; - ans[i].xmm[3] = vec; + ans[i].f32_x[0] = vec; + ans[i].f32_x[1] = vec; + ans[i].f32_x[2] = vec; + ans[i].f32_x[3] = vec; } } @@ -15,8 +15,8 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, avx, fill) { register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data))); for (size_t i = 0; i < count; i++) { - ans[i].ymm[0] = vec; - ans[i].ymm[1] = vec; + ans[i].f32_y[0] = vec; + ans[i].f32_y[1] = vec; } } @@ -24,22 +24,57 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, 512, fill) { register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]); for (size_t i = 0; i < count; i++) { - ans[i].zmm[0] = vec; + ans[i].f32_z[0] = vec; + } +} + +DECLARE_BUF_PROC_ANS_SCALAR(double, sse, fill) +{ + register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]); + for (size_t i = 0; i < count; i++) { + ans[i].f64_x[0] = vec; + ans[i].f64_x[1] = vec; + ans[i].f64_x[2] = vec; + ans[i].f64_x[3] = vec; + ans[i].f64_x[4] = vec; + ans[i].f64_x[5] = vec; + ans[i].f64_x[6] = vec; + ans[i].f64_x[7] = vec; + } +} + +DECLARE_BUF_PROC_ANS_SCALAR(double, avx, fill) +{ + register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data))); + for (size_t i = 0; i < count; i++) { + ans[i].f64_y[0] = vec; + ans[i].f64_y[1] = vec; + ans[i].f64_y[2] = vec; + ans[i].f64_y[3] = vec; + } +} + +DECLARE_BUF_PROC_ANS_SCALAR(double, 512, fill) +{ + register __m512d vec = _mm512_broadcastsd_pd(_mm_loadu_pd(scalar)); + for (size_t i = 0; i < count; i++) { + ans[i].f64_z[0] = vec; + ans[i].f64_z[1] = vec; } } DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, add) { for (size_t i = 0; i < count; i++) { - register __m128 c0 = _mm_add_ps(left[i].xmm[0], right[i].xmm[0]); - register __m128 c1 = _mm_add_ps(left[i].xmm[1], right[i].xmm[1]); - register __m128 c2 = _mm_add_ps(left[i].xmm[2], right[i].xmm[2]); - register __m128 c3 = _mm_add_ps(left[i].xmm[3], right[i].xmm[3]); + register __m128 c0 = _mm_add_ps(left[i].f32_x[0], right[i].f32_x[0]); + register __m128 c1 = _mm_add_ps(left[i].f32_x[1], right[i].f32_x[1]); + register __m128 c2 = _mm_add_ps(left[i].f32_x[2], right[i].f32_x[2]); + register __m128 c3 = _mm_add_ps(left[i].f32_x[3], right[i].f32_x[3]); - ans[i].xmm[0] = c0; - ans[i].xmm[1] = c1; - ans[i].xmm[2] = c2; - ans[i].xmm[3] = c3; + ans[i].f32_x[0] = c0; + ans[i].f32_x[1] = c1; + ans[i].f32_x[2] = c2; + ans[i].f32_x[3] = c3; } } @@ -47,51 +82,147 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, add) { for (size_t i = 0; i < count; i++) { size_t s = sizeof(MAT_KERNEL(float)); - register __m256 c0 = _mm256_add_ps(left[i].ymm[0], right[i].ymm[0]); - register __m256 c1 = _mm256_add_ps(left[i].ymm[1], right[i].ymm[1]); - ans[i].ymm[0] = c0; - ans[i].ymm[1] = c1; + register __m256 c0 = _mm256_add_ps(left[i].f32_y[0], right[i].f32_y[0]); + register __m256 c1 = _mm256_add_ps(left[i].f32_y[1], right[i].f32_y[1]); + ans[i].f32_y[0] = c0; + ans[i].f32_y[1] = c1; } } DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, add) { for (size_t i = 0; i < count; i++) { - register __m512 c0 = _mm512_add_ps(left[i].zmm[0], right[i].zmm[0]); - ans[i].zmm[0] = c0; + register __m512 c0 = _mm512_add_ps(left[i].f32_z[0], right[i].f32_z[0]); + ans[i].f32_z[0] = c0; + } +} +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, add) +{ + for (size_t i = 0; i < count; i++) { + register __m128d c0 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[0]), + _mm_castps_pd(right[i].f32_x[0])); + register __m128d c1 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[1]), + _mm_castps_pd(right[i].f32_x[1])); + register __m128d c2 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[2]), + _mm_castps_pd(right[i].f32_x[2])); + register __m128d c3 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[3]), + _mm_castps_pd(right[i].f32_x[3])); + register __m128d c4 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[4]), + _mm_castps_pd(right[i].f32_x[4])); + register __m128d c5 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[5]), + _mm_castps_pd(right[i].f32_x[5])); + register __m128d c6 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[6]), + _mm_castps_pd(right[i].f32_x[6])); + register __m128d c7 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[7]), + _mm_castps_pd(right[i].f32_x[7])); + + ans[i].f32_x[0] = _mm_castpd_ps(c0); + ans[i].f32_x[1] = _mm_castpd_ps(c1); + ans[i].f32_x[2] = _mm_castpd_ps(c2); + ans[i].f32_x[3] = _mm_castpd_ps(c3); + ans[i].f32_x[4] = _mm_castpd_ps(c4); + ans[i].f32_x[5] = _mm_castpd_ps(c5); + ans[i].f32_x[6] = _mm_castpd_ps(c6); + ans[i].f32_x[7] = _mm_castpd_ps(c7); + } +} + +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, add) +{ + for (size_t i = 0; i < count; i++) { + size_t s = sizeof(MAT_KERNEL(float)); + register __m256d c0 = _mm256_add_pd(left[i].f64_y[0], right[i].f64_y[0]); + register __m256d c1 = _mm256_add_pd(left[i].f64_y[1], right[i].f64_y[1]); + register __m256d c2 = _mm256_add_pd(left[i].f64_y[0], right[i].f64_y[0]); + register __m256d c3 = _mm256_add_pd(left[i].f64_y[1], right[i].f64_y[1]); + ans[i].f64_y[0] = c0; + ans[i].f64_y[1] = c1; + ans[i].f64_y[2] = c2; + ans[i].f64_y[3] = c3; + } +} + +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, add) +{ + for (size_t i = 0; i < count; i++) { + register __m512d c0 = _mm512_add_pd(left[i].f64_z[0], right[i].f64_z[0]); + register __m512d c1 = _mm512_add_pd(left[i].f64_z[1], right[i].f64_z[1]); + ans[i].f64_z[0] = c0; + ans[i].f64_z[1] = c1; } } DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, sub) { for (size_t i = 0; i < count; i++) { - register __m128 c0 = _mm_sub_ps(left[i].xmm[0], right[i].xmm[0]); - register __m128 c1 = _mm_sub_ps(left[i].xmm[1], right[i].xmm[1]); - register __m128 c2 = _mm_sub_ps(left[i].xmm[2], right[i].xmm[2]); - register __m128 c3 = _mm_sub_ps(left[i].xmm[3], right[i].xmm[3]); + register __m128 c0 = _mm_sub_ps(left[i].f32_x[0], right[i].f32_x[0]); + register __m128 c1 = _mm_sub_ps(left[i].f32_x[1], right[i].f32_x[1]); + register __m128 c2 = _mm_sub_ps(left[i].f32_x[2], right[i].f32_x[2]); + register __m128 c3 = _mm_sub_ps(left[i].f32_x[3], right[i].f32_x[3]); - ans[i].xmm[0] = c0; - ans[i].xmm[1] = c1; - ans[i].xmm[2] = c2; - ans[i].xmm[3] = c3; + ans[i].f32_x[0] = c0; + ans[i].f32_x[1] = c1; + ans[i].f32_x[2] = c2; + ans[i].f32_x[3] = c3; } } DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, sub) { for (size_t i = 0; i < count; i++) { - register __m256 c0 = _mm256_sub_ps(left[i].ymm[0], right[i].ymm[0]); - register __m256 c1 = _mm256_sub_ps(left[i].ymm[1], right[i].ymm[1]); - ans[i].ymm[0] = c0; - ans[i].ymm[1] = c1; + register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]); + register __m256 c1 = _mm256_sub_ps(left[i].f32_y[1], right[i].f32_y[1]); + ans[i].f32_y[0] = c0; + ans[i].f32_y[1] = c1; } } DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, sub) { for (size_t i = 0; i < count; i++) { - register __m512 c0 = _mm512_sub_ps(left[i].zmm[0], right[i].zmm[0]); - ans[i].zmm[0] = c0; + register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]); + ans[i].f32_z[0] = c0; + } +} + +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, sub) +{ + for (size_t i = 0; i < count; i++) { + register __m128d c0 = _mm_sub_pd(left[i].f64_x[0], right[i].f64_x[0]); + register __m128d c1 = _mm_sub_pd(left[i].f64_x[1], right[i].f64_x[1]); + register __m128d c2 = _mm_sub_pd(left[i].f64_x[2], right[i].f64_x[2]); + register __m128d c3 = _mm_sub_pd(left[i].f64_x[3], right[i].f64_x[3]); + register __m128d c4 = _mm_sub_pd(left[i].f64_x[4], right[i].f64_x[4]); + register __m128d c5 = _mm_sub_pd(left[i].f64_x[5], right[i].f64_x[5]); + register __m128d c6 = _mm_sub_pd(left[i].f64_x[6], right[i].f64_x[6]); + register __m128d c7 = _mm_sub_pd(left[i].f64_x[7], right[i].f64_x[7]); + + ans[i].f64_x[0] = c0; + ans[i].f64_x[1] = c1; + ans[i].f64_x[2] = c2; + ans[i].f64_x[3] = c3; + ans[i].f64_x[4] = c4; + ans[i].f64_x[5] = c5; + ans[i].f64_x[6] = c6; + ans[i].f64_x[7] = c7; + } +} + +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, sub) +{ + for (size_t i = 0; i < count; i++) { + register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]); + register __m256 c1 = _mm256_sub_ps(left[i].f32_y[1], right[i].f32_y[1]); + ans[i].f32_y[0] = c0; + ans[i].f32_y[1] = c1; + } +} + +DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, sub) +{ + for (size_t i = 0; i < count; i++) { + register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]); + ans[i].f32_z[0] = c0; } } @@ -99,15 +230,15 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul) { register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]); for (size_t i = 0; i < count; i++) { - register __m128 c0 = _mm_mul_ps(right[i].xmm[0], vec); - register __m128 c1 = _mm_mul_ps(right[i].xmm[1], vec); - register __m128 c2 = _mm_mul_ps(right[i].xmm[2], vec); - register __m128 c3 = _mm_mul_ps(right[i].xmm[3], vec); + register __m128 c0 = _mm_mul_ps(right[i].f32_x[0], vec); + register __m128 c1 = _mm_mul_ps(right[i].f32_x[1], vec); + register __m128 c2 = _mm_mul_ps(right[i].f32_x[2], vec); + register __m128 c3 = _mm_mul_ps(right[i].f32_x[3], vec); - ans[i].xmm[0] = c0; - ans[i].xmm[1] = c1; - ans[i].xmm[2] = c2; - ans[i].xmm[3] = c3; + ans[i].f32_x[0] = c0; + ans[i].f32_x[1] = c1; + ans[i].f32_x[2] = c2; + ans[i].f32_x[3] = c3; } } @@ -115,11 +246,11 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul) { register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data))); for (size_t i = 0; i < count; i++) { - register __m256 c0 = _mm256_mul_ps(right[i].ymm[0], vec); - register __m256 c1 = _mm256_mul_ps(right[i].ymm[1], vec); + register __m256 c0 = _mm256_mul_ps(right[i].f32_y[0], vec); + register __m256 c1 = _mm256_mul_ps(right[i].f32_y[1], vec); - ans[i].ymm[0] = c0; - ans[i].ymm[1] = c1; + ans[i].f32_y[0] = c0; + ans[i].f32_y[1] = c1; } } @@ -127,8 +258,60 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul) { register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]); for (size_t i = 0; i < count; i++) { - register __m512 c0 = _mm512_mul_ps(right[i].zmm[0], vec); + register __m512 c0 = _mm512_mul_ps(right[i].f32_z[0], vec); - ans[i].zmm[0] = c0; + ans[i].f32_z[0] = c0; + } +} + +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, scalar_mul) +{ + register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]); + for (size_t i = 0; i < count; i++) { + register __m128d c0 = _mm_mul_pd(right[i].f64_x[0], vec); + register __m128d c1 = _mm_mul_pd(right[i].f64_x[1], vec); + register __m128d c2 = _mm_mul_pd(right[i].f64_x[2], vec); + register __m128d c3 = _mm_mul_pd(right[i].f64_x[3], vec); + register __m128d c4 = _mm_mul_pd(right[i].f64_x[4], vec); + register __m128d c5 = _mm_mul_pd(right[i].f64_x[5], vec); + register __m128d c6 = _mm_mul_pd(right[i].f64_x[6], vec); + register __m128d c7 = _mm_mul_pd(right[i].f64_x[7], vec); + + ans[i].f64_x[0] = c0; + ans[i].f64_x[1] = c1; + ans[i].f64_x[2] = c2; + ans[i].f64_x[3] = c3; + ans[i].f64_x[4] = c4; + ans[i].f64_x[5] = c5; + ans[i].f64_x[6] = c6; + ans[i].f64_x[7] = c7; + } +} + +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, scalar_mul) +{ + register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data))); + for (size_t i = 0; i < count; i++) { + register __m256d c0 = _mm256_mul_pd(right[i].f64_y[0], vec); + register __m256d c1 = _mm256_mul_pd(right[i].f64_y[1], vec); + register __m256d c2 = _mm256_mul_pd(right[i].f64_y[2], vec); + register __m256d c3 = _mm256_mul_pd(right[i].f64_y[3], vec); + + ans[i].f64_y[0] = c0; + ans[i].f64_y[1] = c1; + ans[i].f64_y[2] = c2; + ans[i].f64_y[3] = c3; + } +} + +DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, scalar_mul) +{ + register __m512d vec = _mm512_broadcastsd_pd(_mm_load_pd(scalar)); + for (size_t i = 0; i < count; i++) { + register __m512d c0 = _mm512_mul_pd(right[i].f64_z[0], vec); + register __m512d c1 = _mm512_mul_pd(right[i].f64_z[1], vec); + + ans[i].f64_z[0] = c0; + ans[i].f64_z[1] = c1; } } diff --git a/StgSharp.Native/sn-src/k_panel.c b/StgSharp.Native/sn-src/k_panel.c index c18114c0..79c751fe 100644 --- a/StgSharp.Native/sn-src/k_panel.c +++ b/StgSharp.Native/sn-src/k_panel.c @@ -31,8 +31,8 @@ DECLARE_BUILD_PANEL(avx, float) const MAT_KERNEL(float) *src_bot = is_right_half ? k_rb : k_lb; /* Vector loads: each kernel column is a compact __m128 */ - top128 = src_top->xmm[kc_col]; - bot128 = src_bot->xmm[kc_col]; + top128 = src_top->f32_x[kc_col]; + bot128 = src_bot->f32_x[kc_col]; /* Combine into an AVX column: low 128 = top, high 128 = bottom */ col256 = _mm256_set_m128(bot128, top128); @@ -41,15 +41,6 @@ DECLARE_BUILD_PANEL(avx, float) } } -DECLARE_BUILD_PANEL(sse, float) -{ - /* Single kernel -> 4 columns, each is one __m128 column vector. */ - const MAT_KERNEL(float) *src = matrix + (row_index * col_length + col_index); - - for (int pc = 0; pc < 4; ++pc) { - PANEL_COL_VEC((*panel), pc, 0) = src->xmm[pc]; - } -} DECLARE_BUILD_PANEL(512, float) { @@ -71,10 +62,10 @@ DECLARE_BUILD_PANEL(512, float) const int blk_col = pc >> 2; /* which kernel column block (0..3) */ const int kc_col = pc & 3; /* column inside a 4x4 kernel */ - const __m128 r0 = k[blk_col][0]->xmm[kc_col]; - const __m128 r1 = k[blk_col][1]->xmm[kc_col]; - const __m128 r2 = k[blk_col][2]->xmm[kc_col]; - const __m128 r3 = k[blk_col][3]->xmm[kc_col]; + const __m128 r0 = k[blk_col][0]->f32_x[kc_col]; + const __m128 r1 = k[blk_col][1]->f32_x[kc_col]; + const __m128 r2 = k[blk_col][2]->f32_x[kc_col]; + const __m128 r3 = k[blk_col][3]->f32_x[kc_col]; const __m256 top = _mm256_set_m128(r1, r0); const __m256 bot = _mm256_set_m128(r3, r2); @@ -86,6 +77,43 @@ DECLARE_BUILD_PANEL(512, float) } } + +DECLARE_BUILD_PANEL(512, double) +{ + const int Q = 8; /* max(4, lanes) for double with ZMM -> 8 columns */ + + const int has_right = (col_index + 1) < col_length; + const int has_bottom = (row_index + 1) < row_length; + + const MAT_KERNEL(double) *const k_lt = matrix + (row_index * col_length + col_index); + const MAT_KERNEL(double) *const k_rt = + has_right ? (matrix + (row_index * col_length + (col_index + 1))) : + (const MAT_KERNEL(double) *)&SN_ZERO_KERNEL; + const MAT_KERNEL(double) *const k_lb = + has_bottom ? (matrix + ((row_index + 1) * col_length + col_index)) : + (const MAT_KERNEL(double) *)&SN_ZERO_KERNEL; + const MAT_KERNEL(double) *const k_rb = + (has_right && has_bottom) ? + (matrix + ((row_index + 1) * col_length + (col_index + 1))) : + (const MAT_KERNEL(double) *)&SN_ZERO_KERNEL; + + for (int pc = 0; pc < Q; ++pc) { + const int is_right_half = (pc >= 4); + const int kc_col = pc & 3; /* column index inside 4x4 kernel */ + + const MAT_KERNEL(double) *src_top = is_right_half ? k_rt : k_lt; + const MAT_KERNEL(double) *src_bot = is_right_half ? k_rb : k_lb; + + const __m256d top256 = src_top->f64_y[kc_col]; + const __m256d bot256 = src_bot->f64_y[kc_col]; + + __m512d col = _mm512_castpd256_pd512(top256); + col = _mm512_insertf64x4(col, bot256, 1); + + PANEL_COL_VEC((*panel), pc, 0) = _mm512_castpd_ps(col); + } +} + DECLARE_STORE_PANEL(avx, float) { const int Q = 8; /* fixed for AVX float panel */ @@ -124,8 +152,8 @@ DECLARE_STORE_PANEL(avx, float) bot128 = _mm256_extractf128_ps(col256, 1); /* high 128 */ /* Store back into kernels directly (out-of-bounds writes go to dummy) */ - k_rt->xmm[kc_col] = top128; - k_rb->xmm[kc_col] = bot128; + k_rt->f32_x[kc_col] = top128; + k_rb->f32_x[kc_col] = bot128; } for (; i < Q; i++) { const int kc_col = i - 4; /* column index inside 4x4 kernel */ @@ -137,18 +165,8 @@ DECLARE_STORE_PANEL(avx, float) bot128 = _mm256_extractf128_ps(col256, 1); /* high 128 */ /* Store back into kernels directly (out-of-bounds writes go to dummy) */ - k_lt->xmm[kc_col] = top128; - k_lb->xmm[kc_col] = bot128; - } -} - -DECLARE_STORE_PANEL(sse, float) -{ - MAT_KERNEL(float) *dst = matrix + (row_index * col_length + col_index); - - for (int pc = 0; pc < 4; ++pc) { - const __m128 col = PANEL_COL_VEC((*panel), pc, 0); - dst->xmm[pc] = col; + k_lt->f32_x[kc_col] = top128; + k_lb->f32_x[kc_col] = bot128; } } @@ -181,9 +199,99 @@ DECLARE_STORE_PANEL(512, float) const __m128 r2 = _mm256_castps256_ps128(bot); const __m128 r3 = _mm256_extractf128_ps(bot, 1); - k[blk_col][0]->xmm[kc_col] = r0; - k[blk_col][1]->xmm[kc_col] = r1; - k[blk_col][2]->xmm[kc_col] = r2; - k[blk_col][3]->xmm[kc_col] = r3; + k[blk_col][0]->f32_x[kc_col] = r0; + k[blk_col][1]->f32_x[kc_col] = r1; + k[blk_col][2]->f32_x[kc_col] = r2; + k[blk_col][3]->f32_x[kc_col] = r3; + } +} + +DECLARE_STORE_PANEL(sse, double) +{ + MAT_KERNEL(double) *dst = matrix + (row_index * col_length + col_index); + + for (int pc = 0; pc < 4; ++pc) { + const int base = pc * 2; + dst->f64_x[base] = _mm_castps_pd(PANEL_COL_VEC((*panel), pc, 0)); + dst->f64_x[base + 1] = _mm_castps_pd(PANEL_COL_VEC((*panel), pc, 1)); + } +} + +DECLARE_STORE_PANEL(avx, double) +{ + const int Q = 8; /* fixed for AVX double panel */ + + MAT_KERNEL(double) zero; + + const int has_right = (col_index + 1) < col_length; + const int has_bottom = (row_index + 1) < row_length; + + MAT_KERNEL(double) *const k_lt = (col_index < col_length && row_index < row_length) ? + (matrix + (row_index * col_length + col_index)) : + &zero; + MAT_KERNEL(double) *const k_rt = + has_right && (row_index < row_length) ? + (matrix + (row_index * col_length + (col_index + 1))) : + &zero; + MAT_KERNEL(double) *const k_lb = + has_bottom && (col_index < col_length) ? + (matrix + ((row_index + 1) * col_length + col_index)) : + &zero; + MAT_KERNEL(double) *const k_rb = + (has_right && has_bottom) ? + (matrix + ((row_index + 1) * col_length + (col_index + 1))) : + &zero; + + for (int i = 0; i < Q; ++i) { + const int kc_col = (i < 4) ? i : (i - 4); + const __m256 top_chunk = PANEL_COL_VEC((*panel), i, 0); + const __m256 bot_chunk = PANEL_COL_VEC((*panel), i, 1); + + MAT_KERNEL(double) *const top_dst = (i < 4) ? k_rt : k_lt; + MAT_KERNEL(double) *const bot_dst = (i < 4) ? k_rb : k_lb; + + top_dst->f64_y[kc_col] = _mm256_castps_pd(top_chunk); + bot_dst->f64_y[kc_col] = _mm256_castps_pd(bot_chunk); + } +} + +DECLARE_STORE_PANEL(512, double) +{ + const int Q = 8; /* max(4, lanes) -> 8 columns, one ZMM per column */ + + MAT_KERNEL(double) zero; + + const int has_right = (col_index + 1) < col_length; + const int has_bottom = (row_index + 1) < row_length; + + MAT_KERNEL(double) *const k_lt = (col_index < col_length && row_index < row_length) ? + (matrix + (row_index * col_length + col_index)) : + &zero; + MAT_KERNEL(double) *const k_rt = + has_right && (row_index < row_length) ? + (matrix + (row_index * col_length + (col_index + 1))) : + &zero; + MAT_KERNEL(double) *const k_lb = + has_bottom && (col_index < col_length) ? + (matrix + ((row_index + 1) * col_length + col_index)) : + &zero; + MAT_KERNEL(double) *const k_rb = + (has_right && has_bottom) ? + (matrix + ((row_index + 1) * col_length + (col_index + 1))) : + &zero; + + for (int i = 0; i < Q; ++i) { + const int kc_col = (i < 4) ? i : (i - 4); + const __m512 col = PANEL_COL_VEC((*panel), i, 0); + const __m512d col_pd = _mm512_castps_pd(col); + + const __m256d top256 = _mm512_castpd512_pd256(col_pd); + const __m256d bot256 = _mm512_extractf64x4_pd(col_pd, 1); + + MAT_KERNEL(double) *const top_dst = (i < 4) ? k_rt : k_lt; + MAT_KERNEL(double) *const bot_dst = (i < 4) ? k_rb : k_lb; + + top_dst->f64_y[kc_col] = top256; + bot_dst->f64_y[kc_col] = bot256; } } diff --git a/StgSharp.Native/sn-src/k_pivot.c b/StgSharp.Native/sn-src/k_pivot.c index c2b51c7b..cc6a1733 100644 --- a/StgSharp.Native/sn-src/k_pivot.c +++ b/StgSharp.Native/sn-src/k_pivot.c @@ -2,8 +2,8 @@ // Hybrid implementation: SIMD for Abs, Scalar for Max // Assumes Column-Major layout for both MAT_KERNEL content and Kernel sequence -static void povit_float(MAT_KERNEL(float) const *source, size_t col_begin, - size_t col_length, size_t *restrict ans) +INTERNAL void SN_DECL pivot_float(MAT_KERNEL(float) const *source, size_t col_begin, + size_t col_length, size_t *restrict ans) { float max_v[4] = { -1.0f, -1.0f, -1.0f, -1.0f }; diff --git a/StgSharp.Native/sn-src/load_intrinsic.c b/StgSharp.Native/sn-src/load_intrinsic.c index 22b93f11..668a8c6f 100644 --- a/StgSharp.Native/sn-src/load_intrinsic.c +++ b/StgSharp.Native/sn-src/load_intrinsic.c @@ -65,17 +65,30 @@ void load_intrinsic_sse(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->f32_store_panel = STORE_PANEL(sse, float); - context->f32_clear_panel = PNL_PROC(float, sse, clear); - context->f32_build_panel = BUILD_PANEL(sse, float); - context->f32_buffer_add = BUF_PROC(float, sse, add); - context->f32_panel_fma = PNL_PROC(float, sse, fma); - context->f32_buffer_fill = BUF_PROC(float, sse, fill); - context->variant = BUF_PROC(float, sse, scalar_mul); - context->f32_buffer_sub = BUF_PROC(float, sse, sub); - context->f32_buffer_transpose = KER_PROC(float, sse, transpose); - context->f32_buffer_scalar_mul = BUF_PROC(float, sse, scalar_mul); - context->f32_normalize_3 = f32_normalize; + + context->mat[F32].buffer_add = BUF_PROC(float, sse, add); + context->mat[F32].buffer_fill = BUF_PROC(float, sse, fill); + context->mat[F32].buffer_scalar_mul = BUF_PROC(float, sse, scalar_mul); + context->mat[F32].buffer_sub = BUF_PROC(float, sse, sub); + context->mat[F32].buffer_transpose = KER_PROC(float, sse, transpose); + context->mat[F32].build_panel = NULL; + context->mat[F32].clear_panel = PNL_PROC(float, sse, clear); + context->mat[F32].panel_fma = PNL_PROC(float, sse, fma); + context->mat[F32].pivot = pivot_float; + context->mat[F32].store_panel = NULL; + + context->mat[F64].buffer_add = BUF_PROC(double, sse, add); + context->mat[F64].buffer_fill = BUF_PROC(double, sse, fill); + context->mat[F64].buffer_scalar_mul = BUF_PROC(double, sse, scalar_mul); + context->mat[F64].buffer_sub = BUF_PROC(double, sse, sub); + context->mat[F64].buffer_transpose = NULL; + context->mat[F64].build_panel = NULL; + context->mat[F64].clear_panel = PNL_PROC(double, sse, clear); + context->mat[F64].panel_fma = NULL; + context->mat[F64].pivot = NULL; + context->mat[F64].store_panel = NULL; + + context->vec_f32_normalize_3 = f32_normalize; } void load_intrinsic_avx(sn_intrinsic *context) @@ -83,17 +96,30 @@ void load_intrinsic_avx(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->f32_store_panel = STORE_PANEL(avx, float); - context->f32_clear_panel = PNL_PROC(float, avx, clear); - context->f32_build_panel = BUILD_PANEL(avx, float); - context->f32_buffer_add = BUF_PROC(float, avx, add); - context->f32_panel_fma = PNL_PROC(float, avx, fma); - context->f32_buffer_fill = BUF_PROC(float, avx, fill); - context->variant = BUF_PROC(float, avx, scalar_mul); - context->f32_buffer_sub = BUF_PROC(float, avx, sub); - context->f32_buffer_transpose = KER_PROC(float, avx, transpose); - context->f32_buffer_scalar_mul = BUF_PROC(float, avx, scalar_mul); - context->f32_normalize_3 = f32_normalize; + + context->mat[F32].buffer_add = BUF_PROC(float, avx, add); + context->mat[F32].buffer_fill = BUF_PROC(float, avx, fill); + context->mat[F32].buffer_scalar_mul = BUF_PROC(float, avx, scalar_mul); + context->mat[F32].buffer_sub = BUF_PROC(float, avx, sub); + context->mat[F32].buffer_transpose = KER_PROC(float, avx, transpose); + context->mat[F32].build_panel = BUILD_PANEL(avx, float); + context->mat[F32].clear_panel = PNL_PROC(float, avx, clear); + context->mat[F32].panel_fma = PNL_PROC(float, avx, fma); + context->mat[F32].pivot = pivot_float; + context->mat[F32].store_panel = STORE_PANEL(avx, float); + + context->mat[F64].buffer_add = BUF_PROC(double, avx, add); + context->mat[F64].buffer_fill = BUF_PROC(double, avx, fill); + context->mat[F64].buffer_scalar_mul = BUF_PROC(double, avx, scalar_mul); + context->mat[F64].buffer_sub = BUF_PROC(double, avx, sub); + context->mat[F64].buffer_transpose = NULL; + context->mat[F64].build_panel = NULL; + context->mat[F64].clear_panel = PNL_PROC(double, avx, clear); + context->mat[F64].panel_fma = NULL; + context->mat[F64].pivot = NULL; + context->mat[F64].store_panel = NULL; + + context->vec_f32_normalize_3 = f32_normalize; } void load_intrinsic_512(sn_intrinsic *context) @@ -101,15 +127,28 @@ void load_intrinsic_512(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->f32_store_panel = STORE_PANEL(512, float); - context->f32_clear_panel = PNL_PROC(float, 512, clear); - context->f32_build_panel = BUILD_PANEL(512, float); - context->f32_buffer_add = BUF_PROC(float, 512, add); - context->f32_panel_fma = PNL_PROC(float, 512, fma); - context->f32_buffer_fill = BUF_PROC(float, 512, fill); - context->variant = BUF_PROC(float, 512, scalar_mul); - context->f32_buffer_sub = BUF_PROC(float, 512, sub); - context->f32_buffer_transpose = KER_PROC(float, 512, transpose); - context->f32_buffer_scalar_mul = BUF_PROC(float, 512, scalar_mul); - context->f32_normalize_3 = f32_normalize; + + context->mat[F32].buffer_add = BUF_PROC(float, 512, add); + context->mat[F32].buffer_fill = BUF_PROC(float, 512, fill); + context->mat[F32].buffer_scalar_mul = BUF_PROC(float, 512, scalar_mul); + context->mat[F32].buffer_sub = BUF_PROC(float, 512, sub); + context->mat[F32].buffer_transpose = KER_PROC(float, 512, transpose); + context->mat[F32].build_panel = BUILD_PANEL(512, float); + context->mat[F32].clear_panel = PNL_PROC(float, 512, clear); + context->mat[F32].panel_fma = PNL_PROC(float, 512, fma); + context->mat[F32].pivot = pivot_float; + context->mat[F32].store_panel = STORE_PANEL(512, float); + + context->mat[F64].buffer_add = BUF_PROC(double, 512, add); + context->mat[F64].buffer_fill = BUF_PROC(double, 512, fill); + context->mat[F64].buffer_scalar_mul = BUF_PROC(double, 512, scalar_mul); + context->mat[F64].buffer_sub = BUF_PROC(double, 512, sub); + context->mat[F64].buffer_transpose = NULL; + context->mat[F64].build_panel = BUILD_PANEL(512, double); + context->mat[F64].clear_panel = PNL_PROC(double, 512, clear); + context->mat[F64].panel_fma = NULL; + context->mat[F64].pivot = NULL; + context->mat[F64].store_panel = STORE_PANEL(512, double); + + context->vec_f32_normalize_3 = f32_normalize; } diff --git a/StgSharp.Native/sn-src/vector.c b/StgSharp.Native/sn-src/vector.c index 3cacaaca..60bae8b3 100644 --- a/StgSharp.Native/sn-src/vector.c +++ b/StgSharp.Native/sn-src/vector.c @@ -3,7 +3,7 @@ INTERNAL void SN_DECL f32_normalize(VEC(float) *restrict source, VEC(float) *restrict target) { - register __m128 s = _mm_load_ps(&source->xmm); + register __m128 s = _mm_load_ps(&source->f32_x); register __m128 a_length_sq = _mm_mul_ps(s, s); a_length_sq = _mm_add_ps(a_length_sq, _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); @@ -13,13 +13,13 @@ INTERNAL void SN_DECL f32_normalize(VEC(float) *restrict source, VEC(float) *res __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); s = _mm_mul_ps(s, a_inv_length); - __m128 dot_product = _mm_mul_ps(target->xmm[0], s); + __m128 dot_product = _mm_mul_ps(target->f32_x[0], s); dot_product = _mm_add_ps(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1))); dot_product = _mm_add_ss(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2))); - __m128 b_orthogonal = _mm_sub_ps(target->xmm[0], _mm_mul_ps(s, dot_product)); + __m128 b_orthogonal = _mm_sub_ps(target->f32_x[0], _mm_mul_ps(s, dot_product)); __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); b_length_sq = _mm_add_ps(b_length_sq, @@ -28,5 +28,5 @@ INTERNAL void SN_DECL f32_normalize(VEC(float) *restrict source, VEC(float) *res _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); - target->xmm[0] = _mm_mul_ps(b_orthogonal, b_inv_length); + target->f32_x[0] = _mm_mul_ps(b_orthogonal, b_inv_length); } diff --git a/StgSharp.Native/sn-src/vector_dot.c b/StgSharp.Native/sn-src/vector_dot.c index 7b18cf27..6b7ca295 100644 --- a/StgSharp.Native/sn-src/vector_dot.c +++ b/StgSharp.Native/sn-src/vector_dot.c @@ -6,12 +6,12 @@ static const int avxdot_indices[] = { 0, 4, 1, 5, 2, 3, 6, 7 }; INTERNAL void FORCEINLINE SN_DECL dot_41_sse(MAT_KERNEL(float) const *transpose, __m128 const *vector, __m128 *ans) { - *ans = _mm_dp_ps(transpose->xmm[0], *vector, 0B11110001); - *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[1], *vector, 0B11110001), + *ans = _mm_dp_ps(transpose->f32_x[0], *vector, 0B11110001); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], *vector, 0B11110001), SSE_INSERT_SIMPLE(1, 1)); - *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[2], *vector, 0B11110001), + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], *vector, 0B11110001), SSE_INSERT_SIMPLE(1, 3)); - *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[3], *vector, 0B11110001), + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], *vector, 0B11110001), SSE_INSERT_SIMPLE(1, 4)); } @@ -19,8 +19,8 @@ INTERNAL void SN_DECL dot_41_avx(MAT_KERNEL(float) const *transpose, __m128 cons __m128 *ans) { __m256 _double = _mm256_set_m128(vector[0], vector[0]); - __m256 tmp = _mm256_dp_ps(transpose->ymm[0], _double, 0B11110001); - tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->ymm[0], _double, 0B11110010), + __m256 tmp = _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110001); + tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110010), 0B00100010); *ans = _mm256_castps256_ps128( _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); @@ -29,34 +29,34 @@ INTERNAL void SN_DECL dot_41_avx(MAT_KERNEL(float) const *transpose, __m128 cons INTERNAL void SN_DECL dot_42_sse(MAT_KERNEL(float) const *transpose, __m128 const *vector, __m128 *ans) { - ans[0] = _mm_dp_ps(transpose->xmm[0], vector[0], 0B11110001); - ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[1], vector[0], 0B11110001), + ans[0] = _mm_dp_ps(transpose->f32_x[0], vector[0], 0B11110001); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[0], 0B11110001), SSE_INSERT_SIMPLE(1, 2)); - ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[2], vector[0], 0B11110001), + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[0], 0B11110001), SSE_INSERT_SIMPLE(1, 3)); - ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[3], vector[0], 0B11110001), + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[0], 0B11110001), SSE_INSERT_SIMPLE(1, 4)); - ans[1] = _mm_dp_ps(transpose->xmm[0], vector[1], 0B11110001); - ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[1], vector[1], 0B11110001), + ans[1] = _mm_dp_ps(transpose->f32_x[0], vector[1], 0B11110001); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[1], 0B11110001), SSE_INSERT_SIMPLE(1, 2)); - ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[2], vector[1], 0B11110001), + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[1], 0B11110001), SSE_INSERT_SIMPLE(1, 3)); - ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->xmm[3], vector[1], 0B11110001), + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[1], 0B11110001), SSE_INSERT_SIMPLE(1, 4)); } INTERNAL void SN_DECL dot_42_avx(MAT_KERNEL(float) const *transpose, __m128 const *vector, __m128 *ans) { - __m256 temp = transpose->ymm[0]; + __m256 temp = transpose->f32_y[0]; __m256 vector_stream = _mm256_set_m128(vector[1], vector[0]); __m256 result = _mm256_dp_ps(temp, vector_stream, 0B11110001); temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110010), 0B00100010); - temp = transpose->ymm[1]; + temp = transpose->f32_y[1]; result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110100), 0B01000100); temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11111000), 0B10001000); diff --git a/StgSharp.Tools/c.txt b/StgSharp.Tools/c.txt new file mode 100644 index 00000000..49e6ab62 --- /dev/null +++ b/StgSharp.Tools/c.txt @@ -0,0 +1,658 @@ + 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; \ No newline at end of file diff --git a/StgSharp.Tools/cs.txt b/StgSharp.Tools/cs.txt new file mode 100644 index 00000000..91408e8c --- /dev/null +++ b/StgSharp.Tools/cs.txt @@ -0,0 +1,657 @@ + 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; \ No newline at end of file diff --git a/StgSharp.Tools/gl_diff.cs b/StgSharp.Tools/gl_diff.cs new file mode 100644 index 00000000..3ab711b8 --- /dev/null +++ b/StgSharp.Tools/gl_diff.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; + +partial class Program +{ + private static readonly string csharpFieldsFile = @"d:\platform-dev\StgSharp.Tools\cs.txt"; + private static readonly string cStructFieldsFile = @"d:\platform-dev\StgSharp.Tools\c.txt"; + + static void Main() + { + var csharpFields = ParseFieldNames(File.ReadAllText(csharpFieldsFile), stripGlPrefix: true); + var cStructFields = ParseFieldNames(File.ReadAllText(cStructFieldsFile), stripGlPrefix: false); + + var missingInCStruct = new HashSet(csharpFields).Except(cStructFields).ToList(); + var missingInCSharp = new HashSet(cStructFields).Except(csharpFields).ToList(); + + + Console.WriteLine("Fields only in C# file:"); + missingInCStruct.ForEach(f => Console.WriteLine($" {f}")); + + Console.WriteLine("Fields only in C struct file:"); + missingInCSharp.ForEach(f => Console.WriteLine($" {f}")); + } + + private static HashSet ParseFieldNames(string content, bool stripGlPrefix) + { + content = StripComments(content); + + var matches = stripGlPrefix + ? CSharpFieldRegex().Matches(content) + : CStructFieldRegex().Matches(content); + + var fields = new HashSet(); + foreach (Match match in matches) + { + var nameGroup = match.Groups["name"]; + if (nameGroup.Success) + { + fields.Add(nameGroup.Value); + } + else if (match.Groups.Count > 1) + { + fields.Add(match.Groups[1].Value); + } + } + return fields; + } + + private static string StripComments(string text) + { + // Remove // comments + text = LineCommentRegex().Replace(text, string.Empty); + // Remove /* */ comments + text = BlockCommentRegex().Replace(text, string.Empty); + return text; + } + + // C#: internal delegate*<...> glName; capture Name without the gl prefix + [GeneratedRegex(@"^\s*internal\s+(?:unsafe\s+)?delegate\*<[^>]+?>\s+gl(?[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)] + private static partial Regex CSharpFieldRegex(); + + // C: PFNGLXYZPROC Name; capture the Name + [GeneratedRegex(@"^\s*PFNGL[A-Z0-9_]+PROC\s+(?[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)] + private static partial Regex CStructFieldRegex(); + + [GeneratedRegex("//.*", RegexOptions.None)] + private static partial Regex LineCommentRegex(); + + [GeneratedRegex("/\\*.*?\\*/", RegexOptions.Singleline)] + private static partial Regex BlockCommentRegex(); +} \ No newline at end of file diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs index f21e8f8b..9778822f 100644 --- a/StgSharpDebug/Program.cs +++ b/StgSharpDebug/Program.cs @@ -39,7 +39,9 @@ namespace StgSharp private static string testExpPath = @"D:\Programmer\stepcode\data\ap203\ap203.exp"; - internal static unsafe void Main(string[] args) + internal static unsafe void Main( + string[] args + ) { try { @@ -48,12 +50,8 @@ namespace StgSharp .UseModule() .InitializeModule(); - // TestRender(); - // TestHlsf(); - - - // HlsfStressTest.Run(); - /**/ + TestRender(); + /* HybridLayerSegregatedFitAllocator hlsf; unchecked { hlsf = new((nuint)(64 * (ulong)10000 * 10000)); @@ -79,7 +77,7 @@ namespace StgSharp Console.WriteLine($"{i}"); GC.Collect(); } - /**/ + /* MatrixCompute.Mul(n, m, p); for (int i = 0; i < 20; i++) { diff --git a/StgSharpDebug/RenderStream/Partical.cs b/StgSharpDebug/RenderStream/Partical.cs index 50d82edc..11125e78 100644 --- a/StgSharpDebug/RenderStream/Partical.cs +++ b/StgSharpDebug/RenderStream/Partical.cs @@ -1,4 +1,4 @@ -//----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="Partical" // Project: StgSharp @@ -75,7 +75,9 @@ namespace StgSharp public TextureProvider ButtonTextureProvider { get; private set; } // render a controlling item - public void ButtonMain(IEnumerable items) + public void ButtonMain( + IEnumerable items + ) { // Console.WriteLine("Render Button Itself"); @@ -106,7 +108,7 @@ namespace StgSharp temp++; // GL.ClearError(); - GL.Viewport(0, 0, (uint)Width, (uint)Height); + GL.Viewport(0, 0, Width, Height); // Console.Clear(); buffer.UpdateAllParticles(); @@ -117,12 +119,13 @@ namespace StgSharp vao.Bind(0); //GL.Assert(true); t.Bind2D(0); //GL.Assert(false); - GL.Viewport(0, 0, (uint)Width, (uint)Height); + GL.Viewport(0, 0, Width, Height); /**/ - GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, (uint)Width, - (uint)Height, ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, null); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + Width, Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, null); /**/ // GL.Assert(false); @@ -162,8 +165,8 @@ namespace StgSharp // 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, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, i.PixelBuffer); /* for (int num = 0; num < i.PixelBuffer.Length; num+=10000) { @@ -189,12 +192,19 @@ namespace StgSharp GL.Assert(false); } - public void RenderButton(ButtonStatus status, float statusBegin, in TextureProvider provider) + public void RenderButton( + ButtonStatus status, + float statusBegin, + in TextureProvider provider + ) { provider.UpdateFromImage(i); } - internal static Vec3 DefaultRotation(TimeSpanProvider provider, out float rotation) + internal static Vec3 DefaultRotation( + TimeSpanProvider provider, + out float rotation + ) { rotation = 1.0f / 60; float angle = (float)provider.CurrentSecond * 2; @@ -261,7 +271,8 @@ namespace StgSharp ebo = CreateElementBuffer(1); vbo.Bind(0); - Rectangle rec = new Rectangle(0.05f, 0.05f, 0.05f, -0.05f, -0.05f, -0.05f, -0.05f, 0.05f); + 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); @@ -271,7 +282,8 @@ namespace StgSharp 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)); + vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), + 3 * sizeof(float)); GL.VertexAttributeDivisor(1, 1); GL.VertexAttributeDivisor(2, 1); @@ -310,13 +322,15 @@ namespace StgSharp // GL.Assert(true); t = CreateTexture(1); t.Bind2D(0); - GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, (uint)Width, - (uint)Height, ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, null!); + 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); // GL.Assert(true); - GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), Texture2DTarget.Texture2D, t[0], 0); + GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), + Texture2DTarget.Texture2D, t[0], 0); GL.SetRenderBufferStorage(RenderBufferInternalFormat.Depth24_Stencil8, this.Size); GL.CombineFrameBufferRenderBuffer(FrameBufferAttachment.DepthAndStencil, rbo[0]); @@ -367,8 +381,10 @@ namespace StgSharp // GL.Assert(true); autoT = CreateAutoTexture(4); - autoT.DefaultTextureProperty = new TextureProperty(TextureFilter.Nearest, TextureFilter.Nearest, - TextureWrap.Repeat, TextureWrap.Repeat); + autoT.DefaultTextureProperty = new TextureProperty(TextureFilter.Nearest, + TextureFilter.Nearest, + TextureWrap.Repeat, + TextureWrap.Repeat); f_t = CreateTexture(1); f_t.Bind2D(0);