From 65041ff8bcea7e6ebf1af7d12b55f6572b3de607 Mon Sep 17 00:00:00 2001 From: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com> Date: Tue, 25 Aug 2026 17:33:45 +0800 Subject: [PATCH] make some changes to opengl api gen, discussing on rewrite of all opengl binding, making it neat and structral --- .../HighPerformance/Memory/BufferStack.cs | 45 + .../Memory/ConcurrentBufferStack.cs | 44 + .../Memory/SlabAllocator.Chunked.cs | 23 +- .../Memory/SlabAllocator.ChunkedConcurrent.cs | 22 +- .../SlabAllocator.SequencialConcurrent.cs | 24 +- .../OpenGL/Api/OpenGLFunction.Buffer.cs | 165 + .../OpenGL/Api/OpenGLFunction.Context.cs | 76 + .../OpenGL/Api/OpenGLFunction.Diagnostics.cs | 72 + .../OpenGL/Api/OpenGLFunction.Drawing.cs | 105 + .../OpenGL/Api/OpenGLFunction.Framebuffer.cs | 122 + .../OpenGL/Api/OpenGLFunction.Shader.cs | 131 + .../OpenGL/Api/OpenGLFunction.Texture.cs | 149 + .../OpenGLFunction.TextureUnits.cs} | 6 +- .../OpenGL/Api/OpenGLFunction.Uniform.cs | 29 + .../OpenGL/Api/OpenGLFunction.VertexArray.cs | 77 + .../OpenGL/Generated/GlCommandHistory.g.cs | 1027 +++++ .../Generated/OpenGLFunction.Raw.v3_3.g.cs | 2187 ++++++++++ .../Generated/OpenGLFunction.Raw.v4_0.g.cs | 238 ++ .../Generated/OpenGLFunction.Raw.v4_1.g.cs | 286 ++ .../Generated/OpenGLFunction.Raw.v4_2.g.cs | 93 + .../Generated/OpenGLFunction.Raw.v4_3.g.cs | 379 ++ .../Generated/OpenGLFunction.Raw.v4_4.g.cs | 111 + .../Generated/OpenGLFunction.Raw.v4_5.g.cs | 822 ++++ .../Generated/OpenGLFunction.Raw.v4_6.g.cs | 51 + .../OpenGLFunction.Uniform.v3_3.g.cs | 261 ++ .../OpenGLFunction.Uniform.v4_0.g.cs | 87 + .../OpenGLFunction.Uniform.v4_1.g.cs | 334 ++ .../OpenglContext.g.cs} | 289 +- .../OpenGL/ShaderEdit/Uniform.cs | 89 +- src/StgSharp.Graphics/OpenGL/glFunction.cs | 794 ---- .../OpenGL/glFunction.v3_3.cs | 3774 ----------------- .../OpenGL/glFunction.v4_0.cs | 524 --- .../OpenGL/glFunction.v4_1.cs | 1085 ----- .../OpenGL/glFunction.v4_2.cs | 170 - .../OpenGL/glFunction.v4_3.cs | 564 --- .../OpenGL/glFunction.v4_4.cs | 159 - .../OpenGL/glFunction.v4_5.cs | 1335 ------ .../OpenGL/glFunction.v4_6.cs | 82 - src/StgSharp.Graphics/glfw.cs | 4 +- .../CodeGen/CsTypeMapper.cs | 70 +- test/StgSharp.GenerateGL/CodeGen/Generator.cs | 230 +- .../CodeGen/GlXmlParser.cs | 3 +- .../CodeGen/ManagedNameResolver.cs | 140 + .../CodeGen/ManagedParameterPlanner.cs | 138 + test/StgSharp.GenerateGL/CodeGen/Models.cs | 3 +- .../CodeGen/UniformOverloadEmitter.cs | 219 + .../Docs/ArchitectureAssessment.md | 25 + .../Docs/SourceGenerator.md | 40 +- test/StgSharp.GenerateGL/GenerateGL.csproj | 2 + .../Generated/GlCommandHistory.g.cs | 1027 +++++ .../Generated/OpenGLFunction.Raw.v3_3.g.cs | 2187 ++++++++++ .../Generated/OpenGLFunction.Raw.v4_0.g.cs | 238 ++ .../Generated/OpenGLFunction.Raw.v4_1.g.cs | 286 ++ .../Generated/OpenGLFunction.Raw.v4_2.g.cs | 93 + .../Generated/OpenGLFunction.Raw.v4_3.g.cs | 379 ++ .../Generated/OpenGLFunction.Raw.v4_4.g.cs | 111 + .../Generated/OpenGLFunction.Raw.v4_5.g.cs | 822 ++++ .../Generated/OpenGLFunction.Raw.v4_6.g.cs | 51 + .../OpenGLFunction.Uniform.v3_3.g.cs | 261 ++ .../OpenGLFunction.Uniform.v4_0.g.cs | 87 + .../OpenGLFunction.Uniform.v4_1.g.cs | 334 ++ .../Generated/OpenglContext.g.cs | 670 +++ test/StgSharp.GenerateGL/Program.cs | 4 +- 63 files changed, 14404 insertions(+), 8851 deletions(-) create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Diagnostics.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs rename src/StgSharp.Graphics/OpenGL/{glFunction.SourceManager.cs => Api/OpenGLFunction.TextureUnits.cs} (97%) create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v3_3.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_0.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_1.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_2.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_3.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_4.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_5.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_6.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs rename src/StgSharp.Graphics/OpenGL/{glContext.cs => Generated/OpenglContext.g.cs} (85%) delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v3_3.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_0.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_1.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_2.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_3.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_4.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_5.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glFunction.v4_6.cs create mode 100644 test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs create mode 100644 test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs create mode 100644 test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs create mode 100644 test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs create mode 100644 test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs diff --git a/src/StgSharp.Common/HighPerformance/Memory/BufferStack.cs b/src/StgSharp.Common/HighPerformance/Memory/BufferStack.cs index a686d04b..195c20d1 100644 --- a/src/StgSharp.Common/HighPerformance/Memory/BufferStack.cs +++ b/src/StgSharp.Common/HighPerformance/Memory/BufferStack.cs @@ -6,6 +6,7 @@ // ----------------------------------------------------------------------------- using System; +using System.Buffers; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -92,6 +93,50 @@ namespace StgSharp.HighPerformance.Memory return true; } + /// + /// Fills the stack in place via a caller-supplied callback, mirroring + /// CapacityFixedStack<T>.FillRange. + /// + /// + /// Preferred over building a temporary span and handing it to + /// : + /// + /// The caller no longer needs a scratch buffer at all — the + /// callback writes straight into this stack's native storage, so there + /// is no stackalloc to size and no copy afterwards. + /// Span<T> does not implicitly convert to + /// ReadOnlySpan<T> in a way that participates in generic + /// type inference before C# 14, so Create(span) fails with + /// CS0411 on older compilers. Passing the element type through the + /// enclosing instance sidesteps inference entirely. + /// + /// + internal unsafe void FillRange( + SpanAction filling, + nuint buffer + ) + { + if (filling is null) { + return; + } + + Header* header = (Header*)_buffer; + T* dataStart = (T*)(_buffer + sizeof(Header)); + + // Hand out only the unused tail, matching CapacityFixedStack: + // filling is an append, not a rewrite of live entries. + int start = (int)header->Top; + int room = (int)header->Capacity - start; + if (room <= 0) { + return; + } + + filling(new Span(dataStart + start, room), buffer); + + header->Top = header->Capacity; + _count = header->Capacity; + } + // Internal method for efficient bulk initialization [MethodImpl(MethodImplOptions.AggressiveInlining)] internal unsafe void InitializeFromSpan( diff --git a/src/StgSharp.Common/HighPerformance/Memory/ConcurrentBufferStack.cs b/src/StgSharp.Common/HighPerformance/Memory/ConcurrentBufferStack.cs index 411003c1..61959a5c 100644 --- a/src/StgSharp.Common/HighPerformance/Memory/ConcurrentBufferStack.cs +++ b/src/StgSharp.Common/HighPerformance/Memory/ConcurrentBufferStack.cs @@ -8,6 +8,7 @@ using StgSharp.Threading; using System; +using System.Buffers; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -253,6 +254,49 @@ namespace StgSharp.HighPerformance.Memory } } + /// + /// Fills the stack in place via a caller-supplied callback, mirroring + /// CapacityFixedStack<T>.FillRange. + /// + /// + /// Intended for construction only, and therefore takes no lock — the + /// instance is not yet published to other threads at that point. Do not + /// call it on a stack that is already in concurrent use. + /// + /// Preferred over building a temporary span and handing it to + /// + /// for the same two reasons as the non-concurrent variant: the callback + /// writes straight into native storage (no scratch buffer, no copy), + /// and passing the element type through the enclosing instance avoids + /// the Span-to-ReadOnlySpan inference gap that yields + /// CS0411 before C# 14. + /// + /// + internal unsafe void FillRange( + SpanAction filling, + nuint buffer + ) + { + if (filling is null) { + return; + } + + Header* header = (Header*)_buffer; + T* dataStart = (T*)(_buffer + sizeof(Header)); + + // Append into the unused tail only, matching CapacityFixedStack. + int start = header->Top; + int room = header->Capacity - start; + if (room <= 0) { + return; + } + + filling(new Span(dataStart + start, room), buffer); + + header->Top = header->Capacity; + Volatile.Write(ref _count, header->Capacity); + } + // Internal method for efficient bulk initialization [MethodImpl(MethodImplOptions.AggressiveInlining)] internal unsafe void InitializeFromSpan( diff --git a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.Chunked.cs b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.Chunked.cs index 1017ca8d..85cc6902 100644 --- a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.Chunked.cs +++ b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.Chunked.cs @@ -40,15 +40,28 @@ namespace StgSharp.HighPerformance.Memory > 64 => 64, _ => (int)count }; - Span span = stackalloc nuint[initCount]; - for (int i = 0; i < initCount; i++) { - span[i] = _currentBuffer + ((nuint)(i * _elementSize)); - } _buffers = new(4); _buffers.Push(_currentBuffer); - _recycle = BufferStackBuilder.Create(span); + + // Fill through a callback rather than building a scratch span and + // passing it to BufferStackBuilder.Create: no stackalloc, no copy, + // and no reliance on Span-to-ReadOnlySpan inference (CS0411 before + // C# 14). Same shape as FixedSlabAllocator. + int elementSize = _elementSize; + _recycle = new(initCount); + _recycle.FillRange(init, _currentBuffer); _currentCapacity = count; _currentIndex = (nuint)initCount; + + void init( + Span arr, + nuint buffer + ) + { + for (int i = 0; i < arr.Length; i++) { + arr[i] = buffer + ((nuint)(i * elementSize)); + } + } } public override nuint Allocate() diff --git a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.ChunkedConcurrent.cs b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.ChunkedConcurrent.cs index 8762698a..5c0b6f79 100644 --- a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.ChunkedConcurrent.cs +++ b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.ChunkedConcurrent.cs @@ -44,14 +44,26 @@ namespace StgSharp.HighPerformance.Memory > 64 => 64, _ => (int)count }; - Span span = stackalloc nuint[initCount]; - for (int i = 0; i < initCount; i++) { - span[i] = _currentBuffer + (nuint)(i * _elementSize); - } _buffers = new(4); - _recycle = BufferStackBuilder.CreateConcurrent(span); + + // Callback fill instead of scratch span + CreateConcurrent: avoids + // the stackalloc and the copy, and sidesteps the CS0411 inference + // gap. Safe without locking — not yet published to other threads. + int elementSize = _elementSize; + _recycle = new(initCount); + _recycle.FillRange(init, _currentBuffer); _currentCapacity = count; _currentIndex = (nuint)initCount; + + void init( + Span arr, + nuint buffer + ) + { + for (int i = 0; i < arr.Length; i++) { + arr[i] = buffer + (nuint)(i * elementSize); + } + } } public override nuint Allocate() diff --git a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.SequencialConcurrent.cs b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.SequencialConcurrent.cs index 21213dc0..bfaa1488 100644 --- a/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.SequencialConcurrent.cs +++ b/src/StgSharp.Common/HighPerformance/Memory/SlabAllocator.SequencialConcurrent.cs @@ -43,12 +43,26 @@ namespace StgSharp.HighPerformance.Memory > 64 => 64, _ => ((int)_capacity) / 4 }; - Span span = stackalloc nuint[initCount]; - for (int i = 0; i < initCount; i++) { - span[i] = (nuint)i; - } - _stack = BufferStackBuilder.CreateConcurrent(span); + // Callback fill instead of scratch span + CreateConcurrent: avoids + // the stackalloc and the copy, and sidesteps the CS0411 inference + // gap. Safe without locking — not yet published to other threads. + // + // Note this variant stores *indices*, not addresses, so the buffer + // argument is unused here; it is kept to match the shared + // SpanAction shape. + _stack = new(initCount); + _stack.FillRange(init, 0); _highestAllocated += (nuint)initCount; + + static void init( + Span arr, + nuint _ + ) + { + for (int i = 0; i < arr.Length; i++) { + arr[i] = (nuint)i; + } + } } internal T* BasePointer => _buffer; diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs new file mode 100644 index 00000000..3149e911 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs @@ -0,0 +1,165 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Buffer" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Mathematics.Numeric; + +using System; +using System.Diagnostics.CodeAnalysis; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffer( + BufferType bufferType, + GlHandle handle + ) + { + _context->glBindBuffer((uint)bufferType, handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteBuffer( + GlHandle handle + ) + { + _context->glDeleteBuffers(1, (uint*)&handle); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteBuffers( + GlHandle[] handle + ) + { + if ((handle == null) || (handle.Length == 0)) { + throw new ArgumentNullException(nameof(handle)); + } + fixed (GlHandle* hptr = handle) + { + uint* iptr = (uint*)hptr; + for (int i = 0; i < handle.Length; i++) { + _context->glDeleteBuffers(1, iptr + i); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenBuffers( + int count + ) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + for (int i = 0; i < count; i++) { + _context->glGenBuffers(count, ((uint*)hptr) + i); + } + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + 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, size, (nint*)p, (uint)usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData( + BufferType bufferType, + [NotNull] T[] bufferArray, + BufferUsage usage + ) where T : unmanaged, INumber + { + int size = bufferArray.Length * Marshal.SizeOf(); + if (bufferArray == null) { + return; + } + + fixed (void* bufferPtr = bufferArray) { + _context->glBufferData((uint)bufferType, size, (nint*)bufferPtr, (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData( + BufferType bufferType, + ReadOnlySpan bufferSpan, + BufferUsage usage + ) where T : unmanaged, INumber + { + int size = bufferSpan.Length * Marshal.SizeOf(); + if (bufferSpan.IsEmpty) { + return; + } + + fixed (void* bufferPtr = bufferSpan) { + _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData( + BufferType bufferType, + Span bufferArray, + BufferUsage usage + ) where T : unmanaged, INumber + { + int size = bufferArray.Length * Marshal.SizeOf(); + if (bufferArray.IsEmpty) { + return; + } + + fixed (void* bufferPtr = bufferArray) { + _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferVectorData( + BufferType bufferType, + ReadOnlySpan bufferSpan, + BufferUsage usage + ) where T : unmanaged, IUnmanagedVector + { + int size = bufferSpan.Length * Marshal.SizeOf(); + + fixed (void* bufferPtr = bufferSpan) { + _context->glBufferData((uint)bufferType, size, (IntPtr*)bufferPtr, (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferVectorData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage + ) where T : unmanaged, IUnmanagedVector + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) { + return; + } + fixed (void* bufferPtr = bufferArray) { + _context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, + (uint)usage); + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs new file mode 100644 index 00000000..22f29e63 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs @@ -0,0 +1,76 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Context" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + private static readonly Dictionary contextToGLMap = []; + private static readonly ThreadLocal _currentGL = new(); + private OpenglContext* _context; + + private readonly Lazy _attachmentColorRange; + + private OpenGLFunction() + { + textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS; + UnusedTextureImageUint = []; + _attachmentColorRange = new Lazy( + () => GetMaskInteger(glConst.MAX_COLOR_ATTACHMENTS)); + } + + public int AttachmentColorRange => _attachmentColorRange.Value; + + public static OpenGLFunction CurrentGL + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get => _currentGL.Value!; + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal set => _currentGL.Value = value; + } + + internal IntPtr ContextHandle => (IntPtr)_context; + + protected ref OpenglContext Context + { + get + { + #if DEBUG + ArgumentNullException.ThrowIfNull(_context, nameof(_context)); + #endif + return ref (*_context); + } + } + + internal static OpenGLFunction BuildGlFunctionPackage( + IntPtr handle + ) + { + if (contextToGLMap.TryGetValue(handle, out OpenGLFunction pack)) { + return pack; + } + pack = new OpenGLFunction + { + _context = (OpenglContext*)handle + }; + contextToGLMap.Add(handle, pack); + return pack; + } + + ~OpenGLFunction() + { + _ = contextToGLMap.Remove(ContextHandle); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Diagnostics.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Diagnostics.cs new file mode 100644 index 00000000..8017fbce --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Diagnostics.cs @@ -0,0 +1,72 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Diagnostics" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [Conditional("DEBUG")] + public void Assert( + bool shouldReportWhenNormal + ) + { + uint code = _context->glGetError(); + if (code != glConst.NO_ERROR) { + throw new GlExecutionException(code); + } + if (shouldReportWhenNormal) { + Console.WriteLine("OpenGL runs normally"); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearError() + { + uint code = 0; + for (int i = 0; i < 1024; i++) + { + code = _context->glGetError(); + if (code == 0) { + return; + } + + // Console.WriteLine(code); + } + foreach (ProcessThread thread in Process.GetCurrentProcess().Threads) { + Debugger.Break(); + } + throw new GlErrorOverflowException(1024, code); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void ClearGraphicError() + { + while (_context->glGetError() != 0) { } + } + + public unsafe int GetMaskInteger( + uint statusCode + ) + { + int ret = 0; + _context->glGetIntegerv(statusCode, &ret); + return ret; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void WaitAccomplishment() + { + _context->glFinish(); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs new file mode 100644 index 00000000..a863c921 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs @@ -0,0 +1,105 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Drawing" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Clear( + MaskBufferBit mask + ) + { + _context->glClear((uint)mask); + } + + public void DepthMaskAccess( + bool isWrite + ) + { + _context->glDepthMask(isWrite ? (byte)1 : (byte)0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Disable( + glOperation operation + ) + { + _context->glDisable((uint)operation); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + 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, + int count, + TypeCode type, + IntPtr ptr + ) + { + uint a = type switch + { + 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->glDrawElements((uint)mode, count, a, (nint*)ptr); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstanced( + GeometryType mode, + int count, + TypeCode type, + IntPtr ptr, + int amount + ) + { + uint a = type switch + { + 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 + ) + { + _context->glEnable((uint)operation); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonMode( + FaceMode mode + ) + { + _context->glPolygonMode(glConst.FRONT_AND_BACK, (uint)mode); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs new file mode 100644 index 00000000..25981988 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs @@ -0,0 +1,122 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Framebuffer" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + /// Generate framebuffer object handles into the supplied storage. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenFrameBuffers( + Span framebuffers + ) + { + fixed (GlHandle* framebuffersPtr = framebuffers) { + Context.glGenFramebuffers(framebuffers.Length, (uint*)framebuffersPtr); + } + } + + /// + /// Bind a framebuffer object to a framebuffer target. + /// + /// The framebuffer target of the binding operation. + /// The framebuffer object handle to bind. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFrameBuffer( + FrameBufferTarget target, + GlHandle handle + ) + { + _context->glBindFramebuffer((uint)target, handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindRenderBuffer( + GlHandle handle + ) + { + _context->glBindRenderbuffer(glConst.RENDERBUFFER, handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public FrameBufferStatus CheckFrameBufferStatus( + FrameBufferTarget target + ) + { + return (FrameBufferStatus)_context->glCheckFramebufferStatus((uint)target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CombineFrameBufferRenderBuffer( + FrameBufferAttachment attachment, + GlHandle rboHandle + ) + { + _context->glFramebufferRenderbuffer(glConst.FRAMEBUFFER, (uint)attachment, + glConst.RENDERBUFFER, rboHandle.Value); + } + + /// Delete one renderbuffer object. + public unsafe void DeleteRenderBuffer( + GlHandle bufferHandle + ) + { + _context->glDeleteRenderbuffers(1, &bufferHandle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FrameBufferTexture2d( + FrameBufferTarget target, + uint attachment, + Texture2DTarget texTarget, + GlHandle textureHandle, + int level + ) + { + _context->glFramebufferTexture2D((uint)target, attachment, (uint)texTarget, + textureHandle.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenRenderBuffer( + int count + ) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) { + _context->glGenRenderbuffers(count, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (int width, int height) size + ) + { + _context->glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, size.width, + size.height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (uint width, uint height) size + ) + { + _context->glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, + (int)size.width, (int)size.height); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs new file mode 100644 index 00000000..b76a5762 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Shader.cs @@ -0,0 +1,131 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Shader" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Graphics; + +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 unsafe GlHandle CreateGraphicProgram() + { + return GlHandle.Create(_context->glCreateProgram()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] CreateProgram( + int count + ) + { + GlHandle[] h = new GlHandle[count]; + for (int i = 0; i < count; i++) { + h.SetValue(i, _context->glCreateProgram()); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle[] CreateShaderSet( + int count, + ShaderType type + ) + { + GlHandle[] ret = new GlHandle[count]; + uint t = (uint)type; + for (int i = 0; i < count; i++) + { + uint id = _context->glCreateShader(t); + if (id == 0) + { + uint error = _context->glGetError(); + throw new InvalidOperationException($"Failed in creating shader: {error}"); + } + ret[i] = GlHandle.Create(id); + } + return ret; + } + + 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) { + return Marshal.PtrToStringAnsi(sptr) ?? string.Empty; + } + return string.Empty; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle GetUniformLocation( + GlHandle program, + string name + ) + { + byte[] code = Encoding.UTF8.GetBytes(name); + fixed (byte* ptr = code) + { + int ret = _context->glGetUniformLocation(program.Value, ptr); + #if DEBUG + if (ret is glConst.INVALID_OPERATION or glConst.INVALID_VALUE) + { + throw new InvalidOperationException(); + } + if (ret == -1) { + throw new UniformEmptyReferenceException(nameof(program), name); + } + #endif + return GlHandle.CreateSigned(ret); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + byte[] codeStream + ) + { + fixed (byte* streamPtr = codeStream) { + _context->glShaderSource(shaderHandle.Value, 1, &streamPtr, (int*)0); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream + ) + { + fixed (char* streamPtr = codeStream) { + _context->glShaderSource(shaderHandle.Value, 1, (byte**)&streamPtr, (int*)0); + } + } + + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream + ) + { + fixed (byte* streamPtr = codeStream) + { + byte* bptr = streamPtr; + _context->glShaderSource(shaderHandle.Value, 1, &bptr, (int*)0); + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs new file mode 100644 index 00000000..ed644a4a --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs @@ -0,0 +1,149 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Texture" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Graphics; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveTextureUnit( + uint type + ) + { + _context->glActiveTexture(type); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenTextures( + int count + ) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) { + _context->glGenTextures(count, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void GetTextureImage( + Texture2DTarget target, + int level, + ImageChannel channel, + PixelChannelLayout channelLayout, + T[] dataStream + ) where T : unmanaged, INumber + { + fixed (T* tptr = dataStream) { + _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 + ) + { + fixed (int* iptr = &propertyValue) { + _context->glGetTexLevelParameteriv(textureTypeMask, level, propertyMask, iptr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadPixels( + (int X, int Y) beginPosition, + (int width, int height) size, + FrameBufferChannel format, + PixelChannelLayout dataType, + ref byte[] stream + ) + { + fixed (byte* bptr = stream) { + _context->glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, + (uint)format, (uint)dataType, (nint*)bptr); + } + } + + public void RereadImage( + in Image i, + (int X, int Y) beginPosition, + FrameBufferChannel format, + 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, (nint*)bptr); + } + i.PixelUpdateCount++; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + int width, + int height, + ImageChannel targetChannel, + PixelChannelLayout type, + 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, (int)sourceChannel, width, height, 0, + (uint)targetChannel, (uint)type, (nint*)tptr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + int width, + int height, + ImageChannel targetChannel, + PixelChannelLayout type, + Span pixelSpan + ) where T : unmanaged, INumber + { + fixed (T* tPtr = pixelSpan) { + _context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, + (uint)targetChannel, (uint)type, (nint*)tPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter( + int target, + uint pname, + int param + ) + { + _context->glTexParameteri((uint)target, pname, param); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/glFunction.SourceManager.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs similarity index 97% rename from src/StgSharp.Graphics/OpenGL/glFunction.SourceManager.cs rename to src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs index c8b9bf7f..777e1285 100644 --- a/src/StgSharp.Graphics/OpenGL/glFunction.SourceManager.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs @@ -1,12 +1,10 @@ // ----------------------------------------------------------------------------- -// file="glFunction.SourceManager" +// file="OpenGLFunction.TextureUnits" // Project: StgSharp // Copyright (c) Nitload. // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp; - using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -70,4 +68,4 @@ namespace StgSharp.Graphics.OpenGL } } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs new file mode 100644 index 00000000..e105cf66 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs @@ -0,0 +1,29 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.Uniform" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Mathematics.Graphics; + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue( + Uniform uniform, + Vec4 vec + ) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4fv(uniform.id.SignedValue, 1, (float*)&vec); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs new file mode 100644 index 00000000..99188f77 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs @@ -0,0 +1,77 @@ +// ----------------------------------------------------------------------------- +// file="OpenGLFunction.VertexArray" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Graphics; + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexArray( + GlHandle handle + ) + { + _context->glBindVertexArray(handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteVertexArrays( + GlHandle[] arrays + ) + { + fixed (GlHandle* hptr = arrays) + { + uint* iptr = (uint*)hptr; + for (int i = 0; i < arrays.Length; i++) { + _context->glDeleteVertexArrays(1, iptr + i); + } + } + } + + public unsafe GlHandle[] GenVertexArrays( + int count + ) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) { + _context->glGenVertexArrays(count, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + 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, (byte)(normalized ? 1 : 0), stride, + (nint*)pointer); + _context->glEnableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttributeDivisor( + uint layoutIndex, + uint divisor + ) + { + _context->glVertexAttribDivisor(layoutIndex, divisor); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs new file mode 100644 index 00000000..40eb31cd --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/GlCommandHistory.g.cs @@ -0,0 +1,1027 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Command availability history +// +using System; +using System.Collections.Frozen; +using System.Collections.Generic; + +namespace StgSharp.Graphics.OpenGL +{ + internal enum CommandHistoryAction { Added, Removed } + + internal readonly record struct CommandHistoryEntry(string Version, CommandHistoryAction Action); + + internal static class GlCommandHistory + { + internal static readonly FrozenDictionary History = new Dictionary(StringComparer.Ordinal) + { + { "glAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glActiveShaderProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glAlphaFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glAreTexturesResident", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glArrayElement", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glAttachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBegin", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glBeginConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBeginQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBeginQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBeginTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBindBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBindBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glBindBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glBindBuffersBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindBuffersRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindFragDataLocationIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glBindFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindImageTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glBindImageTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glBindRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glBindSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glBindTextureUnit", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glBindTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBindVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glBindVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBitmap", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glBlendColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendEquation", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendEquationSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBlendEquationSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendEquationi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glBlendFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendFuncSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendFunci", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlitFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBlitNamedFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glCallList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCallLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCheckFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glCheckNamedFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClampColor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClear", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClearBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glClearBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glClearBufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearDepth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearDepthf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glClearIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClearNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearStencil", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glClearTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glClientActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClientWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glClipControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColorMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glColorMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glColorMaterial", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCompileShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCompressedTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glCopyImageSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glCopyNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCopyTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCreateProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCreateShaderProgramv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glCreateTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCullFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDebugMessageCallback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDebugMessageControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDebugMessageInsert", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDeleteBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glDeleteFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDeleteLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDeleteProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDeleteProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDeleteQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glDeleteRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDeleteSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glDeleteShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDeleteSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDeleteTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDeleteTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDeleteVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDepthFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthRange", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthRangeArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDepthRangeIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDepthRangef", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDetachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDisable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDisableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDisableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glDisableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDisablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDispatchCompute", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDispatchComputeIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawArraysInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glDrawArraysInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawElementsInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseVertexBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDrawRangeElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glDrawRangeElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackStream", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackStreamInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glEdgeFlag", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEdgeFlagPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEdgeFlagv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEnable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glEnableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEnableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glEnableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glEnablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEnd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEndConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEndList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEndQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glEndQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glEndTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEvalCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalMesh1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalMesh2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalPoint1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalPoint2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFeedbackBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFenceSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glFinish", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFlush", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFlushMappedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFlushMappedNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glFogCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoorddv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glFramebufferTexture1D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture2D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture3D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFrontFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFrustum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGenBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGenFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGenProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGenQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGenRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGenTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glGenTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGenVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenerateMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenerateTextureMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetActiveAtomicCounterBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glGetActiveAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveUniform", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetActiveUniformBlockName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformBlockiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformsiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetAttachedShaders", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetBooleani_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetBooleanv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glGetCompressedTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetCompressedTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetDebugMessageLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetDoublei_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetDoublev", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetError", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetFloati_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetFloatv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetFragDataIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetGraphicsResetStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetInteger64i_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetInteger64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetIntegeri_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetIntegerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetInternalformati64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetInternalformativ", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glGetLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMultisamplefv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetNamedBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed), new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetProgramInterfaceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramPipelineInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramPipelineiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramResourceIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceLocationIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramStageiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetProgramiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetQueryObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetQueryObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetQueryObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetQueryObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetQueryiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetShaderInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetShaderPrecisionFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetShaderiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetString", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetStringi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetSubroutineIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetSubroutineUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetSynciv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbackVarying", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbacki64_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbacki_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbackiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetUniformBlockIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetUniformIndices", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformSubroutineuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexArrayIndexed64iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexArrayIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexArrayiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexAttribIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribLdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetVertexAttribPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribdv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetnCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glHint", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glIndexMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexs", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInitNames", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInterleavedArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInvalidateBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateNamedFramebufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glInvalidateNamedFramebufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glInvalidateSubFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glIsBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glIsEnabled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glIsEnabledi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIsProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glIsProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glIsQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glIsRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glIsShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glIsSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glIsTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glIsTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glIsVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glLightModelf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModelfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModeli", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModeliv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLighti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLineStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLineWidth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glLinkProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glListBase", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadIdentity", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLogicOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glMap1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glMapBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glMapGrid1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMapNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMaterialf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMateriali", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMatrixMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMemoryBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glMemoryBarrierByRegion", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMinSampleShading", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glMultMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glMultiDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glMultiDrawArraysIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glMultiDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glMultiTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNewList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormalPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glOrtho", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPassThrough", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPatchParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPatchParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPauseTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelStoref", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPixelStorei", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPixelTransferf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelTransferi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelZoom", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPointParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointSize", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPolygonMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPolygonOffset", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glPolygonOffsetClamp", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glPopMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPrimitiveRestartIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glPrioritizeTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProvokingVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glPushAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glPushMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glQueryCounter", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glRasterPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glReadPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glReadnPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glRectd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRecti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRects", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glReleaseShaderCompiler", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glRenderMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glResumeTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glRotated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRotatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSampleCoverage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glSampleMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glScaled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glScalef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glScissor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glScissorArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glScissorIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glScissorIndexedv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glSecondaryColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSelectBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glShadeModel", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glShaderBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glShaderStorageBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glSpecializeShader", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glStencilFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glStencilMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilMaskSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glStencilOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilOpSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glTexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glTexBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGend", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGenf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGeni", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexImage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glTexImage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTexParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glTextureBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureView", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTransformFeedbackBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTransformFeedbackBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTransformFeedbackVaryings", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTranslated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTranslatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniformBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformSubroutinesuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUnmapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glUnmapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glUseProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUseProgramStages", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glValidateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glValidateProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertex2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertexArrayAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayElementBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexAttrib1d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nbv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Niv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nsv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nub", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nusv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribI1i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribIPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribL1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribLPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribP1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glViewport", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glViewportArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glViewportIndexedf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glViewportIndexedfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glWindowPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + }.ToFrozenDictionary(StringComparer.Ordinal); + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v3_3.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v3_3.g.cs new file mode 100644 index 00000000..0503e0b5 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v3_3.g.cs @@ -0,0 +1,2187 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 3.3 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveTexture(uint texture) + { + Context.glActiveTexture(texture); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AttachShader(GlHandle program, GlHandle shader) + { + Context.glAttachShader(program.Value, shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginConditionalRender(uint id, uint mode) + { + Context.glBeginConditionalRender(id, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginQuery(uint target, uint id) + { + Context.glBeginQuery(target, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginTransformFeedback(uint primitiveMode) + { + Context.glBeginTransformFeedback(primitiveMode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindAttribLocation(GlHandle program, uint index, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindAttribLocation(program.Value, index, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffer(uint target, GlHandle buffer) + { + Context.glBindBuffer(target, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBufferBase(uint target, uint index, GlHandle buffer) + { + Context.glBindBufferBase(target, index, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBufferRange(uint target, uint index, GlHandle buffer, nint offset, nint size) + { + Context.glBindBufferRange(target, index, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFragDataLocation(GlHandle program, uint color, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindFragDataLocation(program.Value, color, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFragDataLocationIndexed(GlHandle program, uint colorNumber, uint index, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindFragDataLocationIndexed(program.Value, colorNumber, index, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFramebuffer(uint target, GlHandle framebuffer) + { + Context.glBindFramebuffer(target, framebuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindRenderbuffer(uint target, GlHandle renderbuffer) + { + Context.glBindRenderbuffer(target, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindSampler(uint unit, GlHandle sampler) + { + Context.glBindSampler(unit, sampler.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTexture(uint target, GlHandle texture) + { + Context.glBindTexture(target, texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexArray(uint array) + { + Context.glBindVertexArray(array); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendColor(float red, float green, float blue, float alpha) + { + Context.glBlendColor(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquation(uint mode) + { + Context.glBlendEquation(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquationSeparate(uint modeRGB, uint modeAlpha) + { + Context.glBlendEquationSeparate(modeRGB, modeAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFunc(uint sfactor, uint dfactor) + { + Context.glBlendFunc(sfactor, dfactor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) + { + Context.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) + { + Context.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferData(uint target, nint size, void* data, uint usage) + { + Context.glBufferData(target, size, data, usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferSubData(uint target, nint offset, nint size, void* data) + { + Context.glBufferSubData(target, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint CheckFramebufferStatus(uint target) + { + return Context.glCheckFramebufferStatus(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClampColor(uint target, uint clamp) + { + Context.glClampColor(target, clamp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Clear(uint mask) + { + Context.glClear(mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, float depth, int stencil) + { + Context.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (float* valuePtr = value) + { + Context.glClearBufferfv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (int* valuePtr = value) + { + Context.glClearBufferiv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (uint* valuePtr = value) + { + Context.glClearBufferuiv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearColor(float red, float green, float blue, float alpha) + { + Context.glClearColor(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearDepth(double depth) + { + Context.glClearDepth(depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearStencil(int s) + { + Context.glClearStencil(s); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint ClientWaitSync(glSync sync, uint flags, ulong timeout) + { + return Context.glClientWaitSync(sync, flags, timeout); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ColorMask(byte red, byte green, byte blue, byte alpha) + { + Context.glColorMask(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ColorMask(uint index, byte r, byte g, byte b, byte a) + { + Context.glColorMaski(index, r, g, b, a); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompileShader(GlHandle shader) + { + Context.glCompileShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, void* data) + { + Context.glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, void* data) + { + Context.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, void* data) + { + Context.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyBufferSubData(uint readTarget, uint writeTarget, nint readOffset, nint writeOffset, nint size) + { + Context.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border) + { + Context.glCopyTexImage1D(target, level, internalformat, x, y, width, border); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) + { + Context.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) + { + Context.glCopyTexSubImage1D(target, level, xoffset, x, y, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) + { + Context.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + { + Context.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateProgram() + { + return GlHandle.Create(Context.glCreateProgram()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateShader(uint type) + { + return GlHandle.Create(Context.glCreateShader(type)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CullFace(uint mode) + { + Context.glCullFace(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteBuffers(ReadOnlySpan buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glDeleteBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteFramebuffers(ReadOnlySpan framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glDeleteFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgram(GlHandle program) + { + Context.glDeleteProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteQueries(ReadOnlySpan ids) + { + fixed (uint* idsPtr = ids) + { + Context.glDeleteQueries(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteRenderbuffers(ReadOnlySpan renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glDeleteRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteSamplers(ReadOnlySpan samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glDeleteSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteShader(GlHandle shader) + { + Context.glDeleteShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteSync(glSync sync) + { + Context.glDeleteSync(sync); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTextures(ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glDeleteTextures(checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteVertexArrays(ReadOnlySpan arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glDeleteVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthFunc(uint func) + { + Context.glDepthFunc(func); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthMask(byte flag) + { + Context.glDepthMask(flag); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRange(double n, double f) + { + Context.glDepthRange(n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DetachShader(GlHandle program, GlHandle shader) + { + Context.glDetachShader(program.Value, shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Disable(uint cap) + { + Context.glDisable(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DisableVertexAttribArray(uint index) + { + Context.glDisableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Disable(uint target, uint index) + { + Context.glDisablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArrays(uint mode, int first, int count) + { + Context.glDrawArrays(mode, first, count); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysInstanced(uint mode, int first, int count, int instancecount) + { + Context.glDrawArraysInstanced(mode, first, count, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawBuffer(uint buf) + { + Context.glDrawBuffer(buf); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawBuffers(ReadOnlySpan bufs) + { + fixed (uint* bufsPtr = bufs) + { + Context.glDrawBuffers(checked((int)bufs.Length), bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElements(uint mode, int count, uint type, void* indices) + { + Context.glDrawElements(mode, count, type, indices); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsBaseVertex(uint mode, int count, uint type, void* indices, int basevertex) + { + Context.glDrawElementsBaseVertex(mode, count, type, indices, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstanced(uint mode, int count, uint type, void* indices, int instancecount) + { + Context.glDrawElementsInstanced(mode, count, type, indices, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertex(uint mode, int count, uint type, void* indices, int instancecount, int basevertex) + { + Context.glDrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElements(uint mode, uint start, uint end, int count, uint type, void* indices) + { + Context.glDrawRangeElements(mode, start, end, count, type, indices); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, void* indices, int basevertex) + { + Context.glDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable(uint cap) + { + Context.glEnable(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnableVertexAttribArray(uint index) + { + Context.glEnableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable(uint target, uint index) + { + Context.glEnablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndConditionalRender() + { + Context.glEndConditionalRender(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndQuery(uint target) + { + Context.glEndQuery(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndTransformFeedback() + { + Context.glEndTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public glSync FenceSync(uint condition, uint flags) + { + return Context.glFenceSync(condition, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Finish() + { + Context.glFinish(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Flush() + { + Context.glFlush(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FlushMappedBufferRange(uint target, nint offset, nint length) + { + Context.glFlushMappedBufferRange(target, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) + { + Context.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture(uint target, uint attachment, GlHandle texture, int level) + { + Context.glFramebufferTexture(target, attachment, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture1D(uint target, uint attachment, uint textarget, GlHandle texture, int level) + { + Context.glFramebufferTexture1D(target, attachment, textarget, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture2D(uint target, uint attachment, uint textarget, GlHandle texture, int level) + { + Context.glFramebufferTexture2D(target, attachment, textarget, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture3D(uint target, uint attachment, uint textarget, GlHandle texture, int level, int zoffset) + { + Context.glFramebufferTexture3D(target, attachment, textarget, texture.Value, level, zoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTextureLayer(uint target, uint attachment, GlHandle texture, int level, int layer) + { + Context.glFramebufferTextureLayer(target, attachment, texture.Value, level, layer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FrontFace(uint mode) + { + Context.glFrontFace(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenBuffers(Span buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glGenBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenFramebuffers(Span framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glGenFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenQueries(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glGenQueries(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenRenderbuffers(Span renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glGenRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenSamplers(Span samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glGenSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenTextures(Span textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glGenTextures(checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenVertexArrays(Span arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glGenVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateMipmap(uint target) + { + Context.glGenerateMipmap(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveAttrib(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveAttrib(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniform(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveUniform(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockName(GlHandle program, uint uniformBlockIndex, out int length, Span uniformBlockName) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* uniformBlockNamePtr = uniformBlockName) + { + Context.glGetActiveUniformBlockName(program.Value, uniformBlockIndex, checked((int)uniformBlockName.Length), lengthPtr, uniformBlockNamePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockiv(GlHandle program, uint uniformBlockIndex, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformName(GlHandle program, uint uniformIndex, out int length, Span uniformName) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* uniformNamePtr = uniformName) + { + Context.glGetActiveUniformName(program.Value, uniformIndex, checked((int)uniformName.Length), lengthPtr, uniformNamePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformsiv(GlHandle program, ReadOnlySpan uniformIndices, uint pname, Span @params) + { + fixed (uint* uniformIndicesPtr = uniformIndices) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveUniformsiv(program.Value, checked((int)uniformIndices.Length), uniformIndicesPtr, pname, @paramsPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetAttachedShaders(GlHandle program, out int count, Span shaders) + { + count = default; + fixed (int* countPtr = &count) + { + fixed (uint* shadersPtr = shaders) + { + Context.glGetAttachedShaders(program.Value, checked((int)shaders.Length), countPtr, shadersPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetAttribLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetAttribLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBooleani_v(uint target, uint index, Span data) + { + fixed (byte* dataPtr = data) + { + Context.glGetBooleani_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBooleanv(uint pname, Span data) + { + fixed (byte* dataPtr = data) + { + Context.glGetBooleanv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameter(uint target, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetBufferParameteri64v(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameter(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetBufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferPointerv(uint target, uint pname, void** @params) + { + Context.glGetBufferPointerv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferSubData(uint target, nint offset, nint size, void* data) + { + Context.glGetBufferSubData(target, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTexImage(uint target, int level, void* img) + { + Context.glGetCompressedTexImage(target, level, img); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublev(uint pname, Span data) + { + fixed (double* dataPtr = data) + { + Context.glGetDoublev(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetError() + { + return Context.glGetError(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloatv(uint pname, Span data) + { + fixed (float* dataPtr = data) + { + Context.glGetFloatv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetFragDataIndex(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetFragDataIndex(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetFragDataLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetFragDataLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetFramebufferAttachmentParameteriv(target, attachment, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64i_v(uint target, uint index, Span data) + { + fixed (long* dataPtr = data) + { + Context.glGetInteger64i_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64v(uint pname, Span data) + { + fixed (long* dataPtr = data) + { + Context.glGetInteger64v(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegeri_v(uint target, uint index, Span data) + { + fixed (int* dataPtr = data) + { + Context.glGetIntegeri_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegerv(uint pname, Span data) + { + fixed (int* dataPtr = data) + { + Context.glGetIntegerv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetMultisamplefv(uint pname, uint index, Span val) + { + fixed (float* valPtr = val) + { + Context.glGetMultisamplefv(pname, index, valPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInfoLog(GlHandle program, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetProgramInfoLog(program.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramiv(GlHandle program, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramiv(program.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetQueryObjecti64v(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryObjectiv(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (ulong* @paramsPtr = @params) + { + Context.glGetQueryObjectui64v(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetQueryObjectuiv(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryiv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetRenderbufferParameteriv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetRenderbufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetSamplerParameterIiv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetSamplerParameterIuiv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetSamplerParameterfv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetSamplerParameteriv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderInfoLog(GlHandle shader, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetShaderInfoLog(shader.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderSource(GlHandle shader, out int length, Span source) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* sourcePtr = source) + { + Context.glGetShaderSource(shader.Value, checked((int)source.Length), lengthPtr, sourcePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderiv(GlHandle shader, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetShaderiv(shader.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte* GetString(uint name) + { + return Context.glGetString(name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte* GetString(uint name, uint index) + { + return Context.glGetStringi(name, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSynciv(glSync sync, uint pname, out int length, Span values) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (int* valuesPtr = values) + { + Context.glGetSynciv(sync, pname, checked((int)values.Length), lengthPtr, valuesPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexImage(uint target, int level, uint format, uint type, void* pixels) + { + Context.glGetTexImage(target, level, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTexLevelParameterfv(target, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexLevelParameteriv(target, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterI(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexParameterIiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterI(uint target, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetTexParameterIuiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameter(uint target, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTexParameterfv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameter(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackVarying(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetTransformFeedbackVarying(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetUniformBlockIndex(GlHandle program, ReadOnlySpan uniformBlockName) + { + fixed (byte* uniformBlockNamePtr = uniformBlockName) + { + return Context.glGetUniformBlockIndex(program.Value, uniformBlockNamePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformIndices(GlHandle program, int uniformCount, byte** uniformNames, Span uniformIndices) + { + fixed (uint* uniformIndicesPtr = uniformIndices) + { + Context.glGetUniformIndices(program.Value, uniformCount, uniformNames, uniformIndicesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetUniformLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetUniformLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetUniformfv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetUniformiv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetUniformuiv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribI(uint index, uint pname, out int @params) + { + @params = default; + fixed (int* @paramsPtr = &@params) + { + Context.glGetVertexAttribIiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribI(uint index, uint pname, out uint @params) + { + @params = default; + fixed (uint* @paramsPtr = &@params) + { + Context.glGetVertexAttribIuiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribPointerv(uint index, uint pname, void** pointer) + { + Context.glGetVertexAttribPointerv(index, pname, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (double* @paramsPtr = @params) + { + Context.glGetVertexAttribdv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (float* @paramsPtr = @params) + { + Context.glGetVertexAttribfv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (int* @paramsPtr = @params) + { + Context.glGetVertexAttribiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Hint(uint target, uint mode) + { + Context.glHint(target, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsBuffer(GlHandle buffer) + { + return Context.glIsBuffer(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsEnabled(uint cap) + { + return Context.glIsEnabled(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsEnabled(uint target, uint index) + { + return Context.glIsEnabledi(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsFramebuffer(GlHandle framebuffer) + { + return Context.glIsFramebuffer(framebuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsProgram(GlHandle program) + { + return Context.glIsProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsQuery(uint id) + { + return Context.glIsQuery(id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsRenderbuffer(GlHandle renderbuffer) + { + return Context.glIsRenderbuffer(renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsSampler(GlHandle sampler) + { + return Context.glIsSampler(sampler.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsShader(GlHandle shader) + { + return Context.glIsShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsSync(glSync sync) + { + return Context.glIsSync(sync); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsTexture(GlHandle texture) + { + return Context.glIsTexture(texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsVertexArray(uint array) + { + return Context.glIsVertexArray(array); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LineWidth(float width) + { + Context.glLineWidth(width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LinkProgram(GlHandle program) + { + Context.glLinkProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LogicOp(uint opcode) + { + Context.glLogicOp(opcode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapBuffer(uint target, uint access) + { + return Context.glMapBuffer(target, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapBufferRange(uint target, nint offset, nint length, uint access) + { + return Context.glMapBufferRange(target, offset, length, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArrays(uint mode, ReadOnlySpan first, ReadOnlySpan count) + { + if (count.Length != first.Length) { + throw new ArgumentException("Span lengths controlled by drawcount must match.", nameof(count)); + } + fixed (int* firstPtr = first) + { + fixed (int* countPtr = count) + { + Context.glMultiDrawArrays(mode, firstPtr, countPtr, checked((int)first.Length)); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElements(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount) + { + if (count.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); + } + fixed (int* countPtr = count) + { + Context.glMultiDrawElements(mode, countPtr, type, indices, drawcount); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsBaseVertex(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount, ReadOnlySpan basevertex) + { + if (count.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); + } + if (basevertex.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(basevertex)); + } + fixed (int* countPtr = count) + { + fixed (int* basevertexPtr = basevertex) + { + Context.glMultiDrawElementsBaseVertex(mode, countPtr, type, indices, drawcount, basevertexPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStore(uint pname, float param) + { + Context.glPixelStoref(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStore(uint pname, int param) + { + Context.glPixelStorei(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, float param) + { + Context.glPointParameterf(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, ReadOnlySpan @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glPointParameterfv(pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, int param) + { + Context.glPointParameteri(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glPointParameteriv(pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointSize(float size) + { + Context.glPointSize(size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonMode(uint face, uint mode) + { + Context.glPolygonMode(face, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonOffset(float factor, float units) + { + Context.glPolygonOffset(factor, units); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PrimitiveRestartIndex(uint index) + { + Context.glPrimitiveRestartIndex(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProvokingVertex(uint mode) + { + Context.glProvokingVertex(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void QueryCounter(uint id, uint target) + { + Context.glQueryCounter(id, target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadBuffer(uint src) + { + Context.glReadBuffer(src); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadPixels(int x, int y, int width, int height, uint format, uint type, void* pixels) + { + Context.glReadPixels(x, y, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void RenderbufferStorage(uint target, uint internalformat, int width, int height) + { + Context.glRenderbufferStorage(target, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void RenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height) + { + Context.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SampleCoverage(float value, byte invert) + { + Context.glSampleCoverage(value, invert); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SampleMaski(uint maskNumber, uint mask) + { + Context.glSampleMaski(maskNumber, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glSamplerParameterIiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (uint* paramPtr = param) + { + Context.glSamplerParameterIuiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, float param) + { + Context.glSamplerParameterf(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (float* paramPtr = param) + { + Context.glSamplerParameterfv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, int param) + { + Context.glSamplerParameteri(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glSamplerParameteriv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Scissor(int x, int y, int width, int height) + { + Context.glScissor(x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderSource(GlHandle shader, int count, byte** @string, ReadOnlySpan length) + { + if (length.Length < checked((int)count)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'count'.", nameof(length)); + } + fixed (int* lengthPtr = length) + { + Context.glShaderSource(shader.Value, count, @string, lengthPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilFunc(uint func, int @ref, uint mask) + { + Context.glStencilFunc(func, @ref, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilFuncSeparate(uint face, uint func, int @ref, uint mask) + { + Context.glStencilFuncSeparate(face, func, @ref, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilMask(uint mask) + { + Context.glStencilMask(mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilMaskSeparate(uint face, uint mask) + { + Context.glStencilMaskSeparate(face, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilOp(uint fail, uint zfail, uint zpass) + { + Context.glStencilOp(fail, zfail, zpass); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass) + { + Context.glStencilOpSeparate(face, sfail, dpfail, dppass); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexBuffer(uint target, uint internalformat, GlHandle buffer) + { + Context.glTexBuffer(target, internalformat, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage1D(uint target, int level, int internalformat, int width, int border, uint format, uint type, void* pixels) + { + Context.glTexImage1D(target, level, internalformat, width, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage2D(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, void* pixels) + { + Context.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage3D(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, void* pixels) + { + Context.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTexParameterIiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glTexParameterIuiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, float param) + { + Context.glTexParameterf(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, ReadOnlySpan @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glTexParameterfv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, int param) + { + Context.glTexParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTexParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, void* pixels) + { + Context.glTexSubImage1D(target, level, xoffset, width, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + { + Context.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) + { + Context.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackVaryings(GlHandle program, int count, byte** varyings, uint bufferMode) + { + Context.glTransformFeedbackVaryings(program.Value, count, varyings, bufferMode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformBlockBinding(GlHandle program, uint uniformBlockIndex, uint uniformBlockBinding) + { + Context.glUniformBlockBinding(program.Value, uniformBlockIndex, uniformBlockBinding); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte UnmapBuffer(uint target) + { + return Context.glUnmapBuffer(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UseProgram(GlHandle program) + { + Context.glUseProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ValidateProgram(GlHandle program) + { + Context.glValidateProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x) + { + Context.glVertexAttrib1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x) + { + Context.glVertexAttrib1f(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x) + { + Context.glVertexAttrib1s(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y) + { + Context.glVertexAttrib2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y) + { + Context.glVertexAttrib2f(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y) + { + Context.glVertexAttrib2s(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y, double z) + { + Context.glVertexAttrib3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y, float z) + { + Context.glVertexAttrib3f(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y, short z) + { + Context.glVertexAttrib3s(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttrib4Nbv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glVertexAttrib4Niv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (short* vPtr = v) + { + Context.glVertexAttrib4Nsv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, byte x, byte y, byte z, byte w) + { + Context.glVertexAttrib4Nub(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (uint* vPtr = v) + { + Context.glVertexAttrib4Nuiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttrib4Nusv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttrib4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y, double z, double w) + { + Context.glVertexAttrib4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y, float z, float w) + { + Context.glVertexAttrib4f(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glVertexAttrib4iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y, short z, short w) + { + Context.glVertexAttrib4s(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (byte* vPtr = v) + { + Context.glVertexAttrib4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (uint* vPtr = v) + { + Context.glVertexAttrib4uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttrib4usv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribDivisor(uint index, uint divisor) + { + Context.glVertexAttribDivisor(index, divisor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x) + { + Context.glVertexAttribI1i(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x) + { + Context.glVertexAttribI1ui(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y) + { + Context.glVertexAttribI2i(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y) + { + Context.glVertexAttribI2ui(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y, int z) + { + Context.glVertexAttribI3i(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y, uint z) + { + Context.glVertexAttribI3ui(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttribI4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y, int z, int w) + { + Context.glVertexAttribI4i(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (short* vPtr = v) + { + Context.glVertexAttribI4sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (byte* vPtr = v) + { + Context.glVertexAttribI4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y, uint z, uint w) + { + Context.glVertexAttribI4ui(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttribI4usv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIPointer(uint index, int size, uint type, int stride, void* pointer) + { + Context.glVertexAttribIPointer(index, size, type, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP1ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP2(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP2ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP3(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP3ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP4(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP4ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribPointer(uint index, int size, uint type, byte normalized, int stride, void* pointer) + { + Context.glVertexAttribPointer(index, size, type, normalized, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Viewport(int x, int y, int width, int height) + { + Context.glViewport(x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void WaitSync(glSync sync, uint flags, ulong timeout) + { + Context.glWaitSync(sync, flags, timeout); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_0.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_0.g.cs new file mode 100644 index 00000000..484c5f86 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_0.g.cs @@ -0,0 +1,238 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.0 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginQueryIndexed(uint target, uint index, uint id) + { + Context.glBeginQueryIndexed(target, index, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTransformFeedback(uint target, uint id) + { + Context.glBindTransformFeedback(target, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquationSeparate(uint buf, uint modeRGB, uint modeAlpha) + { + Context.glBlendEquationSeparatei(buf, modeRGB, modeAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquation(uint buf, uint mode) + { + Context.glBlendEquationi(buf, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFuncSeparate(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) + { + Context.glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFunc(uint buf, uint src, uint dst) + { + Context.glBlendFunci(buf, src, dst); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTransformFeedbacks(ReadOnlySpan ids) + { + fixed (uint* idsPtr = ids) + { + Context.glDeleteTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysIndirect(uint mode, void* indirect) + { + Context.glDrawArraysIndirect(mode, indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsIndirect(uint mode, uint type, void* indirect) + { + Context.glDrawElementsIndirect(mode, type, indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedback(uint mode, uint id) + { + Context.glDrawTransformFeedback(mode, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackStream(uint mode, uint id, uint stream) + { + Context.glDrawTransformFeedbackStream(mode, id, stream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndQueryIndexed(uint target, uint index) + { + Context.glEndQueryIndexed(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenTransformFeedbacks(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glGenTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineName(GlHandle program, uint shadertype, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveSubroutineName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformName(GlHandle program, uint shadertype, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveSubroutineUniformName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pname, Span values) + { + fixed (int* valuesPtr = values) + { + Context.glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramStageiv(GlHandle program, uint shadertype, uint pname, out int values) + { + values = default; + fixed (int* valuesPtr = &values) + { + Context.glGetProgramStageiv(program.Value, shadertype, pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryIndexediv(uint target, uint index, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryIndexediv(target, index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSubroutineIndex(GlHandle program, uint shadertype, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetSubroutineIndex(program.Value, shadertype, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetSubroutineUniformLocation(GlHandle program, uint shadertype, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetSubroutineUniformLocation(program.Value, shadertype, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformSubroutineuiv(uint shadertype, int location, out uint @params) + { + @params = default; + fixed (uint* @paramsPtr = &@params) + { + Context.glGetUniformSubroutineuiv(shadertype, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (double* @paramsPtr = @params) + { + Context.glGetUniformdv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsTransformFeedback(uint id) + { + return Context.glIsTransformFeedback(id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MinSampleShading(float value) + { + Context.glMinSampleShading(value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PatchParameter(uint pname, ReadOnlySpan values) + { + fixed (float* valuesPtr = values) + { + Context.glPatchParameterfv(pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PatchParameter(uint pname, int value) + { + Context.glPatchParameteri(pname, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PauseTransformFeedback() + { + Context.glPauseTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ResumeTransformFeedback() + { + Context.glResumeTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformSubroutinesuiv(uint shadertype, ReadOnlySpan indices) + { + fixed (uint* indicesPtr = indices) + { + Context.glUniformSubroutinesuiv(shadertype, checked((int)indices.Length), indicesPtr); + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_1.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_1.g.cs new file mode 100644 index 00000000..795baf52 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_1.g.cs @@ -0,0 +1,286 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.1 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveShaderProgram(uint pipeline, GlHandle program) + { + Context.glActiveShaderProgram(pipeline, program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindProgramPipeline(uint pipeline) + { + Context.glBindProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearDepth(float d) + { + Context.glClearDepthf(d); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateShaderProgramv(uint type, int count, byte** strings) + { + return GlHandle.Create(Context.glCreateShaderProgramv(type, count, strings)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgramPipelines(ReadOnlySpan pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glDeleteProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRangeArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (double* vPtr = v) + { + Context.glDepthRangeArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRangeIndexed(uint index, double n, double f) + { + Context.glDepthRangeIndexed(index, n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRange(float n, float f) + { + Context.glDepthRangef(n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenProgramPipelines(Span pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glGenProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublei_v(uint target, uint index, Span data) + { + fixed (double* dataPtr = data) + { + Context.glGetDoublei_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloati_v(uint target, uint index, Span data) + { + fixed (float* dataPtr = data) + { + Context.glGetFloati_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramBinary(GlHandle program, int bufSize, out int length, out uint binaryFormat, void* binary) + { + length = default; + binaryFormat = default; + fixed (int* lengthPtr = &length) + { + fixed (uint* binaryFormatPtr = &binaryFormat) + { + Context.glGetProgramBinary(program.Value, bufSize, lengthPtr, binaryFormatPtr, binary); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineInfoLog(uint pipeline, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetProgramPipelineInfoLog(pipeline, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineiv(uint pipeline, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramPipelineiv(pipeline, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderPrecisionFormat(uint shadertype, uint precisiontype, Span range, out int precision) + { + precision = default; + if (range.Length < 2) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '2'.", nameof(range)); + } + fixed (int* rangePtr = range) + { + fixed (int* precisionPtr = &precision) + { + Context.glGetShaderPrecisionFormat(shadertype, precisiontype, rangePtr, precisionPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribLdv(uint index, uint pname, Span @params) + { + fixed (double* @paramsPtr = @params) + { + Context.glGetVertexAttribLdv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsProgramPipeline(uint pipeline) + { + return Context.glIsProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramBinary(GlHandle program, uint binaryFormat, void* binary, int length) + { + Context.glProgramBinary(program.Value, binaryFormat, binary, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramParameter(GlHandle program, uint pname, int value) + { + Context.glProgramParameteri(program.Value, pname, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReleaseShaderCompiler() + { + Context.glReleaseShaderCompiler(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (int* vPtr = v) + { + Context.glScissorArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorIndexed(uint index, int left, int bottom, int width, int height) + { + Context.glScissorIndexed(index, left, bottom, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorIndexed(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glScissorIndexedv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderBinary(ReadOnlySpan shaders, uint binaryFormat, void* binary, int length) + { + fixed (uint* shadersPtr = shaders) + { + Context.glShaderBinary(checked((int)shaders.Length), shadersPtr, binaryFormat, binary, length); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UseProgramStages(uint pipeline, uint stages, GlHandle program) + { + Context.glUseProgramStages(pipeline, stages, program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ValidateProgramPipeline(uint pipeline) + { + Context.glValidateProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x) + { + Context.glVertexAttribL1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y) + { + Context.glVertexAttribL2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y, double z) + { + Context.glVertexAttribL3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y, double z, double w) + { + Context.glVertexAttribL4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLPointer(uint index, int size, uint type, int stride, void* pointer) + { + Context.glVertexAttribLPointer(index, size, type, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (float* vPtr = v) + { + Context.glViewportArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportIndexed(uint index, float x, float y, float w, float h) + { + Context.glViewportIndexedf(index, x, y, w, h); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportIndexed(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (float* vPtr = v) + { + Context.glViewportIndexedfv(index, vPtr); + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_2.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_2.g.cs new file mode 100644 index 00000000..4d0f9c84 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_2.g.cs @@ -0,0 +1,93 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.2 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindImageTexture(uint unit, GlHandle texture, int level, byte layered, int layer, uint access, uint format) + { + Context.glBindImageTexture(unit, texture.Value, level, layered, layer, access, format); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysInstancedBaseInstance(uint mode, int first, int count, int instancecount, uint baseinstance) + { + Context.glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, uint baseinstance) + { + Context.glDrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertexBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, int basevertex, uint baseinstance) + { + Context.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackInstanced(uint mode, uint id, int instancecount) + { + Context.glDrawTransformFeedbackInstanced(mode, id, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackStreamInstanced(uint mode, uint id, uint stream, int instancecount) + { + Context.glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveAtomicCounterBufferiv(GlHandle program, GlHandle bufferIndex, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformativ(uint target, uint internalformat, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetInternalformativ(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MemoryBarrier(uint barriers) + { + Context.glMemoryBarrier(barriers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage1D(uint target, int levels, uint internalformat, int width) + { + Context.glTexStorage1D(target, levels, internalformat, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage2D(uint target, int levels, uint internalformat, int width, int height) + { + Context.glTexStorage2D(target, levels, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage3D(uint target, int levels, uint internalformat, int width, int height, int depth) + { + Context.glTexStorage3D(target, levels, internalformat, width, height, depth); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_3.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_3.g.cs new file mode 100644 index 00000000..134d7495 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_3.g.cs @@ -0,0 +1,379 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.3 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexBuffer(uint bindingindex, GlHandle buffer, nint offset, int stride) + { + Context.glBindVertexBuffer(bindingindex, buffer.Value, offset, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferData(uint target, uint internalformat, uint format, uint type, void* data) + { + Context.glClearBufferData(target, internalformat, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferSubData(uint target, uint internalformat, nint offset, nint size, uint format, uint type, void* data) + { + Context.glClearBufferSubData(target, internalformat, offset, size, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth) + { + Context.glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageCallback(IntPtr callback, void* userParam) + { + Context.glDebugMessageCallback(callback, userParam); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageControl(uint source, uint type, uint severity, ReadOnlySpan ids, byte enabled) + { + fixed (uint* idsPtr = ids) + { + Context.glDebugMessageControl(source, type, severity, checked((int)ids.Length), idsPtr, enabled); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageInsert(uint source, uint type, uint id, uint severity, int length, ReadOnlySpan buf) + { + fixed (byte* bufPtr = buf) + { + Context.glDebugMessageInsert(source, type, id, severity, length, bufPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z) + { + Context.glDispatchCompute(num_groups_x, num_groups_y, num_groups_z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DispatchComputeIndirect(nint indirect) + { + Context.glDispatchComputeIndirect(indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferParameter(uint target, uint pname, int param) + { + Context.glFramebufferParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetDebugMessageLog(Span sources, Span types, Span ids, Span severities, Span lengths, Span messageLog) + { + if (types.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(types)); + } + if (ids.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(ids)); + } + if (severities.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(severities)); + } + if (lengths.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(lengths)); + } + fixed (uint* sourcesPtr = sources) + { + fixed (uint* typesPtr = types) + { + fixed (uint* idsPtr = ids) + { + fixed (uint* severitiesPtr = severities) + { + fixed (int* lengthsPtr = lengths) + { + fixed (byte* messageLogPtr = messageLog) + { + return Context.glGetDebugMessageLog(checked((uint)sources.Length), checked((int)messageLog.Length), sourcesPtr, typesPtr, idsPtr, severitiesPtr, lengthsPtr, messageLogPtr); + } + } + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFramebufferParameteriv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetFramebufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformati64v(uint target, uint internalformat, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetInternalformati64v(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectLabel(uint identifier, uint name, out int length, Span label) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* labelPtr = label) + { + Context.glGetObjectLabel(identifier, name, checked((int)label.Length), lengthPtr, labelPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectPtrLabel(void* ptr, out int length, Span label) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* labelPtr = label) + { + Context.glGetObjectPtrLabel(ptr, checked((int)label.Length), lengthPtr, labelPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetPointerv(uint pname, void** @params) + { + Context.glGetPointerv(pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramInterfaceiv(program.Value, programInterface, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetProgramResourceIndex(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceIndex(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetProgramResourceLocation(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceLocation(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetProgramResourceLocationIndex(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceLocationIndex(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramResourceName(GlHandle program, uint programInterface, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetProgramResourceName(program.Value, programInterface, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramResourceiv(GlHandle program, uint programInterface, uint index, ReadOnlySpan props, out int length, Span @params) + { + length = default; + fixed (uint* propsPtr = props) + { + fixed (int* lengthPtr = &length) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramResourceiv(program.Value, programInterface, index, checked((int)props.Length), propsPtr, checked((int)@params.Length), lengthPtr, @paramsPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferData(GlHandle buffer) + { + Context.glInvalidateBufferData(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferSubData(GlHandle buffer, nint offset, nint length) + { + Context.glInvalidateBufferSubData(buffer.Value, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateFramebuffer(uint target, ReadOnlySpan attachments) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateFramebuffer(target, checked((int)attachments.Length), attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateSubFramebuffer(uint target, ReadOnlySpan attachments, int x, int y, int width, int height) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateSubFramebuffer(target, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateTexImage(GlHandle texture, int level) + { + Context.glInvalidateTexImage(texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth) + { + Context.glInvalidateTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArraysIndirect(uint mode, void* indirect, int drawcount, int stride) + { + Context.glMultiDrawArraysIndirect(mode, indirect, drawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirect(uint mode, uint type, void* indirect, int drawcount, int stride) + { + Context.glMultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ObjectLabel(uint identifier, uint name, int length, ReadOnlySpan label) + { + fixed (byte* labelPtr = label) + { + Context.glObjectLabel(identifier, name, length, labelPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ObjectPtrLabel(void* ptr, int length, ReadOnlySpan label) + { + fixed (byte* labelPtr = label) + { + Context.glObjectPtrLabel(ptr, length, labelPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PopDebugGroup() + { + Context.glPopDebugGroup(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PushDebugGroup(uint source, uint id, int length, ReadOnlySpan message) + { + fixed (byte* messagePtr = message) + { + Context.glPushDebugGroup(source, id, length, messagePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderStorageBlockBinding(GlHandle program, uint storageBlockIndex, uint storageBlockBinding) + { + Context.glShaderStorageBlockBinding(program.Value, storageBlockIndex, storageBlockBinding); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexBufferRange(uint target, uint internalformat, GlHandle buffer, nint offset, nint size) + { + Context.glTexBufferRange(target, internalformat, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureView(GlHandle texture, uint target, GlHandle origtexture, uint internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers) + { + Context.glTextureView(texture.Value, target, origtexture.Value, internalformat, minlevel, numlevels, minlayer, numlayers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribBinding(uint attribindex, uint bindingindex) + { + Context.glVertexAttribBinding(attribindex, bindingindex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribFormat(uint attribindex, int size, uint type, byte normalized, uint relativeoffset) + { + Context.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIFormat(uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexAttribIFormat(attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLFormat(uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexAttribLFormat(attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexBindingDivisor(uint bindingindex, uint divisor) + { + Context.glVertexBindingDivisor(bindingindex, divisor); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_4.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_4.g.cs new file mode 100644 index 00000000..2d4daadf --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_4.g.cs @@ -0,0 +1,111 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.4 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersBase(uint target, uint first, ReadOnlySpan buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glBindBuffersBase(target, first, checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersRange(uint target, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan sizes) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (sizes.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(sizes)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (nint* sizesPtr = sizes) + { + Context.glBindBuffersRange(target, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, sizesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindImageTextures(uint first, ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glBindImageTextures(first, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindSamplers(uint first, ReadOnlySpan samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glBindSamplers(first, checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTextures(uint first, ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glBindTextures(first, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexBuffers(uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (strides.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) + { + Context.glBindVertexBuffers(first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferStorage(uint target, nint size, void* data, uint flags) + { + Context.glBufferStorage(target, size, data, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexImage(GlHandle texture, int level, uint format, uint type, void* data) + { + Context.glClearTexImage(texture.Value, level, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* data) + { + Context.glClearTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_5.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_5.g.cs new file mode 100644 index 00000000..6e831635 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_5.g.cs @@ -0,0 +1,822 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.5 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTextureUnit(uint unit, GlHandle texture) + { + Context.glBindTextureUnit(unit, texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlitNamedFramebuffer(GlHandle readFramebuffer, GlHandle drawFramebuffer, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) + { + Context.glBlitNamedFramebuffer(readFramebuffer.Value, drawFramebuffer.Value, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint CheckNamedFramebufferStatus(GlHandle framebuffer, uint target) + { + return Context.glCheckNamedFramebufferStatus(framebuffer.Value, target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedBufferData(GlHandle buffer, uint internalformat, uint format, uint type, void* data) + { + Context.glClearNamedBufferData(buffer.Value, internalformat, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedBufferSubData(GlHandle buffer, uint internalformat, nint offset, nint size, uint format, uint type, void* data) + { + Context.glClearNamedBufferSubData(buffer.Value, internalformat, offset, size, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, float depth, int stencil) + { + Context.glClearNamedFramebufferfi(framebuffer.Value, buffer, drawbuffer, depth, stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (float* valuePtr = value) + { + Context.glClearNamedFramebufferfv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (int* valuePtr = value) + { + Context.glClearNamedFramebufferiv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (uint* valuePtr = value) + { + Context.glClearNamedFramebufferuiv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClipControl(uint origin, uint depth) + { + Context.glClipControl(origin, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage1D(texture.Value, level, xoffset, width, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyNamedBufferSubData(GlHandle readBuffer, GlHandle writeBuffer, nint readOffset, nint writeOffset, nint size) + { + Context.glCopyNamedBufferSubData(readBuffer.Value, writeBuffer.Value, readOffset, writeOffset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage1D(GlHandle texture, int level, int xoffset, int x, int y, int width) + { + Context.glCopyTextureSubImage1D(texture.Value, level, xoffset, x, y, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int x, int y, int width, int height) + { + Context.glCopyTextureSubImage2D(texture.Value, level, xoffset, yoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + { + Context.glCopyTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateBuffers(Span buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glCreateBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateFramebuffers(Span framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glCreateFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateProgramPipelines(Span pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glCreateProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateQueries(uint target, Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glCreateQueries(target, checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateRenderbuffers(Span renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glCreateRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateSamplers(Span samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glCreateSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTextures(uint target, Span textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glCreateTextures(target, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTransformFeedbacks(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glCreateTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateVertexArrays(Span arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glCreateVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DisableVertexArrayAttrib(uint vaobj, uint index) + { + Context.glDisableVertexArrayAttrib(vaobj, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnableVertexArrayAttrib(uint vaobj, uint index) + { + Context.glEnableVertexArrayAttrib(vaobj, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FlushMappedNamedBufferRange(GlHandle buffer, nint offset, nint length) + { + Context.glFlushMappedNamedBufferRange(buffer.Value, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateTextureMipmap(GlHandle texture) + { + Context.glGenerateTextureMipmap(texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTextureImage(GlHandle texture, int level, int bufSize, void* pixels) + { + Context.glGetCompressedTextureImage(texture.Value, level, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int bufSize, void* pixels) + { + Context.glGetCompressedTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetGraphicsResetStatus() + { + return Context.glGetGraphicsResetStatus(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetNamedBufferParameteri64v(buffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedBufferParameteriv(buffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferPointerv(GlHandle buffer, uint pname, void** @params) + { + Context.glGetNamedBufferPointerv(buffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) + { + Context.glGetNamedBufferSubData(buffer.Value, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferAttachmentParameteriv(GlHandle framebuffer, uint attachment, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedFramebufferAttachmentParameteriv(framebuffer.Value, attachment, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferParameteriv(GlHandle framebuffer, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetNamedFramebufferParameteriv(framebuffer.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedRenderbufferParameteriv(GlHandle renderbuffer, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedRenderbufferParameteriv(renderbuffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObject(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjecti64v(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectiv(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectiv(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectui64v(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectui64v(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectuiv(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectuiv(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureImage(GlHandle texture, int level, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetTextureImage(texture.Value, level, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTextureLevelParameterfv(texture.Value, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureLevelParameteriv(texture.Value, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureParameterIiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetTextureParameterIuiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameter(GlHandle texture, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTextureParameterfv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameter(GlHandle texture, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureParameteriv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki64_v(uint xfb, uint pname, uint index, Span param) + { + fixed (long* paramPtr = param) + { + Context.glGetTransformFeedbacki64_v(xfb, pname, index, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki_v(uint xfb, uint pname, uint index, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetTransformFeedbacki_v(xfb, pname, index, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackiv(uint xfb, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetTransformFeedbackiv(xfb, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexed64iv(uint vaobj, uint index, uint pname, Span param) + { + fixed (long* paramPtr = param) + { + Context.glGetVertexArrayIndexed64iv(vaobj, index, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexediv(uint vaobj, uint index, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetVertexArrayIndexediv(vaobj, index, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayiv(uint vaobj, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetVertexArrayiv(vaobj, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnCompressedTexImage(uint target, int lod, int bufSize, void* pixels) + { + Context.glGetnCompressedTexImage(target, lod, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnTexImage(uint target, int level, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetnTexImage(target, level, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 8)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 8'.", nameof(@params)); + } + fixed (double* @paramsPtr = @params) + { + Context.glGetnUniformdv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (float* @paramsPtr = @params) + { + Context.glGetnUniformfv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (int* @paramsPtr = @params) + { + Context.glGetnUniformiv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (uint* @paramsPtr = @params) + { + Context.glGetnUniformuiv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferData(GlHandle framebuffer, ReadOnlySpan attachments) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateNamedFramebufferData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferSubData(GlHandle framebuffer, ReadOnlySpan attachments, int x, int y, int width, int height) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateNamedFramebufferSubData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapNamedBuffer(GlHandle buffer, uint access) + { + return Context.glMapNamedBuffer(buffer.Value, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapNamedBufferRange(GlHandle buffer, nint offset, nint length, uint access) + { + return Context.glMapNamedBufferRange(buffer.Value, offset, length, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MemoryBarrierByRegion(uint barriers) + { + Context.glMemoryBarrierByRegion(barriers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferData(GlHandle buffer, nint size, void* data, uint usage) + { + Context.glNamedBufferData(buffer.Value, size, data, usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferStorage(GlHandle buffer, nint size, void* data, uint flags) + { + Context.glNamedBufferStorage(buffer.Value, size, data, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) + { + Context.glNamedBufferSubData(buffer.Value, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffer(GlHandle framebuffer, uint buf) + { + Context.glNamedFramebufferDrawBuffer(framebuffer.Value, buf); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffers(GlHandle framebuffer, ReadOnlySpan bufs) + { + fixed (uint* bufsPtr = bufs) + { + Context.glNamedFramebufferDrawBuffers(framebuffer.Value, checked((int)bufs.Length), bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferParameter(GlHandle framebuffer, uint pname, int param) + { + Context.glNamedFramebufferParameteri(framebuffer.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferReadBuffer(GlHandle framebuffer, uint src) + { + Context.glNamedFramebufferReadBuffer(framebuffer.Value, src); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferRenderbuffer(GlHandle framebuffer, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) + { + Context.glNamedFramebufferRenderbuffer(framebuffer.Value, attachment, renderbuffertarget, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferTexture(GlHandle framebuffer, uint attachment, GlHandle texture, int level) + { + Context.glNamedFramebufferTexture(framebuffer.Value, attachment, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferTextureLayer(GlHandle framebuffer, uint attachment, GlHandle texture, int level, int layer) + { + Context.glNamedFramebufferTextureLayer(framebuffer.Value, attachment, texture.Value, level, layer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedRenderbufferStorage(GlHandle renderbuffer, uint internalformat, int width, int height) + { + Context.glNamedRenderbufferStorage(renderbuffer.Value, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedRenderbufferStorageMultisample(GlHandle renderbuffer, int samples, uint internalformat, int width, int height) + { + Context.glNamedRenderbufferStorageMultisample(renderbuffer.Value, samples, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadnPixels(int x, int y, int width, int height, uint format, uint type, int bufSize, void* data) + { + Context.glReadnPixels(x, y, width, height, format, type, bufSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBarrier() + { + Context.glTextureBarrier(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBuffer(GlHandle texture, uint internalformat, GlHandle buffer) + { + Context.glTextureBuffer(texture.Value, internalformat, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBufferRange(GlHandle texture, uint internalformat, GlHandle buffer, nint offset, nint size) + { + Context.glTextureBufferRange(texture.Value, internalformat, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTextureParameterIiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glTextureParameterIuiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, float param) + { + Context.glTextureParameterf(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) + { + fixed (float* paramPtr = param) + { + Context.glTextureParameterfv(texture.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, int param) + { + Context.glTextureParameteri(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glTextureParameteriv(texture.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage1D(GlHandle texture, int levels, uint internalformat, int width) + { + Context.glTextureStorage1D(texture.Value, levels, internalformat, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage2D(GlHandle texture, int levels, uint internalformat, int width, int height) + { + Context.glTextureStorage2D(texture.Value, levels, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage2DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTextureStorage2DMultisample(texture.Value, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage3D(GlHandle texture, int levels, uint internalformat, int width, int height, int depth) + { + Context.glTextureStorage3D(texture.Value, levels, internalformat, width, height, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage3DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTextureStorage3DMultisample(texture.Value, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, uint type, void* pixels) + { + Context.glTextureSubImage1D(texture.Value, level, xoffset, width, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + { + Context.glTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) + { + Context.glTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackBufferBase(uint xfb, uint index, GlHandle buffer) + { + Context.glTransformFeedbackBufferBase(xfb, index, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackBufferRange(uint xfb, uint index, GlHandle buffer, nint offset, nint size) + { + Context.glTransformFeedbackBufferRange(xfb, index, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte UnmapNamedBuffer(GlHandle buffer) + { + return Context.glUnmapNamedBuffer(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribBinding(uint vaobj, uint attribindex, uint bindingindex) + { + Context.glVertexArrayAttribBinding(vaobj, attribindex, bindingindex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribFormat(uint vaobj, uint attribindex, int size, uint type, byte normalized, uint relativeoffset) + { + Context.glVertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribIFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribLFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayBindingDivisor(uint vaobj, uint bindingindex, uint divisor) + { + Context.glVertexArrayBindingDivisor(vaobj, bindingindex, divisor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayElementBuffer(uint vaobj, GlHandle buffer) + { + Context.glVertexArrayElementBuffer(vaobj, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayVertexBuffer(uint vaobj, uint bindingindex, GlHandle buffer, nint offset, int stride) + { + Context.glVertexArrayVertexBuffer(vaobj, bindingindex, buffer.Value, offset, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayVertexBuffers(uint vaobj, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (strides.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) + { + Context.glVertexArrayVertexBuffers(vaobj, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); + } + } + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_6.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_6.g.cs new file mode 100644 index 00000000..2cfb253d --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Raw.v4_6.g.cs @@ -0,0 +1,51 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.6 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArraysIndirectCount(uint mode, void* indirect, nint drawcount, int maxdrawcount, int stride) + { + Context.glMultiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirectCount(uint mode, uint type, void* indirect, nint drawcount, int maxdrawcount, int stride) + { + Context.glMultiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonOffsetClamp(float factor, float units, float clamp) + { + Context.glPolygonOffsetClamp(factor, units, clamp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SpecializeShader(GlHandle shader, ReadOnlySpan pEntryPoint, ReadOnlySpan pConstantIndex, ReadOnlySpan pConstantValue) + { + if (pConstantValue.Length != pConstantIndex.Length) { + throw new ArgumentException("Span lengths controlled by numSpecializationConstants must match.", nameof(pConstantValue)); + } + fixed (byte* pEntryPointPtr = pEntryPoint) + { + fixed (uint* pConstantIndexPtr = pConstantIndex) + { + fixed (uint* pConstantValuePtr = pConstantValue) + { + Context.glSpecializeShader(shader.Value, pEntryPointPtr, checked((uint)pConstantIndex.Length), pConstantIndexPtr, pConstantValuePtr); + } + } + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs new file mode 100644 index 00000000..71e949cf --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs @@ -0,0 +1,261 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 3.3 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1f(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (float* valuesPtr = values) { + Context.glUniform1fv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1i(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (int* valuesPtr = values) { + Context.glUniform1iv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1ui(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (uint* valuesPtr = values) { + Context.glUniform1uiv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2f(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform2fv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2i(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform2iv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2ui(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform2uiv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform3fv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1, int v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3i(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform3iv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3ui(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform3uiv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2, float v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform4fv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1, int v2, int v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4i(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform4iv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2, uint v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4ui(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform4uiv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec2 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec3 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec4 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, GraphicsMatrix value, bool transpose = false) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs new file mode 100644 index 00000000..58e8a5a3 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs @@ -0,0 +1,87 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 4.0 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1d(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (double* valuesPtr = values) { + Context.glUniform1dv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2d(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform2dv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1, double v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3d(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform3dv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1, double v2, double v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4d(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform4dv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs new file mode 100644 index 00000000..c9d5c485 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs @@ -0,0 +1,334 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 4.1 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1d(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (double* valuesPtr = values) { + Context.glProgramUniform1dv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1f(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (float* valuesPtr = values) { + Context.glProgramUniform1fv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1i(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (int* valuesPtr = values) { + Context.glProgramUniform1iv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1ui(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (uint* valuesPtr = values) { + Context.glProgramUniform1uiv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2d(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform2dv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2f(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2i(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform2iv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2ui(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform2uiv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3d(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform3dv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3f(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3i(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform3iv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3ui(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform3uiv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2, double v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4d(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform4dv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2, float v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4f(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2, int v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4i(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform4iv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2, uint v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4ui(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform4uiv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec2 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec3 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec4 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, GraphicsMatrix value, bool transpose = false) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniformMatrix4fv(program.Value, uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); + } + + } +} diff --git a/src/StgSharp.Graphics/OpenGL/glContext.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs similarity index 85% rename from src/StgSharp.Graphics/OpenGL/glContext.cs rename to src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs index 0a53fd7b..05e23dba 100644 --- a/src/StgSharp.Graphics/OpenGL/glContext.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs @@ -1,10 +1,7 @@ -// ----------------------------------------------------------------------------- -// file="glContext" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Aggregated GL3+ commands +// using System; using System.Runtime.CompilerServices; @@ -12,7 +9,6 @@ namespace StgSharp.Graphics.OpenGL { public unsafe partial struct OpenglContext { - internal unsafe delegate* glActiveShaderProgram; internal unsafe delegate* glActiveTexture; internal unsafe delegate* glAttachShader; @@ -23,9 +19,9 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glBindAttribLocation; internal unsafe delegate* glBindBuffer; internal unsafe delegate* glBindBufferBase; - internal unsafe delegate* glBindBufferRange; + internal unsafe delegate* glBindBufferRange; internal unsafe delegate* glBindBuffersBase; - internal unsafe delegate* glBindBuffersRange; + internal unsafe delegate* glBindBuffersRange; internal unsafe delegate* glBindFragDataLocation; internal unsafe delegate* glBindFragDataLocationIndexed; internal unsafe delegate* glBindFramebuffer; @@ -36,65 +32,65 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glBindSampler; internal unsafe delegate* glBindSamplers; internal unsafe delegate* glBindTexture; - internal unsafe delegate* glBindTextures; 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* glBlendEquationi; internal unsafe delegate* glBlendEquationSeparate; internal unsafe delegate* glBlendEquationSeparatei; + internal unsafe delegate* glBlendEquationi; internal unsafe delegate* glBlendFunc; - internal unsafe delegate* glBlendFunci; 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* 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* glClearBufferData; + internal unsafe delegate* glClearBufferSubData; 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* glClearDepth; internal unsafe delegate* glClearDepthf; - internal unsafe delegate* glClearNamedBufferData; - internal unsafe delegate* glClearNamedBufferSubData; + 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* 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* 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* glCopyNamedBufferSubData; internal unsafe delegate* glCopyTexImage1D; internal unsafe delegate* glCopyTexImage2D; internal unsafe delegate* glCopyTexSubImage1D; @@ -111,12 +107,12 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCreateRenderbuffers; internal unsafe delegate* glCreateSamplers; internal unsafe delegate* glCreateShader; - internal unsafe delegate* glCreateShaderProgramv; + 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* glDebugMessageCallback; internal unsafe delegate* glDebugMessageControl; internal unsafe delegate* glDebugMessageInsert; internal unsafe delegate* glDeleteBuffers; @@ -135,38 +131,38 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glDepthMask; internal unsafe delegate* glDepthRange; internal unsafe delegate* glDepthRangeArrayv; - internal unsafe delegate* glDepthRangef; internal unsafe delegate* glDepthRangeIndexed; + internal unsafe delegate* glDepthRangef; internal unsafe delegate* glDetachShader; internal unsafe delegate* glDisable; - internal unsafe delegate* glDisablei; 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* 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* 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* glEnablei; internal unsafe delegate* glEnableVertexArrayAttrib; internal unsafe delegate* glEnableVertexAttribArray; + internal unsafe delegate* glEnablei; internal unsafe delegate* glEndConditionalRender; internal unsafe delegate* glEndQuery; internal unsafe delegate* glEndQueryIndexed; @@ -174,8 +170,8 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glFenceSync; internal unsafe delegate* glFinish; internal unsafe delegate* glFlush; - internal unsafe delegate* glFlushMappedBufferRange; - internal unsafe delegate* glFlushMappedNamedBufferRange; + internal unsafe delegate* glFlushMappedBufferRange; + internal unsafe delegate* glFlushMappedNamedBufferRange; internal unsafe delegate* glFramebufferParameteri; internal unsafe delegate* glFramebufferRenderbuffer; internal unsafe delegate* glFramebufferTexture; @@ -185,8 +181,6 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glFramebufferTextureLayer; internal unsafe delegate* glFrontFace; internal unsafe delegate* glGenBuffers; - internal unsafe delegate* glGenerateMipmap; - internal unsafe delegate* glGenerateTextureMipmap; internal unsafe delegate* glGenFramebuffers; internal unsafe delegate* glGenProgramPipelines; internal unsafe delegate* glGenQueries; @@ -195,27 +189,29 @@ namespace StgSharp.Graphics.OpenGL 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* glGetActiveSubroutineUniformiv; internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveSubroutineUniformiv; internal unsafe delegate* glGetActiveUniform; - internal unsafe delegate* glGetActiveUniformBlockiv; 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* 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* 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; @@ -227,105 +223,105 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetFramebufferAttachmentParameteriv; internal unsafe delegate* glGetFramebufferParameteriv; internal unsafe delegate* glGetGraphicsResetStatus; - internal unsafe delegate* glGetInteger64i_v; - internal unsafe delegate* glGetInteger64v; + 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* glGetInternalformati64v; internal unsafe delegate* glGetInternalformativ; internal unsafe delegate* glGetMultisamplefv; - internal unsafe delegate* glGetNamedBufferParameteri64v; + internal unsafe delegate* glGetNamedBufferParameteri64v; internal unsafe delegate* glGetNamedBufferParameteriv; - internal unsafe delegate* glGetNamedBufferPointerv; - internal unsafe delegate* glGetNamedBufferSubData; + internal unsafe delegate* glGetNamedBufferPointerv; + internal unsafe delegate* glGetNamedBufferSubData; internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; internal unsafe delegate* glGetNamedFramebufferParameteriv; internal unsafe delegate* glGetNamedRenderbufferParameteriv; - 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* glGetObjectPtrLabel; + internal unsafe delegate* glGetPointerv; + internal unsafe delegate* glGetProgramBinary; internal unsafe delegate* glGetProgramInfoLog; internal unsafe delegate* glGetProgramInterfaceiv; - 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* 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* glGetQueryiv; - internal unsafe delegate* glGetQueryObjecti64v; + internal unsafe delegate* glGetQueryObjecti64v; internal unsafe delegate* glGetQueryObjectiv; - internal unsafe delegate* glGetQueryObjectui64v; + internal unsafe delegate* glGetQueryObjectui64v; internal unsafe delegate* glGetQueryObjectuiv; + internal unsafe delegate* glGetQueryiv; internal unsafe delegate* glGetRenderbufferParameteriv; - internal unsafe delegate* glGetSamplerParameterfv; internal unsafe delegate* glGetSamplerParameterIiv; internal unsafe delegate* glGetSamplerParameterIuiv; + internal unsafe delegate* glGetSamplerParameterfv; internal unsafe delegate* glGetSamplerParameteriv; internal unsafe delegate* glGetShaderInfoLog; - internal unsafe delegate* glGetShaderiv; 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* glGetTexImage; internal unsafe delegate* glGetTexLevelParameterfv; internal unsafe delegate* glGetTexLevelParameteriv; - internal unsafe delegate* glGetTexParameterfv; internal unsafe delegate* glGetTexParameterIiv; internal unsafe delegate* glGetTexParameterIuiv; + internal unsafe delegate* glGetTexParameterfv; internal unsafe delegate* glGetTexParameteriv; - internal unsafe delegate* glGetTextureImage; + internal unsafe delegate* glGetTextureImage; internal unsafe delegate* glGetTextureLevelParameterfv; internal unsafe delegate* glGetTextureLevelParameteriv; - internal unsafe delegate* glGetTextureParameterfv; internal unsafe delegate* glGetTextureParameterIiv; internal unsafe delegate* glGetTextureParameterIuiv; + internal unsafe delegate* glGetTextureParameterfv; internal unsafe delegate* glGetTextureParameteriv; - internal unsafe delegate* glGetTextureSubImage; - internal unsafe delegate* glGetTransformFeedbacki_v; - internal unsafe delegate* glGetTransformFeedbacki64_v; - internal unsafe delegate* glGetTransformFeedbackiv; + 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* glGetUniformdv; - internal unsafe delegate* glGetUniformfv; - internal unsafe delegate* glGetUniformIndices; - internal unsafe delegate* glGetUniformiv; + 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* glGetVertexArrayIndexed64iv; internal unsafe delegate* glGetVertexArrayIndexediv; internal unsafe delegate* glGetVertexArrayiv; - internal unsafe delegate* glGetVertexAttribdv; - internal unsafe delegate* glGetVertexAttribfv; internal unsafe delegate* glGetVertexAttribIiv; internal unsafe delegate* glGetVertexAttribIuiv; - internal unsafe delegate* glGetVertexAttribiv; internal unsafe delegate* glGetVertexAttribLdv; - internal unsafe delegate* glGetVertexAttribPointerv; + 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* glInvalidateBufferSubData; internal unsafe delegate* glInvalidateFramebuffer; internal unsafe delegate* glInvalidateNamedFramebufferData; internal unsafe delegate* glInvalidateNamedFramebufferSubData; @@ -350,22 +346,22 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glLinkProgram; internal unsafe delegate* glLogicOp; internal unsafe delegate* glMapBuffer; - internal unsafe delegate* glMapBufferRange; + internal unsafe delegate* glMapBufferRange; internal unsafe delegate* glMapNamedBuffer; - internal unsafe delegate* glMapNamedBufferRange; + 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* 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; @@ -376,7 +372,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glNamedRenderbufferStorage; internal unsafe delegate* glNamedRenderbufferStorageMultisample; internal unsafe delegate* glObjectLabel; - internal unsafe delegate* glObjectPtrLabel; + internal unsafe delegate* glObjectPtrLabel; internal unsafe delegate* glPatchParameterfv; internal unsafe delegate* glPatchParameteri; internal unsafe delegate* glPauseTransformFeedback; @@ -392,7 +388,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glPolygonOffsetClamp; internal unsafe delegate* glPopDebugGroup; internal unsafe delegate* glPrimitiveRestartIndex; - internal unsafe delegate* glProgramBinary; + internal unsafe delegate* glProgramBinary; internal unsafe delegate* glProgramParameteri; internal unsafe delegate* glProgramUniform1d; internal unsafe delegate* glProgramUniform1dv; @@ -448,25 +444,25 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glPushDebugGroup; internal unsafe delegate* glQueryCounter; internal unsafe delegate* glReadBuffer; - internal unsafe delegate* glReadnPixels; - internal unsafe delegate* glReadPixels; + 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* glSamplerParameterIiv; - internal unsafe delegate* glSamplerParameterIuiv; 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* glShaderBinary; internal unsafe delegate* glShaderSource; internal unsafe delegate* glShaderStorageBlockBinding; internal unsafe delegate* glSpecializeShader; @@ -477,47 +473,47 @@ namespace StgSharp.Graphics.OpenGL 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* glTexBufferRange; + internal unsafe delegate* glTexImage1D; + internal unsafe delegate* glTexImage2D; internal unsafe delegate* glTexImage2DMultisample; - internal unsafe delegate* glTexImage3D; + 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* glTexParameterIiv; - internal unsafe delegate* glTexParameterIuiv; 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* glTexSubImage1D; + internal unsafe delegate* glTexSubImage2D; + internal unsafe delegate* glTexSubImage3D; internal unsafe delegate* glTextureBarrier; internal unsafe delegate* glTextureBuffer; - internal unsafe delegate* glTextureBufferRange; + 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* glTextureParameterIiv; - internal unsafe delegate* glTextureParameterIuiv; 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* 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* glTransformFeedbackBufferRange; + internal unsafe delegate* glTransformFeedbackVaryings; internal unsafe delegate* glUniform1d; internal unsafe delegate* glUniform1dv; internal unsafe delegate* glUniform1f; @@ -602,12 +598,6 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVertexAttrib3fv; internal unsafe delegate* glVertexAttrib3s; internal unsafe delegate* glVertexAttrib3sv; - 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* glVertexAttrib4Nbv; internal unsafe delegate* glVertexAttrib4Niv; internal unsafe delegate* glVertexAttrib4Nsv; @@ -615,6 +605,12 @@ namespace StgSharp.Graphics.OpenGL 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; @@ -644,7 +640,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVertexAttribI4uiv; internal unsafe delegate* glVertexAttribI4usv; internal unsafe delegate* glVertexAttribIFormat; - internal unsafe delegate* glVertexAttribIPointer; + internal unsafe delegate* glVertexAttribIPointer; internal unsafe delegate* glVertexAttribL1d; internal unsafe delegate* glVertexAttribL1dv; internal unsafe delegate* glVertexAttribL2d; @@ -654,7 +650,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVertexAttribL4d; internal unsafe delegate* glVertexAttribL4dv; internal unsafe delegate* glVertexAttribLFormat; - internal unsafe delegate* glVertexAttribLPointer; + internal unsafe delegate* glVertexAttribLPointer; internal unsafe delegate* glVertexAttribP1ui; internal unsafe delegate* glVertexAttribP1uiv; internal unsafe delegate* glVertexAttribP2ui; @@ -663,13 +659,12 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVertexAttribP3uiv; internal unsafe delegate* glVertexAttribP4ui; internal unsafe delegate* glVertexAttribP4uiv; - internal unsafe delegate* glVertexAttribPointer; + 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; - + internal unsafe delegate* glWaitSync; } } diff --git a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs index b48d4da8..42a467de 100644 --- a/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/src/StgSharp.Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -5,11 +5,6 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Graphics; -using StgSharp.Mathematics.Graphics; -using System.Diagnostics.CodeAnalysis; -using System.Runtime.CompilerServices; - namespace StgSharp.Graphics.OpenGL { public class Uniform @@ -120,86 +115,4 @@ namespace StgSharp.Graphics.OpenGL } - public unsafe partial class OpenGLFunction - { - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue( - [NotNull] Uniform uniform, - GraphicsMatrix mat - ) - { - Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, (byte)0, (float*)&mat); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue( - [NotNull]Uniform uniform, - Vec4 vec - ) - { - Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue( - [NotNull]Uniform uniform, - Vec4 vec - ) - { - Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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 - ) - { - Context.glUniform1i(uniform.id.SignedValue, i0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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 - ) - { - Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue( - [NotNull] Uniform uniform, - float v0, - float v1, - float v2, - float v3 - ) - { - Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); - } - - } -} \ No newline at end of file +} diff --git a/src/StgSharp.Graphics/OpenGL/glFunction.cs b/src/StgSharp.Graphics/OpenGL/glFunction.cs deleted file mode 100644 index 717d3ce5..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.cs +++ /dev/null @@ -1,794 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -using StgSharp.Graphics; -using StgSharp.Graphics; -using StgSharp.Internal; -using StgSharp.Mathematics; -using StgSharp.Mathematics.Numeric; - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics; -using System.Numerics; -using System.Runtime.CompilerServices; -using System.Runtime.ExceptionServices; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading; - -namespace StgSharp.Graphics.OpenGL -{ - public unsafe partial class OpenGLFunction - { - - private static readonly Dictionary contextToGLMap = []; - private static readonly ThreadLocal _currentGL = new ThreadLocal(); - private OpenglContext* _context; - - private Lazy _attachmentColorRange; - - private OpenGLFunction() - { - textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS; - UnusedTextureImageUint = []; - _attachmentColorRange = new Lazy( - () => GetMaskInteger((uint)glConst.MAX_COLOR_ATTACHMENTS)); - } - - public int AttachmentColorRange => _attachmentColorRange.Value; - - public static OpenGLFunction CurrentGL - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => _currentGL.Value!; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal set => _currentGL.Value = value; - } - - internal IntPtr ContextHandle => (IntPtr)_context; - - protected ref OpenglContext Context - { - get - { - #if DEBUG - ArgumentNullException.ThrowIfNull(_context, nameof(_context)); - #endif - return ref (*_context); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ActiveTextureUnit( - uint type - ) - { - _context->glActiveTexture(type); - } - - [Conditional("DEBUG")] - public void Assert( - bool shouldReportWhenNormal - ) - { - uint code = _context->glGetError(); - if (code != glConst.NO_ERROR) { - throw new GlExecutionException(code); - } - if (shouldReportWhenNormal) { - Console.WriteLine("OpenGL runs normally"); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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 . - /// - /// - /// The frame BufferHandle target of the binding operation. - /// - /// - /// The handle of the frame BufferHandle object to bind. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFrameBuffer( - FrameBufferTarget target, - GlHandle handle - ) - { - _context->glBindFramebuffer((uint)target, handle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindRenderBuffer( - GlHandle handle - ) - { - _context->glBindRenderbuffer(glConst.RENDERBUFFER, handle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexArray( - GlHandle handle - ) - { - _context->glBindVertexArray(handle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FrameBufferStatus CheckFrameBufferStatus( - FrameBufferTarget target - ) - { - return (FrameBufferStatus)_context->glCheckFramebufferStatus((uint)target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Clear( - MaskBufferBit mask - ) - { - _context->glClear((uint)mask); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ClearError() - { - uint code = 0; - for (int i = 0; i < 1024; i++) - { - code = _context->glGetError(); - if (code == 0) { - return; - } - - // Console.WriteLine(code); - } - foreach (ProcessThread thread in Process.GetCurrentProcess().Threads) { - Debugger.Break(); - } - throw new GlErrorOverflowException(1024, code); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void ClearGraphicError() - { - while (_context->glGetError() != 0) { } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CombineFrameBufferRenderBuffer( - FrameBufferAttachment attachment, - GlHandle rboHandle - ) - { - _context->glFramebufferRenderbuffer(glConst.FRAMEBUFFER, (uint)attachment, - glConst.RENDERBUFFER, rboHandle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle CreateGraphicProgram() - { - return GlHandle.Create(_context->glCreateProgram()); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] CreateProgram( - int count - ) - { - GlHandle[] h = new GlHandle[count]; - for (int i = 0; i < count; i++) { - h.SetValue(i, _context->glCreateProgram()); - } - return h; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle[] CreateShaderSet( - int count, - ShaderType type - ) - { - GlHandle[] ret = new GlHandle[count]; - uint t = (uint)type; - for (int i = 0; i < count; i++) - { - uint id = _context->glCreateShader(t); - if (id == 0) - { - uint error = _context->glGetError(); - throw new InvalidOperationException($"Failed in creating shader: {error}"); - } - ret[i] = GlHandle.Create(id); - } - return ret; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffer( - GlHandle handle - ) - { - _context->glDeleteBuffers(1, (uint*)&handle); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffers( - GlHandle[] handle - ) - { - if ((handle == null) || (handle.Length == 0)) { - throw new ArgumentNullException(nameof(handle)); - } - fixed (GlHandle* hptr = handle) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < handle.Length; i++) { - _context->glDeleteBuffers(1, iptr + i); - } - } - } - - /// - /// 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. - /// - /// - /// Handle to BufferHandle to delete. - /// - public unsafe void DeleteRenderBuffer( - GlHandle bufferHandle - ) - { - _context->glDeleteRenderbuffers(1, &bufferHandle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteVertexArrays( - GlHandle[] arrays - ) - { - fixed (GlHandle* hptr = arrays) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < arrays.Length; i++) { - _context->glDeleteVertexArrays(1, iptr + i); - } - } - } - - public void DepthMaskAccess( - bool isWrite - ) - { - _context->glDepthMask(isWrite ? (byte)1 : (byte)0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Disable( - glOperation operation - ) - { - _context->glDisable((uint)operation); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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, - int count, - TypeCode type, - IntPtr ptr - ) - { - uint a; - a = type switch - { - 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->glDrawElements((uint)mode, count, a, (nint*)ptr); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DrawElementsInstanced( - GeometryType mode, - int count, - TypeCode type, - IntPtr ptr, - int amount - ) - { - uint a; - a = type switch - { - 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 - ) - { - _context->glEnable((uint)operation); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrameBufferTexture2d( - FrameBufferTarget target, - uint attachment, - Texture2DTarget texTarget, - GlHandle textureHandle, - int level - ) - { - _context->glFramebufferTexture2D((uint)target, attachment, (uint)texTarget, - textureHandle.Value, level); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenBuffers( - int count - ) - { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - for (int i = 0; i < count; i++) { - _context->glGenBuffers(count, ((uint*)hptr) + i); - } - } - return h; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenRenderBuffer( - int count - ) - { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) { - _context->glGenRenderbuffers(count, (uint*)hptr); - } - return h; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenTextures( - int count - ) - { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) { - _context->glGenTextures(count, (uint*)hptr); - } - return h; - } - - public unsafe GlHandle[] GenVertexArrays( - int count - ) - { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) { - _context->glGenVertexArrays(count, (uint*)hptr); - } - return h; - } - - public unsafe int GetMaskInteger( - uint statusCode - ) - { - int ret = 0; - _context->glGetIntegerv(statusCode, &ret); - return ret; - } - - 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) { - return Marshal.PtrToStringAnsi(sptr); - } - return string.Empty; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void GetTextureImage( - Texture2DTarget target, - int level, - ImageChannel channel, - PixelChannelLayout channelLayout, - T[] dataStream - ) where T : unmanaged,INumber - { - fixed (T* tptr = dataStream) { - _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 - ) - { - fixed (int* iptr = &propertyValue) { - _context->glGetTexLevelParameteriv(textureTypeMask, level, propertyMask, iptr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle GetUniformLocation( - GlHandle program, - string name - ) - { - byte[] code = Encoding.UTF8.GetBytes(name); - fixed (byte* ptr = code) - { - int ret = _context->glGetUniformLocation(program.Value, ptr); - #if DEBUG - if ((ret == glConst.INVALID_OPERATION) || (ret == glConst.INVALID_VALUE)) - { - throw new InvalidOperationException(); - } - if (ret == -1) { - throw new UniformEmptyReferenceException(nameof(program), name); - } - #endif - return GlHandle.CreateSigned(ret); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - byte[] codeStream - ) - { - fixed (byte* streamPtr = codeStream) { - _context->glShaderSource(shaderHandle.Value, 1, &streamPtr, (int*)0); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - ReadOnlySpan codeStream - ) - { - fixed (char* streamPtr = codeStream) { - _context->glShaderSource(shaderHandle.Value, 1, (byte**)&streamPtr, (int*)0); - } - } - - public unsafe void LoadShaderSource( - GlHandle shaderHandle, - ReadOnlySpan codeStream - ) - { - fixed (byte* streamPtr = codeStream) - { - byte* bptr = streamPtr; - _context->glShaderSource(shaderHandle.Value, 1, &bptr, (int*)0); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PolygonMode( - FaceMode mode - ) - { - _context->glPolygonMode(glConst.FRONT_AND_BACK, (uint)mode); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ReadPixels( - (int X, int Y) beginPosition, - (int width, int height) size, - FrameBufferChannel format, - PixelChannelLayout dataType, - ref byte[] stream - ) - { - fixed (byte* bptr = stream) { - _context->glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, - (uint)format, (uint)dataType, (nint*)bptr); - } - } - - public void RereadImage( - in Image i, - (int X, int Y) beginPosition, - FrameBufferChannel format, - 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, (nint*)bptr); - } - i.PixelUpdateCount++; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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, (nuint)size, (nint*)p, (uint)usage); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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) { - return; - } - - fixed (void* bufferPtr = bufferArray) { - _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 - { - int size = bufferSpan.Length * Marshal.SizeOf(); - if (bufferSpan.IsEmpty) { - return; - } - - fixed (void* bufferPtr = bufferSpan) { - _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 - { - int size = bufferArray.Length * Marshal.SizeOf(); - if (bufferArray.IsEmpty) { - return; - } - - - fixed (void* bufferPtr = bufferArray) { - _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 - { - int size = bufferSpan.Length * Marshal.SizeOf(); - - fixed (void* bufferPtr = bufferSpan) { - _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 - { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) { - return; - } - fixed (void* bufferPtr = bufferArray) { - _context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr, - (uint)usage); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetRenderBufferStorage( - RenderBufferInternalFormat internalFormat, - (int width, int height) size - ) - { - _context->glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, size.width, - size.height); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetRenderBufferStorage( - RenderBufferInternalFormat internalFormat, - (uint width, uint height) size - ) - { - _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, - int stride, - int pointer - ) - { - uint type = GraphicFramework.GLtype[(int)t]; - _context->glVertexAttribPointer(index, size, type, (byte)(normalized ? 1 : 0), stride, - (nint*)pointer); - _context->glEnableVertexAttribArray(index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d( - Texture2DTarget target, - int level, - ImageChannel sourceChannel, - int width, - int height, - ImageChannel targetChannel, - PixelChannelLayout type, - 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, (int)sourceChannel, width, height, 0, - (uint)targetChannel, (uint)type, (nint*)tptr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d( - Texture2DTarget target, - int level, - ImageChannel sourceChannel, - int width, - int height, - ImageChannel targetChannel, - PixelChannelLayout type, - Span pixelSpan - ) where T : unmanaged, INumber - { - fixed (T* tPtr = pixelSpan) { - _context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0, - (uint)targetChannel, (uint)type, (nint*)tPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter( - int target, - uint pname, - int param - ) - { - _context->glTexParameteri((uint)target, pname, param); - } - - public static bool TryGetFunctionPackage( - IntPtr handle, - out OpenGLFunction functionPackage - ) - { - return contextToGLMap.TryGetValue(handle, out functionPackage); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttributeDivisor( - uint layoutIndex, - uint divisor - ) - { - _context->glVertexAttribDivisor(layoutIndex, divisor); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void WaitAccomplishment() - { - _context->glFinish(); - } - - internal static OpenGLFunction BuildGlFunctionPackage( - IntPtr handle - ) - { - if (contextToGLMap.TryGetValue(handle, out OpenGLFunction pack)) { - return pack; - } - pack = new OpenGLFunction - { - _context = (OpenglContext*)handle - }; - contextToGLMap.Add(handle, pack); - return pack; - } - - ~OpenGLFunction() - { - _ = contextToGLMap.Remove(ContextHandle); - } - - } -} - diff --git a/src/StgSharp.Graphics/OpenGL/glFunction.v3_3.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v3_3.cs deleted file mode 100644 index 836e7108..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v3_3.cs +++ /dev/null @@ -1,3774 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v3_3" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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( - Texture2DTarget target - ) - { - _context->glGenerateMipmap((uint)target); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenFrameBuffers( - Span frameBuffers - ) - { - fixed (GlHandle* hPtr = frameBuffers) { - _context->glGenFramebuffers(frameBuffers.Length, (uint*)hPtr); - } - } - - [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/src/StgSharp.Graphics/OpenGL/glFunction.v4_0.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_0.cs deleted file mode 100644 index 10dc39d1..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_0.cs +++ /dev/null @@ -1,524 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_0" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_1.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_1.cs deleted file mode 100644 index aecc4184..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_1.cs +++ /dev/null @@ -1,1085 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_1" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_2.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_2.cs deleted file mode 100644 index f36b350d..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_2.cs +++ /dev/null @@ -1,170 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_2" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_3.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_3.cs deleted file mode 100644 index 32cd77a9..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_3.cs +++ /dev/null @@ -1,564 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_3" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_4.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_4.cs deleted file mode 100644 index ae453334..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_4.cs +++ /dev/null @@ -1,159 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_4" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_5.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_5.cs deleted file mode 100644 index 86f79d34..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_5.cs +++ /dev/null @@ -1,1335 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_5" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/OpenGL/glFunction.v4_6.cs b/src/StgSharp.Graphics/OpenGL/glFunction.v4_6.cs deleted file mode 100644 index b975f848..00000000 --- a/src/StgSharp.Graphics/OpenGL/glFunction.v4_6.cs +++ /dev/null @@ -1,82 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glFunction.v4_6" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -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/src/StgSharp.Graphics/glfw.cs b/src/StgSharp.Graphics/glfw.cs index b0cbbd56..72a7e2fe 100644 --- a/src/StgSharp.Graphics/glfw.cs +++ b/src/StgSharp.Graphics/glfw.cs @@ -1087,8 +1087,6 @@ namespace StgSharp.Graphics return _glfw.glfwGetRequiredInstanceExtensions(count); } + #endregion } } - -#endregion - diff --git a/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs b/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs index 17d9845f..40ece299 100644 --- a/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs +++ b/test/StgSharp.GenerateGL/CodeGen/CsTypeMapper.cs @@ -41,7 +41,7 @@ namespace GenerateGL.CodeGen return $"byte{new string('*', pointerLevel)}"; } - string mapped = MapType(param.CType, allowVoid:false); + string mapped = MapType(param.CType); if (pointerLevel > 0) { if (mapped == "void") { @@ -57,7 +57,7 @@ namespace GenerateGL.CodeGen int pointerLevel ) { - string mapped = MapType(cType, allowVoid:true); + string mapped = MapType(cType); if (pointerLevel > 0) { return $"{mapped}{new string('*', pointerLevel)}"; } @@ -70,12 +70,6 @@ namespace GenerateGL.CodeGen { 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) { @@ -88,7 +82,7 @@ namespace GenerateGL.CodeGen return $"byte{new string('*', pointerLevel)}"; } - string mapped = MapType(param.CType, allowVoid:false); + string mapped = MapType(param.CType); if (pointerLevel > 0) { if (mapped == "void") { @@ -104,29 +98,42 @@ namespace GenerateGL.CodeGen int pointerLevel ) { - string mapped = MapType(cType, allowVoid:true); + string mapped = MapType(cType); if (pointerLevel > 0) { return $"{mapped}{new string('*', pointerLevel)}"; } return mapped; } - public static bool TryMapConstPointerToSpan( - GlParam param, - out string spanElementType + public static bool IsHandleReturn( + GlCommand command ) { - spanElementType = string.Empty; - if (!param.IsConst || param.PointerLevel != 1) { + if (command.ReturnPointerLevel != 0 || + !command.ReturnType.Equals("GLuint", StringComparison.Ordinal)) { return false; } - string mapped = MapType(param.CType, allowVoid:false); + return command.Name is "glCreateProgram" or "glCreateShader" or + "glCreateShaderProgramv"; + } + + public static bool TryMapPointerElement( + GlParam param, + out string elementType + ) + { + elementType = string.Empty; + if (param.PointerLevel != 1) { + return false; + } + + string mapped = MapType(param.CType); if (mapped is "void") { return false; } - spanElementType = mapped; + elementType = mapped; return true; } @@ -150,41 +157,34 @@ namespace GenerateGL.CodeGen 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 + string cType ) { return cType switch { - "void" when allowVoid => "void", "GLenum" or "GLbitfield" => "uint", "GLboolean" => "byte", "GLuint" or "GLhandleARB" => "uint", "GLint" or "GLsizei" or "GLfixed" => "int", + "GLint64" => "long", + "GLuint64" => "ulong", "GLshort" => "short", "GLbyte" => "sbyte", "GLubyte" => "byte", "GLushort" => "ushort", "GLfloat" => "float", "GLdouble" => "double", - "GLclampf" or "GLclampd" => "float", + "GLhalf" => "ushort", + "GLclampf" => "float", + "GLclampd" => "double", "GLintptr" => "nint", - "GLsizeiptr" => "nuint", + "GLsizeiptr" => "nint", "GLchar" => "byte", - "GLsync" => "GLsync", - _ => allowVoid && cType == "void" ? "void" : "IntPtr" + "GLsync" => "glSync", + "GLDEBUGPROC" => "IntPtr", + "void" => "void", + _ => throw new NotSupportedException($"Unsupported OpenGL C type: {cType}") }; } diff --git a/test/StgSharp.GenerateGL/CodeGen/Generator.cs b/test/StgSharp.GenerateGL/CodeGen/Generator.cs index 8a889bd9..66744ba7 100644 --- a/test/StgSharp.GenerateGL/CodeGen/Generator.cs +++ b/test/StgSharp.GenerateGL/CodeGen/Generator.cs @@ -32,6 +32,7 @@ using System.Globalization; using System.IO; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace GenerateGL.CodeGen { @@ -69,6 +70,7 @@ namespace GenerateGL.CodeGen } Directory.CreateDirectory(_outputRoot); List all = new List(); + List<(string Version, List Commands)> commandsByVersion = new(); HashSet previous = new HashSet(StringComparer.Ordinal); foreach (string v in TargetVersions) { @@ -79,8 +81,15 @@ namespace GenerateGL.CodeGen previous.Add(cmd.Name); } all.AddRange(versionCmds); - WriteOpenGLFunctionFile(v, versionCmds); - WriteGlContextFile(v, versionCmds); + commandsByVersion.Add((v, versionCmds)); + } + + IReadOnlyDictionary managedNames = ManagedNameResolver.Resolve( + all.Where(ShouldGenerateWrapper)); + foreach ((string version, List commands) in commandsByVersion) + { + WriteOpenGLFunctionFile(version, commands, managedNames); + UniformOverloadEmitter.Write(_outputRoot, version, commands); } WriteMergedGlContextFile(all); WriteCommandHistoryFile(BuildCommandHistory()); @@ -249,41 +258,7 @@ namespace GenerateGL.CodeGen 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"); + string fileName = Path.Combine(_outputRoot, "GlCommandHistory.g.cs"); File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); } @@ -322,13 +297,14 @@ namespace GenerateGL.CodeGen sb.AppendLine(" }"); sb.AppendLine("}"); - string fileName = Path.Combine(_outputRoot, "glContext.cs"); + string fileName = Path.Combine(_outputRoot, "OpenglContext.g.cs"); File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); } private void WriteOpenGLFunctionFile( string version, - IReadOnlyList commands + IReadOnlyList commands, + IReadOnlyDictionary managedNames ) { StringBuilder sb = new StringBuilder(); @@ -341,33 +317,52 @@ namespace GenerateGL.CodeGen sb.AppendLine("{"); sb.AppendLine(" public unsafe partial class OpenGLFunction"); sb.AppendLine(" {"); - foreach (GlCommand cmd in commands.OrderBy(c => c!.Name, StringComparer.Ordinal)) + foreach (GlCommand cmd in commands.Where(ShouldGenerateWrapper) + .OrderBy(c => c!.Name, StringComparer.Ordinal)) { - string ret = CsTypeMapper.MapReturn(cmd.ReturnType, cmd.ReturnPointerLevel); + bool returnsHandle = CsTypeMapper.IsHandleReturn(cmd); + string ret = returnsHandle + ? "GlHandle" + : CsTypeMapper.MapReturn(cmd.ReturnType, cmd.ReturnPointerLevel); string rawName = cmd.Name; // original glXxx - string methodName = TrimGlPrefix(rawName); + string methodName = managedNames[rawName]; + ManagedCommandPlan commandPlan = ManagedCommandPlan.Create(cmd); List paramList = new List(); List callArgs = new List(); - List<(string Type,string Name)> pinned = new(); + List<(string Type,string Name,bool IsOut)> pinned = new(); + foreach (ManagedParameterPlan parameterPlan in commandPlan.PublicParameters) + { + GlParam p = parameterPlan.Source; + string pname = SafeName(p.Name); + paramList.Add($"{parameterPlan.PublicType} {pname}"); + if (parameterPlan.IsSpan) + { + pinned.Add((parameterPlan.ElementType!, pname, false)); + } else if (parameterPlan.Kind == ManagedParameterKind.Out) { + pinned.Add((parameterPlan.ElementType!, pname, true)); + } + } foreach (GlParam p in cmd.Parameters) { string pname = SafeName(p.Name); - if (CsTypeMapper.TryMapConstPointerToSpan(p, out string spanElementType)) + if (commandPlan.DerivedLengthSources.TryGetValue( + p.Name, out string? sourceSpanName)) + { + string nativeType = CsTypeMapper.MapParameter(p); + callArgs.Add($"checked(({nativeType}){SafeName(sourceSpanName)}.Length)"); + continue; + } + + ManagedParameterPlan parameterPlan = commandPlan.GetParameter(p.Name); + if (parameterPlan.IsSpan || parameterPlan.Kind == ManagedParameterKind.Out) { - paramList.Add($"ReadOnlySpan<{spanElementType}> {pname}"); - pinned.Add((spanElementType, pname)); callArgs.Add($"{pname}Ptr"); + } else if (parameterPlan.PublicType == "GlHandle") + { + callArgs.Add($"{pname}.Value"); } else { - string mapped = CsTypeMapper.MapParameter(p); - paramList.Add($"{mapped} {pname}"); - if (mapped == "GlHandle") - { - callArgs.Add($"{pname}.Value"); - } else - { - callArgs.Add(pname); - } + callArgs.Add(pname); } } string signature = string.Join(", ", paramList); @@ -375,20 +370,29 @@ namespace GenerateGL.CodeGen sb.AppendLine($" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); sb.AppendLine($" public {ret} {methodName}({signature})"); sb.AppendLine(" {"); + foreach ((string _, string name, bool isOut) in pinned.Where(p => p.IsOut)) { + sb.AppendLine($" {name} = default;"); + } + AppendSpanLengthGuards(sb, cmd, commandPlan); string prefix = ret == "void" ? string.Empty : "return "; + string callExpression = $"Context.{rawName}({call})"; + if (returnsHandle) { + callExpression = $"GlHandle.Create({callExpression})"; + } if (pinned.Count == 0) { - sb.AppendLine($" {prefix}Context.{rawName}({call});"); + sb.AppendLine($" {prefix}{callExpression};"); } else { string indent = " "; - foreach ((string Type, string Name) pin in pinned) + foreach ((string Type, string Name, bool IsOut) pin in pinned) { - sb.AppendLine($"{indent}fixed ({pin.Type}* {pin.Name}Ptr = {pin.Name})"); + string pinSource = pin.IsOut ? $"&{pin.Name}" : pin.Name; + sb.AppendLine($"{indent}fixed ({pin.Type}* {pin.Name}Ptr = {pinSource})"); sb.AppendLine($"{indent}{{"); indent += " "; } - sb.AppendLine($"{indent}{prefix}Context.{rawName}({call});"); + sb.AppendLine($"{indent}{prefix}{callExpression};"); for (int i = 0; i < pinned.Count; i++) { indent = indent.Substring(0, indent.Length - 4); @@ -401,10 +405,116 @@ namespace GenerateGL.CodeGen sb.AppendLine(" }"); sb.AppendLine("}"); - string fileName = Path.Combine(_outputRoot, $"glFunction.v{version.Replace('.', '_')}.cs"); + string fileName = Path.Combine( + _outputRoot, + $"OpenGLFunction.Raw.v{version.Replace('.', '_')}.g.cs"); File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); } + private static void AppendSpanLengthGuards( + StringBuilder sb, + GlCommand command, + ManagedCommandPlan plan + ) + { + foreach ((string lengthName, string sourceName) in plan.DerivedLengthSources) + { + foreach (ManagedParameterPlan related in command.Parameters + .Select(p => plan.GetParameter(p.Name)) + .Where(p => p.IsSpan && p.Source.Length == lengthName && + p.Source.Name != sourceName)) + { + string relatedName = SafeName(related.Source.Name); + string safeSourceName = SafeName(sourceName); + sb.AppendLine($" if ({relatedName}.Length != {safeSourceName}.Length) {{"); + sb.AppendLine($" throw new ArgumentException(\"Span lengths controlled by {lengthName} must match.\", nameof({relatedName}));"); + sb.AppendLine(" }"); + } + } + + foreach (ManagedParameterPlan parameter in command.Parameters + .Select(p => plan.GetParameter(p.Name)).Where(p => p.IsSpan)) + { + string? expectedLength = BuildExpectedLengthExpression(parameter.Source, plan); + if (expectedLength is null) { + continue; + } + + string parameterName = SafeName(parameter.Source.Name); + sb.AppendLine($" if ({parameterName}.Length < {expectedLength}) {{"); + sb.AppendLine($" throw new ArgumentException(\"Span is shorter than the OpenGL length expression '{parameter.Source.Length}'.\", nameof({parameterName}));"); + sb.AppendLine(" }"); + } + } + + private static string? BuildExpectedLengthExpression( + GlParam parameter, + ManagedCommandPlan plan + ) + { + string length = parameter.Length?.Replace(" ", string.Empty, + StringComparison.Ordinal) ?? string.Empty; + if (length.Length == 0 || length.StartsWith("COMPSIZE(", StringComparison.Ordinal) || + plan.DerivedLengthSources.ContainsKey(length)) { + return null; + } + + if (int.TryParse(length, NumberStyles.None, CultureInfo.InvariantCulture, + out int constantLength)) { + return constantLength.ToString(CultureInfo.InvariantCulture); + } + + ManagedParameterPlan? scalar = plan.PublicParameters.FirstOrDefault(p => + p.Source.PointerLevel == 0 && p.Source.Name == length); + if (scalar is not null) { + return $"checked((int){SafeName(length)})"; + } + + Match multiply = Regex.Match( + length, "^(?[A-Za-z_][A-Za-z0-9_]*)\\*(?[0-9]+)$", + RegexOptions.CultureInvariant); + if (!multiply.Success) { + multiply = Regex.Match( + length, "^(?[0-9]+)\\*(?[A-Za-z_][A-Za-z0-9_]*)$", + RegexOptions.CultureInvariant); + } + if (multiply.Success) { + return $"checked((int){SafeName(multiply.Groups["name"].Value)} * {multiply.Groups["factor"].Value})"; + } + + Match divide = Regex.Match( + length, "^(?[A-Za-z_][A-Za-z0-9_]*)/(?[0-9]+)$", + RegexOptions.CultureInvariant); + return divide.Success + ? $"checked((int){SafeName(divide.Groups["name"].Value)} / {divide.Groups["divisor"].Value})" + : null; + } + + private bool ShouldGenerateWrapper( + GlCommand command + ) + { + if (UniformOverloadEmitter.IsSetterCommand(command)) { + return false; + } + + return !IsRedundantVertexAttribVectorCommand(command); + } + + private bool IsRedundantVertexAttribVectorCommand( + GlCommand command + ) + { + string name = command.Name; + if (!name.StartsWith("glVertexAttrib", StringComparison.Ordinal) || + !name.EndsWith('v')) { + return false; + } + + string scalarCommandName = name.Substring(0, name.Length - 1); + return _commands.ContainsKey(scalarCommandName); + } + private enum CommandHistoryAction { diff --git a/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs b/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs index 899fe331..050fafd0 100644 --- a/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs +++ b/test/StgSharp.GenerateGL/CodeGen/GlXmlParser.cs @@ -101,7 +101,8 @@ namespace GenerateGL.CodeGen { 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)); + string? length = p.Attribute("len")?.Value; + parameters.Add(new GlParam(pName, cType, pointerLevel, isConst, length)); } if (!string.IsNullOrEmpty(name)) { diff --git a/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs b/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs new file mode 100644 index 00000000..62c26d19 --- /dev/null +++ b/test/StgSharp.GenerateGL/CodeGen/ManagedNameResolver.cs @@ -0,0 +1,140 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="ManagedNameResolver" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace GenerateGL.CodeGen +{ + internal static partial class ManagedNameResolver + { + + private static readonly HashSet TypedSuffixFamilies = new( + StringComparer.Ordinal) { + "ClearBuffer", "ClearNamedFramebuffer", "GetBufferParameter", + "GetNamedBufferParameter", "GetQueryBufferObject", "GetQueryObject", + "GetSamplerParameter", "GetTexLevelParameter", "GetTexParameter", + "GetTextureLevelParameter", "GetTextureParameter", "GetUniform", "GetnUniform", + "GetVertexAttrib", "PatchParameter", "PixelStore", "PointParameter", + "SamplerParameter", "TexParameter", "TextureParameter" + }; + + private static readonly Dictionary ExactCandidates = + new Dictionary(StringComparer.Ordinal) { + { "BlendEquationi", [ "BlendEquation" ] }, + { "BlendEquationSeparatei", [ "BlendEquationSeparate" ] }, + { "BlendFunci", [ "BlendFunc" ] }, + { "BlendFuncSeparatei", [ "BlendFuncSeparate" ] }, + { "ClearDepthf", [ "ClearDepth" ] }, + { "ColorMaski", [ "ColorMask" ] }, + { "DepthRangef", [ "DepthRange" ] }, + { "Disablei", [ "Disable" ] }, + { "Enablei", [ "Enable" ] }, + { "FramebufferParameteri", [ "FramebufferParameter" ] }, + { "GetStringi", [ "GetString" ] }, + { "IsEnabledi", [ "IsEnabled" ] }, + { "NamedFramebufferParameteri", [ "NamedFramebufferParameter" ] }, + { "ProgramParameteri", [ "ProgramParameter" ] }, + { "ScissorIndexedv", [ "ScissorIndexed" ] }, + { "ViewportIndexedf", [ "ViewportIndexed" ] }, + { "ViewportIndexedfv", [ "ViewportIndexed" ] } + }; + + public static IReadOnlyDictionary Resolve( + IEnumerable commands + ) + { + Dictionary result = new(StringComparer.Ordinal); + HashSet usedSignatures = new(StringComparer.Ordinal); + + foreach (GlCommand command in commands.OrderBy(c => c.Name, StringComparer.Ordinal)) + { + string signature = BuildParameterSignature(command); + foreach (string candidate in GetCandidates(command.Name)) + { + if (usedSignatures.Add($"{candidate}({signature})")) + { + result.Add(command.Name, candidate); + break; + } + } + } + + return result; + } + + private static string BuildParameterSignature( + GlCommand command + ) + { + ManagedCommandPlan plan = ManagedCommandPlan.Create(command); + return string.Join(",", plan.PublicParameters.Select(p => p.PublicType)); + } + + private static IEnumerable GetCandidates( + string glName + ) + { + string name = TrimGlPrefix(glName); + + Match vertexAttrib = VertexAttribRegex().Match(name); + if (vertexAttrib.Success) + { + string stem = vertexAttrib.Groups[1].Value; + string dimension = vertexAttrib.Groups[2].Value; + bool normalized = vertexAttrib.Groups[3].Success; + yield return normalized ? $"{stem}Normalized" : stem; + yield return normalized ? $"{stem}{dimension}Normalized" : $"{stem}{dimension}"; + yield return name; + yield break; + } + + Match typed = TypedSuffixRegex().Match(name); + if (typed.Success && TypedSuffixFamilies.Contains(typed.Groups[1].Value)) + { + string stem = typed.Groups[1].Value; + string suffix = typed.Groups[2].Value; + if (suffix.StartsWith('I')) { + yield return $"{stem}I"; + } + yield return stem; + yield return name; + yield break; + } + + if (ExactCandidates.TryGetValue(name, out string[]? candidates)) + { + foreach (string candidate in candidates) { + yield return candidate; + } + } + + yield return name; + } + + private static string TrimGlPrefix( + string name + ) + { + return name.StartsWith("gl", StringComparison.Ordinal) && name.Length > 2 + ? name.Substring(2) + : name; + } + + [GeneratedRegex("^(VertexAttrib(?:I|L|P)?)([1-4])(N)?(?:ui|ub|us|i|b|s|f|d)(v)?$", + RegexOptions.CultureInvariant)] + private static partial Regex VertexAttribRegex(); + + [GeneratedRegex("^(.+?)(Iuiv|Iiv|ui64v|i64v|uiv|ui|iv|fi|i|fv|f|dv|d)$", + RegexOptions.CultureInvariant)] + private static partial Regex TypedSuffixRegex(); + + } +} diff --git a/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs b/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs new file mode 100644 index 00000000..c79caafb --- /dev/null +++ b/test/StgSharp.GenerateGL/CodeGen/ManagedParameterPlanner.cs @@ -0,0 +1,138 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="ManagedParameterPlanner" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; + +namespace GenerateGL.CodeGen +{ + internal enum ManagedParameterKind + { + + Value, + RawPointer, + ReadOnlySpan, + Span, + Out + + } + + internal sealed record ManagedParameterPlan( + GlParam Source, + string PublicType, + ManagedParameterKind Kind, + string? ElementType + ) + { + + public bool IsSpan => Kind is ManagedParameterKind.ReadOnlySpan or + ManagedParameterKind.Span; + + } + + internal sealed class ManagedCommandPlan + { + + private readonly Dictionary _allParameters; + private readonly Dictionary _derivedLengthSources; + + private ManagedCommandPlan( + IReadOnlyList publicParameters, + Dictionary allParameters, + Dictionary derivedLengthSources + ) + { + PublicParameters = publicParameters; + _allParameters = allParameters; + _derivedLengthSources = derivedLengthSources; + } + + public IReadOnlyList PublicParameters { get; } + + public IReadOnlyDictionary DerivedLengthSources => + _derivedLengthSources; + + public static ManagedCommandPlan Create( + GlCommand command + ) + { + Dictionary all = new(StringComparer.Ordinal); + foreach (GlParam parameter in command.Parameters) + { + ManagedParameterPlan plan; + if (CsTypeMapper.TryMapPointerElement(parameter, out string elementType) && + (parameter.IsConst || !string.IsNullOrWhiteSpace(parameter.Length) || + command.Name.StartsWith("glGet", StringComparison.Ordinal))) + { + if (!parameter.IsConst && parameter.Length == "1") + { + plan = new ManagedParameterPlan( + parameter, $"out {elementType}", ManagedParameterKind.Out, + elementType); + } else + { + ManagedParameterKind kind = parameter.IsConst + ? ManagedParameterKind.ReadOnlySpan + : ManagedParameterKind.Span; + string container = parameter.IsConst ? "ReadOnlySpan" : "Span"; + plan = new ManagedParameterPlan( + parameter, $"{container}<{elementType}>", kind, elementType); + } + } else + { + string mapped = CsTypeMapper.MapParameter(parameter); + ManagedParameterKind kind = parameter.PointerLevel == 0 + ? ManagedParameterKind.Value + : ManagedParameterKind.RawPointer; + plan = new ManagedParameterPlan(parameter, mapped, kind, null); + } + all.Add(parameter.Name, plan); + } + + Dictionary derivedLengths = new(StringComparer.Ordinal); + foreach (GlParam scalar in command.Parameters.Where(p => p.PointerLevel == 0)) + { + List spans = command.Parameters + .Select(p => all[p.Name]) + .Where(p => p.IsSpan && + string.Equals(p.Source.Length, scalar.Name, + StringComparison.Ordinal)) + .ToList(); + if (spans.Count == 0) { + continue; + } + + bool lengthAlsoControlsRawPointer = command.Parameters + .Select(p => all[p.Name]).Any(p => + p.Kind == ManagedParameterKind.RawPointer && + string.Equals(p.Source.Length, scalar.Name, StringComparison.Ordinal)); + if (lengthAlsoControlsRawPointer) { + continue; + } + + string scalarType = all[scalar.Name].PublicType; + if (scalarType is not ("int" or "uint" or "nint" or "nuint")) { + continue; + } + + derivedLengths.Add(scalar.Name, spans[0].Source.Name); + } + + IReadOnlyList publicParameters = command.Parameters + .Where(p => !derivedLengths.ContainsKey(p.Name)) + .Select(p => all[p.Name]) + .ToArray(); + return new ManagedCommandPlan(publicParameters, all, derivedLengths); + } + + public ManagedParameterPlan GetParameter( + string name + ) => _allParameters[name]; + + } +} diff --git a/test/StgSharp.GenerateGL/CodeGen/Models.cs b/test/StgSharp.GenerateGL/CodeGen/Models.cs index 7eb73b34..5b0b067e 100644 --- a/test/StgSharp.GenerateGL/CodeGen/Models.cs +++ b/test/StgSharp.GenerateGL/CodeGen/Models.cs @@ -41,7 +41,8 @@ namespace GenerateGL.CodeGen string Name, string CType, int PointerLevel, - bool IsConst + bool IsConst, + string? Length ) { diff --git a/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs b/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs new file mode 100644 index 00000000..40408ad6 --- /dev/null +++ b/test/StgSharp.GenerateGL/CodeGen/UniformOverloadEmitter.cs @@ -0,0 +1,219 @@ +//----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="UniformOverloadEmitter" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +#pragma warning disable CA1305 + +namespace GenerateGL.CodeGen +{ + internal static partial class UniformOverloadEmitter + { + + public static bool IsValueCommand( + GlCommand command + ) + { + return ValueCommandRegex().IsMatch(command.Name); + } + + public static bool IsSetterCommand( + GlCommand command + ) + { + return IsValueCommand(command) || MatrixCommandRegex().IsMatch(command.Name); + } + + public static void Write( + string outputRoot, + string version, + IReadOnlyList commands + ) + { + List valueCommands = commands.Where(IsValueCommand) + .OrderBy(c => c.Name, StringComparer.Ordinal) + .ToList(); + List matrixConvenienceCommands = commands + .Where(c => Matrix4FloatCommandRegex().IsMatch(c.Name)) + .OrderBy(c => c.Name, StringComparer.Ordinal) + .ToList(); + + if (valueCommands.Count == 0 && matrixConvenienceCommands.Count == 0) { + return; + } + + StringBuilder sb = new(); + sb.AppendLine("// "); + sb.AppendLine($"// Generated by StgSharp.GenerateGL on {DateTime.UtcNow.ToString("u", CultureInfo.InvariantCulture)}"); + sb.AppendLine($"// Uniform overloads introduced in OpenGL {version}"); + sb.AppendLine("// "); + sb.AppendLine("using System;"); + sb.AppendLine("using System.Runtime.CompilerServices;"); + sb.AppendLine("using StgSharp.Mathematics.Graphics;"); + sb.AppendLine(); + sb.AppendLine("namespace StgSharp.Graphics.OpenGL"); + sb.AppendLine("{"); + sb.AppendLine(" public unsafe partial class OpenGLFunction"); + sb.AppendLine(" {"); + + foreach (GlCommand command in valueCommands) { + EmitValueOverload(sb, command); + } + foreach (GlCommand command in valueCommands.Where(IsFloatVectorCommand)) { + EmitVectorConvenienceOverload(sb, command); + } + foreach (GlCommand command in matrixConvenienceCommands) { + EmitMatrixConvenienceOverload(sb, command); + } + + sb.AppendLine(" }"); + sb.AppendLine("}"); + + string fileName = Path.Combine( + outputRoot, + $"OpenGLFunction.Uniform.v{version.Replace('.', '_')}.g.cs"); + File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); + } + + private static void EmitValueOverload( + StringBuilder sb, + GlCommand command + ) + { + Match match = ValueCommandRegex().Match(command.Name); + bool hasProgram = match.Groups[1].Success; + int dimension = int.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture); + string scalarType = MapScalarType(match.Groups[3].Value); + bool isVector = match.Groups[4].Success; + string uniformType = $"Uniform<{string.Join(", ", Enumerable.Repeat(scalarType, dimension))}>"; + + sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); + if (isVector) + { + string programParameter = hasProgram ? "GlHandle program, " : string.Empty; + sb.AppendLine($" public void SetUniformValue({programParameter}{uniformType} uniform, ReadOnlySpan<{scalarType}> values)"); + sb.AppendLine(" {"); + sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); + if (dimension > 1) + { + sb.AppendLine($" if ((values.Length % {dimension}) != 0) {{"); + sb.AppendLine($" throw new ArgumentException(\"Uniform data length must be divisible by {dimension}.\", nameof(values));"); + sb.AppendLine(" }"); + } + sb.AppendLine($" fixed ({scalarType}* valuesPtr = values) {{"); + string count = dimension == 1 ? "values.Length" : $"values.Length / {dimension}"; + sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}{count}, valuesPtr);"); + sb.AppendLine(" }"); + sb.AppendLine(" }"); + } else + { + string programParameter = hasProgram ? "GlHandle program, " : string.Empty; + string values = string.Join(", ", Enumerable.Range(0, dimension) + .Select(i => $"{scalarType} v{i}")); + string valueArguments = string.Join(", ", Enumerable.Range(0, dimension) + .Select(i => $"v{i}")); + sb.AppendLine($" public void SetUniformValue({programParameter}{uniformType} uniform, {values})"); + sb.AppendLine(" {"); + sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); + sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}{valueArguments});"); + sb.AppendLine(" }"); + } + sb.AppendLine(); + } + + private static void EmitVectorConvenienceOverload( + StringBuilder sb, + GlCommand command + ) + { + Match match = ValueCommandRegex().Match(command.Name); + bool hasProgram = match.Groups[1].Success; + int dimension = int.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture); + if (dimension < 2) { + return; + } + + string vectorType = $"Vec{dimension}"; + string programParameter = hasProgram ? "GlHandle program, " : string.Empty; + sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); + sb.AppendLine($" public void SetUniformValue({programParameter}Uniform<{vectorType}> uniform, {vectorType} value)"); + sb.AppendLine(" {"); + sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); + sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}1, (float*)&value);"); + sb.AppendLine(" }"); + sb.AppendLine(); + } + + private static void EmitMatrixConvenienceOverload( + StringBuilder sb, + GlCommand command + ) + { + bool hasProgram = command.Name.StartsWith("glProgram", StringComparison.Ordinal); + string programParameter = hasProgram ? "GlHandle program, " : string.Empty; + sb.AppendLine(" [MethodImpl(MethodImplOptions.AggressiveInlining)]"); + sb.AppendLine($" public void SetUniformValue({programParameter}Uniform uniform, GraphicsMatrix value, bool transpose = false)"); + sb.AppendLine(" {"); + sb.AppendLine(" ArgumentNullException.ThrowIfNull(uniform);"); + sb.AppendLine($" Context.{command.Name}({BuildPrefixArguments(hasProgram)}1, transpose ? (byte)1 : (byte)0, (float*)&value);"); + sb.AppendLine(" }"); + sb.AppendLine(); + } + + private static string BuildPrefixArguments( + bool hasProgram + ) + { + return hasProgram + ? "program.Value, uniform.id.SignedValue, " + : "uniform.id.SignedValue, "; + } + + private static bool IsFloatVectorCommand( + GlCommand command + ) + { + Match match = ValueCommandRegex().Match(command.Name); + return match.Success && match.Groups[3].Value == "f" && match.Groups[4].Success; + } + + private static string MapScalarType( + string suffix + ) + { + return suffix switch + { + "f" => "float", + "d" => "double", + "i" => "int", + "ui" => "uint", + _ => throw new InvalidOperationException($"Unsupported uniform suffix: {suffix}") + }; + } + + [GeneratedRegex("^gl(Program)?Uniform([1-4])(ui|[fdi])(v)?$", + RegexOptions.CultureInvariant)] + private static partial Regex ValueCommandRegex(); + + [GeneratedRegex("^gl(?:Program)?UniformMatrix4fv$", RegexOptions.CultureInvariant)] + private static partial Regex Matrix4FloatCommandRegex(); + + [GeneratedRegex("^gl(?:Program)?UniformMatrix[234](?:x[234])?[fd]v$", + RegexOptions.CultureInvariant)] + private static partial Regex MatrixCommandRegex(); + + } +} + +#pragma warning restore CA1305 diff --git a/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md b/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md index 5a4dfc70..6c5fe17c 100644 --- a/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md +++ b/test/StgSharp.GenerateGL/Docs/ArchitectureAssessment.md @@ -2,6 +2,31 @@ 评估日期:2026-08-24 +## 实施状态(2026-08-25) + +已完成第一轮无公开 API 破坏的文件整理: + +- 手写 `OpenGLFunction` 已拆分到 `src/StgSharp.Graphics/OpenGL/Api`; +- 版本 Raw wrapper 已移动到 `src/StgSharp.Graphics/OpenGL/Generated` 并使用 `.g.cs` 后缀; +- `OpenglContext` 已移动为 `Generated/OpenglContext.g.cs`; +- `SetUniformValue` 已从 Uniform 模型文件移动到 `Api/OpenGLFunction.Uniform.cs`; +- Texture Unit 状态已移动到 `Api/OpenGLFunction.TextureUnits.cs`; +- 已修复两个 `Vec4` overload 对 `glUniform1fv` 的错误调用,现调用 `glUniform4fv(location, 1, ...)`; +- GenerateGL 已改为只生成一个合并 Context,Raw wrapper 继续按版本输出; +- GenerateGL 输出文件名已与新的 `Generated` 目录约定对齐。 + +第二轮生成器实验已经完成并输出到 `test/StgSharp.GenerateGL/Generated`: + +- `glUniform1/2/3/4[f|i|ui|d][v]` 与 `glProgramUniform*` 已生成为 `SetUniformValue(...)` 重载; +- 已生成 scalar、`ReadOnlySpan`、`Vec2/3/4` 和 `GraphicsMatrix` 入口; +- 所有 uniform setter 已从 Raw wrapper 排除;没有对应托管矩阵类型的形状暂时只存在于 `OpenglContext`; +- TexParameter、SamplerParameter、VertexAttrib、ClearBuffer 及 indexed API 等可由 C# 参数签名区分的函数已归并重载; +- 归并发生签名冲突时,生成器会保留必要的维度或语义尾缀; +- `OpenglContext` 仍保持纯 ABI 函数指针表,`GlHandle` 暂不拆分; +- 已移除“参数名为 type 就映射为 ShaderType”的不安全启发式规则。 + +Loader/ContextShadow 合并、BufferObject 专项生成和生成快照测试尚未实施。 + ## 1. 评估目的 本文评估 `StgSharp.GenerateGL` 与 `src/StgSharp.Graphics` 当前 OpenGL 绑定代码之间的关系,重点回答以下问题: diff --git a/test/StgSharp.GenerateGL/Docs/SourceGenerator.md b/test/StgSharp.GenerateGL/Docs/SourceGenerator.md index 73a8b26f..8117402e 100644 --- a/test/StgSharp.GenerateGL/Docs/SourceGenerator.md +++ b/test/StgSharp.GenerateGL/Docs/SourceGenerator.md @@ -2,7 +2,7 @@ ## 目标与范围 - **输入**:Khronos OpenGL Registry `gl.xml`(Core Profile 为主,版本 3.3→4.6,可选扩展)。 -- **输出**:分版本 partial `glContext`(`delegate*` 字段)与 `OpenGLFunction` 包装方法(调用 `Context.glXxx`),以及新增常量/枚举补全文件,写入 `StgSharp.Common\Graphics\OpenGL\Generated\`。不改动现有手写文件。 +- **输出**:合并的 partial `OpenglContext`(`delegate*` 字段)、分版本 `OpenGLFunction` 薄包装方法,以及按版本生成的 Uniform 语义重载。生成结果最终对应 `src\StgSharp.Graphics\OpenGL\Generated\`,评审时可以通过命令行参数输出到独立目录。 - **风格**:保持现有函数指针字段 + 薄封装方法模式;兼容现有命名和类型定义(如 `GlHandle`)。 --- @@ -21,27 +21,41 @@ ## 阶段 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 重载。 +- 指针与尺寸:`void*`/`const void*`→`void*`;`GLintptr`、`GLsizeiptr`→`nint`;`GLsync`→现有 `glSync` 包装。`GLint64`/`GLuint64` 分别映射为 `long`/`ulong`。回调类型 `GLDEBUGPROC` 暂以指针大小的 `IntPtr` 表示。 +- 未知 C 类型直接终止生成,不再静默回退为 `IntPtr`。这可以防止 typedef 漏映射后生成 ABI 不兼容的函数指针。 +- 字符串:函数表中的 `GLchar*` 保持 `byte*` ABI;包装层的 const 单指针使用 UTF-8 `ReadOnlySpan`,后续可另行提供 `string` 重载。 +- 参数长度:解析并保留 registry ``。包装层以该表达式判断数组方向、固定长度和关联的 `count`/`bufSize` 参数;底层函数表不使用这些托管规则。 - 调用约定:OpenGL APIENTRY 通常 stdcall(Windows);保持与现有 `glContext` 字段一致(`delegate* unmanaged[Stdcall]` 或 `unmanaged[Cdecl]`,需与 loader 对齐)。 -- 句柄识别:包含 program/shader/buffer/texture/framebuffer/renderbuffer/vertexarray/query/sampler/transformfeedback 等对象名的 `GLuint` 参数 → 包装层使用 `GlHandle`,内部传 `handle.Value`。 +- 句柄识别:包含 program/shader/buffer/texture/framebuffer/renderbuffer/vertexarray/query/sampler/transformfeedback 等对象名的 `GLuint` 参数 → 包装层使用 `GlHandle`,内部传 `handle.Value`。`glCreateProgram`、`glCreateShader` 等明确返回 object name 的命令返回 `GlHandle`。 +- `GLenum` 不再仅凭参数名 `type` 推断为 `ShaderType`;低层包装保持 `uint`,避免把像素类型、索引类型等无关参数错误分类。 - glGet* 输出:保留指针签名,或另行生成 unsafe Span/stackalloc 适配器;核心先生成指针版。 --- ## 阶段 3:版本分组与文件组织 -- 输出目录:`StgSharp.Common\Graphics\OpenGL\Generated\` -- 每个版本生成独立 partial: - - `glContext.v33.cs`, `glContext.v40.cs`, …, `glContext.v46.cs`:`delegate*` 字段。 - - `OpenGLFunction.v33.cs`, …:包装方法 `public void Foo(...) => Context.glFoo(...);` +- 目标目录:`src\StgSharp.Graphics\OpenGL\Generated\` +- Context 生成一个合并文件: + - `OpenglContext.g.cs`:所有目标 Core 版本需要的 `delegate*` 字段。 +- Raw 包装按版本生成独立 partial: + - `OpenGLFunction.Raw.v3_3.g.cs`, …:包装方法 `public void Foo(...) => Context.glFoo(...);` +- Uniform 重载按首次引入版本生成: + - `OpenGLFunction.Uniform.v3_3.g.cs`、`v4_0`、`v4_1`。 +- 不再同时生成分版本 Context 与合并 Context,避免同一字段被 partial struct 重复定义。 - 常量/枚举:`glConst.generated.cs`(或分版本补丁),避免与现有重复,先查已有定义再生成。 - 命名空间:`StgSharp.Graphics.OpenGL`;类声明:`partial struct/partial class glContext`(按现有定义),`partial class OpenGLFunction`。 --- ## 阶段 4:生成规则(函数表与包装) -- `glContext` 字段:`internal unsafe delegate* glFoo;` +- `OpenglContext` 字段:`internal unsafe delegate* glFoo;` - `OpenGLFunction` 包装:薄封装直接转发;句柄参数用 `GlHandle`,内部传 `handle.Value`;`bool` 参数按底层 `GLboolean` 需要转换为 `byte/uint`。 +- 指针包装:带长度的 `const T*` 生成 `ReadOnlySpan`,输出 `T*` 生成 `Span`,`len="1"` 的输出生成 `out T`。可由单个 Span 唯一决定的 `count`/`n`/`bufSize` 从 `Span.Length` 推导;共享同一长度的输入 Span 会检查长度一致。简单常量、乘法和除法长度表达式会生成下限检查。 +- registry 中省略 `len` 的零结尾 const 字符指针仍生成 `ReadOnlySpan`;省略 `len` 的 `glGet*` 数值单指针按未知长度输出生成 `Span`。`void*`、二级指针、驱动拥有的返回指针以及表示 Buffer 偏移的指针继续保留原始形式。 +- 可重载的 C 类型尾缀会折叠为同一 C# 方法名,例如 `TexParameterf/i/fv/iv` → `TexParameter(...)`,`BlendEquation/BlendEquationi` → `BlendEquation(...)`。生成器以最终 C# 参数签名检测冲突;无法区分时保留最少的维度或语义尾缀。 +- `glUniform1/2/3/4[f|i|ui|d][v]` 和 `glProgramUniform*` 不再作为一组公开的 C 风格方法生成,而是生成 `SetUniformValue(...)` 重载。location 从 `Uniform.id.SignedValue` 取得;数组版本接受 `ReadOnlySpan` 并自动计算 count。 +- float vector 额外生成 `Vec2`、`Vec3`、`Vec4` 重载,4×4 float matrix 生成 `GraphicsMatrix` 重载。所有 uniform setter(包括 matrix)都不进入 Raw wrapper;项目暂时没有对应托管类型的其他矩阵形状只保留底层 `OpenglContext` 函数指针,待类型齐备后再生成公开重载。 +- `glVertexAttribN*v` 若存在对应的标量命令 `glVertexAttribN*`,不再生成重复的 Span wrapper;公开 API 使用 `VertexAttrib(index, x, y, z, w)` 形式的固定分量重载。只有不存在标量等价命令的特殊整数/归一化形式才暂时保留独立入口。 +- `FramebufferTexture1D/2D/3D` 表示不同 OpenGL API,不参与维度重载归并。 - 去重:若同名字段/方法已存在,跳过或比对签名避免重复生成。 --- @@ -69,3 +83,11 @@ 2. 搭建增量生成器骨架:Parse → Filter → Emit。 3. 先生成 3.3 子集验证编译,再扩展到 4.6。 4. 按需追加扩展(ARB/KHR),保持可配置启用列表。 + +## 本地评审输出 + +可把首个命令行参数作为输出目录: + +```powershell +dotnet run --project test\StgSharp.GenerateGL\GenerateGL.csproj -- test\StgSharp.GenerateGL\Generated +``` diff --git a/test/StgSharp.GenerateGL/GenerateGL.csproj b/test/StgSharp.GenerateGL/GenerateGL.csproj index d8f543d7..cf86d0b4 100644 --- a/test/StgSharp.GenerateGL/GenerateGL.csproj +++ b/test/StgSharp.GenerateGL/GenerateGL.csproj @@ -7,6 +7,8 @@ + + diff --git a/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs b/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs new file mode 100644 index 00000000..40eb31cd --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/GlCommandHistory.g.cs @@ -0,0 +1,1027 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Command availability history +// +using System; +using System.Collections.Frozen; +using System.Collections.Generic; + +namespace StgSharp.Graphics.OpenGL +{ + internal enum CommandHistoryAction { Added, Removed } + + internal readonly record struct CommandHistoryEntry(string Version, CommandHistoryAction Action); + + internal static class GlCommandHistory + { + internal static readonly FrozenDictionary History = new Dictionary(StringComparer.Ordinal) + { + { "glAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glActiveShaderProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glAlphaFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glAreTexturesResident", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glArrayElement", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glAttachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBegin", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glBeginConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBeginQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBeginQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBeginTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBindBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBindBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glBindBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glBindBuffersBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindBuffersRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindFragDataLocationIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glBindFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindImageTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glBindImageTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glBindRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glBindSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glBindTextureUnit", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glBindTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBindTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBindVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBindVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glBindVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBitmap", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glBlendColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendEquation", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendEquationSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glBlendEquationSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendEquationi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glBlendFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glBlendFuncSeparatei", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlendFunci", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glBlitFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glBlitNamedFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glCallList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCallLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCheckFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glCheckNamedFramebufferStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClampColor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClear", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearAccum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClearBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glClearBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glClearBufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearBufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glClearColor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearDepth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearDepthf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glClearIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClearNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferfi", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearNamedFramebufferuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClearStencil", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glClearTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glClearTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.4", CommandHistoryAction.Added) } }, + { "glClientActiveTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glClientWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glClipControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColor4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColorMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glColorMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glColorMaterial", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCompileShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCompressedTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCompressedTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glCopyImageSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glCopyNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glCopyTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glCopyTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCopyTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCreateProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glCreateShaderProgramv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glCreateTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCreateVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glCullFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDebugMessageCallback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDebugMessageControl", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDebugMessageInsert", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDeleteBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glDeleteFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDeleteLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDeleteProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDeleteProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDeleteQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glDeleteRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDeleteSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glDeleteShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDeleteSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDeleteTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDeleteTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDeleteVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDepthFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthRange", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDepthRangeArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDepthRangeIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDepthRangef", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glDetachShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDisable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDisableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDisableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glDisableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDisablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glDispatchCompute", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDispatchComputeIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawArraysInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glDrawArraysInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawElementsInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawElementsInstancedBaseVertexBaseInstance", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glDrawRangeElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glDrawRangeElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackStream", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glDrawTransformFeedbackStreamInstanced", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glEdgeFlag", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEdgeFlagPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEdgeFlagv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEnable", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glEnableClientState", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEnableVertexArrayAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glEnableVertexAttribArray", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glEnablei", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEnd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEndConditionalRender", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEndList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEndQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glEndQueryIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glEndTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glEvalCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalMesh1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalMesh2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalPoint1", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glEvalPoint2", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFeedbackBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFenceSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glFinish", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFlush", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFlushMappedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFlushMappedNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glFogCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoorddv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogCoordfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFogiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glFramebufferTexture1D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture2D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTexture3D", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glFrontFace", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glFrustum", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGenBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGenFramebuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenLists", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGenProgramPipelines", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGenQueries", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGenRenderbuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenSamplers", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGenTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glGenTransformFeedbacks", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGenVertexArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenerateMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGenerateTextureMipmap", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetActiveAtomicCounterBufferiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glGetActiveAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveSubroutineUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetActiveUniform", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetActiveUniformBlockName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformBlockiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformName", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetActiveUniformsiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetAttachedShaders", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetAttribLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetBooleani_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetBooleanv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetClipPlane", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glGetCompressedTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetCompressedTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetDebugMessageLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetDoublei_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetDoublev", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetError", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetFloati_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetFloatv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetFragDataIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetFragDataLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetGraphicsResetStatus", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetInteger64i_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetInteger64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetIntegeri_v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetIntegerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetInternalformati64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetInternalformativ", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glGetLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMapiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetMultisamplefv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetNamedBufferParameteri64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedFramebufferAttachmentParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedFramebufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetNamedRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed), new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetProgramInterfaceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramPipelineInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramPipelineiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetProgramResourceIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceLocationIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceName", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramResourceiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glGetProgramStageiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetProgramiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryBufferObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetQueryIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetQueryObjecti64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetQueryObjectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetQueryObjectui64v", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetQueryObjectuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetQueryiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glGetRenderbufferParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glGetShaderInfoLog", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetShaderPrecisionFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetShaderiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetString", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetStringi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetSubroutineIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetSubroutineUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetSynciv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glGetTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glGetTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glGetTextureImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureLevelParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureLevelParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTextureSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbackVarying", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbacki64_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbacki_v", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetTransformFeedbackiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetUniformBlockIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetUniformIndices", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glGetUniformLocation", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformSubroutineuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glGetUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexArrayIndexed64iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexArrayIndexediv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexArrayiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetVertexAttribIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribLdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glGetVertexAttribPointerv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribdv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribfv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetVertexAttribiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glGetnCompressedTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformdv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glGetnUniformuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glHint", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glIndexMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexs", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIndexubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInitNames", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInterleavedArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glInvalidateBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateNamedFramebufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glInvalidateNamedFramebufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glInvalidateSubFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateTexImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glInvalidateTexSubImage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glIsBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glIsEnabled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glIsEnabledi", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsFramebuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glIsProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glIsProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glIsQuery", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glIsRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glIsSampler", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glIsShader", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glIsSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glIsTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glIsTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glIsVertexArray", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glLightModelf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModelfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModeli", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightModeliv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLighti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLightiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLineStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLineWidth", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glLinkProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glListBase", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadIdentity", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLoadTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glLogicOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glMap1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMap2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glMapBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glMapGrid1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapGrid2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMapNamedBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMaterialf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMaterialfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMateriali", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMaterialiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMatrixMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMemoryBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glMemoryBarrierByRegion", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glMinSampleShading", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glMultMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultTransposeMatrixd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultTransposeMatrixf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiDrawArrays", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glMultiDrawArraysIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glMultiDrawArraysIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glMultiDrawElements", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsBaseVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsIndirect", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glMultiDrawElementsIndirectCount", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glMultiTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glMultiTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNamedBufferData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedBufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedBufferSubData", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferDrawBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferDrawBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferRenderbuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferTexture", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedFramebufferTextureLayer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNamedRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glNewList", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormal3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glNormalPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glObjectLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glObjectPtrLabel", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glOrtho", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPassThrough", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPatchParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPatchParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPauseTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glPixelMapfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelMapuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelMapusv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelStoref", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPixelStorei", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPixelTransferf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelTransferi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPixelZoom", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPointParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added) } }, + { "glPointSize", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPolygonMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glPolygonOffset", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glPolygonOffsetClamp", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glPolygonStipple", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glPopMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPopName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPrimitiveRestartIndex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glPrioritizeTextures", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glProgramBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProgramUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glProvokingVertex", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glPushAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushClientAttrib", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushDebugGroup", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glPushMatrix", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glPushName", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glQueryCounter", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glRasterPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRasterPos4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glReadBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glReadPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glReadnPixels", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glRectd", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectdv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRecti", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRects", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRectsv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glReleaseShaderCompiler", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glRenderMode", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRenderbufferStorage", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glRenderbufferStorageMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glResumeTransformFeedback", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glRotated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glRotatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSampleCoverage", new CommandHistoryEntry[] { new CommandHistoryEntry("1.3", CommandHistoryAction.Added) } }, + { "glSampleMaski", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glSamplerParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glSamplerParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glScaled", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glScalef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glScissor", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glScissorArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glScissorIndexed", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glScissorIndexedv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glSecondaryColor3b", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3bv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ub", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3us", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColor3usv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSecondaryColorPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glSelectBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glShadeModel", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glShaderBinary", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glShaderSource", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glShaderStorageBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glSpecializeShader", new CommandHistoryEntry[] { new CommandHistoryEntry("4.6", CommandHistoryAction.Added) } }, + { "glStencilFunc", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilFuncSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glStencilMask", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilMaskSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glStencilOp", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glStencilOpSeparate", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glTexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glTexBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexCoord1d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoord4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexCoordPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnvi", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexEnviv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGend", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGendv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGenf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGenfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGeni", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexGeniv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTexImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexImage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glTexImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glTexImage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glTexParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTexParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTexParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glTexStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.2", CommandHistoryAction.Added) } }, + { "glTexStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTexSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glTexSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added) } }, + { "glTexSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("1.2", CommandHistoryAction.Added) } }, + { "glTextureBarrier", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterIiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterIuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameterfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameteri", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureParameteriv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage2DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureStorage3DMultisample", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage1D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage2D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureSubImage3D", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTextureView", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glTransformFeedbackBufferBase", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTransformFeedbackBufferRange", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glTransformFeedbackVaryings", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glTranslated", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glTranslatef", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glUniform1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniform4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4i", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniform4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniform4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glUniformBlockBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("3.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix2x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix3x4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUniformMatrix4x3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.1", CommandHistoryAction.Added) } }, + { "glUniformSubroutinesuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.0", CommandHistoryAction.Added) } }, + { "glUnmapBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.5", CommandHistoryAction.Added) } }, + { "glUnmapNamedBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glUseProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glUseProgramStages", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glValidateProgram", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glValidateProgramPipeline", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertex2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertex4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glVertexArrayAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayElementBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayVertexBuffer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexArrayVertexBuffers", new CommandHistoryEntry[] { new CommandHistoryEntry("4.5", CommandHistoryAction.Added) } }, + { "glVertexAttrib1d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib1sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nbv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Niv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nsv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nub", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nuiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4Nusv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4d", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4f", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4fv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4s", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttrib4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexAttribBinding", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribI1i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4bv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4i", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4iv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4sv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4ubv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribI4usv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribIFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribIPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("3.0", CommandHistoryAction.Added) } }, + { "glVertexAttribL1d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL1dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL2d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL3d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL4d", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribL4dv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribLFormat", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexAttribLPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glVertexAttribP1ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP1uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP2ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP2uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP3ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP3uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP4ui", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribP4uiv", new CommandHistoryEntry[] { new CommandHistoryEntry("3.3", CommandHistoryAction.Added) } }, + { "glVertexAttribPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("2.0", CommandHistoryAction.Added) } }, + { "glVertexBindingDivisor", new CommandHistoryEntry[] { new CommandHistoryEntry("4.3", CommandHistoryAction.Added) } }, + { "glVertexPointer", new CommandHistoryEntry[] { new CommandHistoryEntry("1.1", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glViewport", new CommandHistoryEntry[] { new CommandHistoryEntry("1.0", CommandHistoryAction.Added) } }, + { "glViewportArrayv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glViewportIndexedf", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glViewportIndexedfv", new CommandHistoryEntry[] { new CommandHistoryEntry("4.1", CommandHistoryAction.Added) } }, + { "glWaitSync", new CommandHistoryEntry[] { new CommandHistoryEntry("3.2", CommandHistoryAction.Added) } }, + { "glWindowPos2d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos2sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3d", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3dv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3f", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3fv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3i", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3iv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3s", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + { "glWindowPos3sv", new CommandHistoryEntry[] { new CommandHistoryEntry("1.4", CommandHistoryAction.Added), new CommandHistoryEntry("3.2", CommandHistoryAction.Removed) } }, + }.ToFrozenDictionary(StringComparer.Ordinal); + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs new file mode 100644 index 00000000..0503e0b5 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v3_3.g.cs @@ -0,0 +1,2187 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 3.3 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveTexture(uint texture) + { + Context.glActiveTexture(texture); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AttachShader(GlHandle program, GlHandle shader) + { + Context.glAttachShader(program.Value, shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginConditionalRender(uint id, uint mode) + { + Context.glBeginConditionalRender(id, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginQuery(uint target, uint id) + { + Context.glBeginQuery(target, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginTransformFeedback(uint primitiveMode) + { + Context.glBeginTransformFeedback(primitiveMode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindAttribLocation(GlHandle program, uint index, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindAttribLocation(program.Value, index, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffer(uint target, GlHandle buffer) + { + Context.glBindBuffer(target, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBufferBase(uint target, uint index, GlHandle buffer) + { + Context.glBindBufferBase(target, index, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBufferRange(uint target, uint index, GlHandle buffer, nint offset, nint size) + { + Context.glBindBufferRange(target, index, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFragDataLocation(GlHandle program, uint color, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindFragDataLocation(program.Value, color, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFragDataLocationIndexed(GlHandle program, uint colorNumber, uint index, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + Context.glBindFragDataLocationIndexed(program.Value, colorNumber, index, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFramebuffer(uint target, GlHandle framebuffer) + { + Context.glBindFramebuffer(target, framebuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindRenderbuffer(uint target, GlHandle renderbuffer) + { + Context.glBindRenderbuffer(target, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindSampler(uint unit, GlHandle sampler) + { + Context.glBindSampler(unit, sampler.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTexture(uint target, GlHandle texture) + { + Context.glBindTexture(target, texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexArray(uint array) + { + Context.glBindVertexArray(array); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendColor(float red, float green, float blue, float alpha) + { + Context.glBlendColor(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquation(uint mode) + { + Context.glBlendEquation(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquationSeparate(uint modeRGB, uint modeAlpha) + { + Context.glBlendEquationSeparate(modeRGB, modeAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFunc(uint sfactor, uint dfactor) + { + Context.glBlendFunc(sfactor, dfactor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) + { + Context.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) + { + Context.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferData(uint target, nint size, void* data, uint usage) + { + Context.glBufferData(target, size, data, usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferSubData(uint target, nint offset, nint size, void* data) + { + Context.glBufferSubData(target, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint CheckFramebufferStatus(uint target) + { + return Context.glCheckFramebufferStatus(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClampColor(uint target, uint clamp) + { + Context.glClampColor(target, clamp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Clear(uint mask) + { + Context.glClear(mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, float depth, int stencil) + { + Context.glClearBufferfi(buffer, drawbuffer, depth, stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (float* valuePtr = value) + { + Context.glClearBufferfv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (int* valuePtr = value) + { + Context.glClearBufferiv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBuffer(uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (uint* valuePtr = value) + { + Context.glClearBufferuiv(buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearColor(float red, float green, float blue, float alpha) + { + Context.glClearColor(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearDepth(double depth) + { + Context.glClearDepth(depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearStencil(int s) + { + Context.glClearStencil(s); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint ClientWaitSync(glSync sync, uint flags, ulong timeout) + { + return Context.glClientWaitSync(sync, flags, timeout); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ColorMask(byte red, byte green, byte blue, byte alpha) + { + Context.glColorMask(red, green, blue, alpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ColorMask(uint index, byte r, byte g, byte b, byte a) + { + Context.glColorMaski(index, r, g, b, a); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompileShader(GlHandle shader) + { + Context.glCompileShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, void* data) + { + Context.glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, void* data) + { + Context.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, void* data) + { + Context.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) + { + Context.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyBufferSubData(uint readTarget, uint writeTarget, nint readOffset, nint writeOffset, nint size) + { + Context.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border) + { + Context.glCopyTexImage1D(target, level, internalformat, x, y, width, border); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) + { + Context.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) + { + Context.glCopyTexSubImage1D(target, level, xoffset, x, y, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) + { + Context.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + { + Context.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateProgram() + { + return GlHandle.Create(Context.glCreateProgram()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateShader(uint type) + { + return GlHandle.Create(Context.glCreateShader(type)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CullFace(uint mode) + { + Context.glCullFace(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteBuffers(ReadOnlySpan buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glDeleteBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteFramebuffers(ReadOnlySpan framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glDeleteFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgram(GlHandle program) + { + Context.glDeleteProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteQueries(ReadOnlySpan ids) + { + fixed (uint* idsPtr = ids) + { + Context.glDeleteQueries(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteRenderbuffers(ReadOnlySpan renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glDeleteRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteSamplers(ReadOnlySpan samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glDeleteSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteShader(GlHandle shader) + { + Context.glDeleteShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteSync(glSync sync) + { + Context.glDeleteSync(sync); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTextures(ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glDeleteTextures(checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteVertexArrays(ReadOnlySpan arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glDeleteVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthFunc(uint func) + { + Context.glDepthFunc(func); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthMask(byte flag) + { + Context.glDepthMask(flag); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRange(double n, double f) + { + Context.glDepthRange(n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DetachShader(GlHandle program, GlHandle shader) + { + Context.glDetachShader(program.Value, shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Disable(uint cap) + { + Context.glDisable(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DisableVertexAttribArray(uint index) + { + Context.glDisableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Disable(uint target, uint index) + { + Context.glDisablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArrays(uint mode, int first, int count) + { + Context.glDrawArrays(mode, first, count); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysInstanced(uint mode, int first, int count, int instancecount) + { + Context.glDrawArraysInstanced(mode, first, count, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawBuffer(uint buf) + { + Context.glDrawBuffer(buf); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawBuffers(ReadOnlySpan bufs) + { + fixed (uint* bufsPtr = bufs) + { + Context.glDrawBuffers(checked((int)bufs.Length), bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElements(uint mode, int count, uint type, void* indices) + { + Context.glDrawElements(mode, count, type, indices); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsBaseVertex(uint mode, int count, uint type, void* indices, int basevertex) + { + Context.glDrawElementsBaseVertex(mode, count, type, indices, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstanced(uint mode, int count, uint type, void* indices, int instancecount) + { + Context.glDrawElementsInstanced(mode, count, type, indices, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertex(uint mode, int count, uint type, void* indices, int instancecount, int basevertex) + { + Context.glDrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElements(uint mode, uint start, uint end, int count, uint type, void* indices) + { + Context.glDrawRangeElements(mode, start, end, count, type, indices); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, void* indices, int basevertex) + { + Context.glDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable(uint cap) + { + Context.glEnable(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnableVertexAttribArray(uint index) + { + Context.glEnableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable(uint target, uint index) + { + Context.glEnablei(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndConditionalRender() + { + Context.glEndConditionalRender(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndQuery(uint target) + { + Context.glEndQuery(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndTransformFeedback() + { + Context.glEndTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public glSync FenceSync(uint condition, uint flags) + { + return Context.glFenceSync(condition, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Finish() + { + Context.glFinish(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Flush() + { + Context.glFlush(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FlushMappedBufferRange(uint target, nint offset, nint length) + { + Context.glFlushMappedBufferRange(target, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) + { + Context.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture(uint target, uint attachment, GlHandle texture, int level) + { + Context.glFramebufferTexture(target, attachment, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture1D(uint target, uint attachment, uint textarget, GlHandle texture, int level) + { + Context.glFramebufferTexture1D(target, attachment, textarget, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture2D(uint target, uint attachment, uint textarget, GlHandle texture, int level) + { + Context.glFramebufferTexture2D(target, attachment, textarget, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTexture3D(uint target, uint attachment, uint textarget, GlHandle texture, int level, int zoffset) + { + Context.glFramebufferTexture3D(target, attachment, textarget, texture.Value, level, zoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferTextureLayer(uint target, uint attachment, GlHandle texture, int level, int layer) + { + Context.glFramebufferTextureLayer(target, attachment, texture.Value, level, layer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FrontFace(uint mode) + { + Context.glFrontFace(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenBuffers(Span buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glGenBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenFramebuffers(Span framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glGenFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenQueries(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glGenQueries(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenRenderbuffers(Span renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glGenRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenSamplers(Span samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glGenSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenTextures(Span textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glGenTextures(checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenVertexArrays(Span arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glGenVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateMipmap(uint target) + { + Context.glGenerateMipmap(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveAttrib(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveAttrib(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniform(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveUniform(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockName(GlHandle program, uint uniformBlockIndex, out int length, Span uniformBlockName) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* uniformBlockNamePtr = uniformBlockName) + { + Context.glGetActiveUniformBlockName(program.Value, uniformBlockIndex, checked((int)uniformBlockName.Length), lengthPtr, uniformBlockNamePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformBlockiv(GlHandle program, uint uniformBlockIndex, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformName(GlHandle program, uint uniformIndex, out int length, Span uniformName) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* uniformNamePtr = uniformName) + { + Context.glGetActiveUniformName(program.Value, uniformIndex, checked((int)uniformName.Length), lengthPtr, uniformNamePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveUniformsiv(GlHandle program, ReadOnlySpan uniformIndices, uint pname, Span @params) + { + fixed (uint* uniformIndicesPtr = uniformIndices) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveUniformsiv(program.Value, checked((int)uniformIndices.Length), uniformIndicesPtr, pname, @paramsPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetAttachedShaders(GlHandle program, out int count, Span shaders) + { + count = default; + fixed (int* countPtr = &count) + { + fixed (uint* shadersPtr = shaders) + { + Context.glGetAttachedShaders(program.Value, checked((int)shaders.Length), countPtr, shadersPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetAttribLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetAttribLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBooleani_v(uint target, uint index, Span data) + { + fixed (byte* dataPtr = data) + { + Context.glGetBooleani_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBooleanv(uint pname, Span data) + { + fixed (byte* dataPtr = data) + { + Context.glGetBooleanv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameter(uint target, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetBufferParameteri64v(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferParameter(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetBufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferPointerv(uint target, uint pname, void** @params) + { + Context.glGetBufferPointerv(target, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetBufferSubData(uint target, nint offset, nint size, void* data) + { + Context.glGetBufferSubData(target, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTexImage(uint target, int level, void* img) + { + Context.glGetCompressedTexImage(target, level, img); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublev(uint pname, Span data) + { + fixed (double* dataPtr = data) + { + Context.glGetDoublev(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetError() + { + return Context.glGetError(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloatv(uint pname, Span data) + { + fixed (float* dataPtr = data) + { + Context.glGetFloatv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetFragDataIndex(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetFragDataIndex(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetFragDataLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetFragDataLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetFramebufferAttachmentParameteriv(target, attachment, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64i_v(uint target, uint index, Span data) + { + fixed (long* dataPtr = data) + { + Context.glGetInteger64i_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInteger64v(uint pname, Span data) + { + fixed (long* dataPtr = data) + { + Context.glGetInteger64v(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegeri_v(uint target, uint index, Span data) + { + fixed (int* dataPtr = data) + { + Context.glGetIntegeri_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetIntegerv(uint pname, Span data) + { + fixed (int* dataPtr = data) + { + Context.glGetIntegerv(pname, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetMultisamplefv(uint pname, uint index, Span val) + { + fixed (float* valPtr = val) + { + Context.glGetMultisamplefv(pname, index, valPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInfoLog(GlHandle program, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetProgramInfoLog(program.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramiv(GlHandle program, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramiv(program.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetQueryObjecti64v(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryObjectiv(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (ulong* @paramsPtr = @params) + { + Context.glGetQueryObjectui64v(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryObject(uint id, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetQueryObjectuiv(id, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryiv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetRenderbufferParameteriv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetRenderbufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetSamplerParameterIiv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameterI(GlHandle sampler, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetSamplerParameterIuiv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetSamplerParameterfv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSamplerParameter(GlHandle sampler, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetSamplerParameteriv(sampler.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderInfoLog(GlHandle shader, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetShaderInfoLog(shader.Value, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderSource(GlHandle shader, out int length, Span source) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* sourcePtr = source) + { + Context.glGetShaderSource(shader.Value, checked((int)source.Length), lengthPtr, sourcePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderiv(GlHandle shader, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetShaderiv(shader.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte* GetString(uint name) + { + return Context.glGetString(name); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte* GetString(uint name, uint index) + { + return Context.glGetStringi(name, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetSynciv(glSync sync, uint pname, out int length, Span values) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (int* valuesPtr = values) + { + Context.glGetSynciv(sync, pname, checked((int)values.Length), lengthPtr, valuesPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexImage(uint target, int level, uint format, uint type, void* pixels) + { + Context.glGetTexImage(target, level, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTexLevelParameterfv(target, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexLevelParameter(uint target, int level, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexLevelParameteriv(target, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterI(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexParameterIiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameterI(uint target, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetTexParameterIuiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameter(uint target, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTexParameterfv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTexParameter(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTexParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackVarying(GlHandle program, uint index, out int length, out int size, out uint type, Span name) + { + length = default; + size = default; + type = default; + fixed (int* lengthPtr = &length) + { + fixed (int* sizePtr = &size) + { + fixed (uint* typePtr = &type) + { + fixed (byte* namePtr = name) + { + Context.glGetTransformFeedbackVarying(program.Value, index, checked((int)name.Length), lengthPtr, sizePtr, typePtr, namePtr); + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetUniformBlockIndex(GlHandle program, ReadOnlySpan uniformBlockName) + { + fixed (byte* uniformBlockNamePtr = uniformBlockName) + { + return Context.glGetUniformBlockIndex(program.Value, uniformBlockNamePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformIndices(GlHandle program, int uniformCount, byte** uniformNames, Span uniformIndices) + { + fixed (uint* uniformIndicesPtr = uniformIndices) + { + Context.glGetUniformIndices(program.Value, uniformCount, uniformNames, uniformIndicesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetUniformLocation(GlHandle program, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetUniformLocation(program.Value, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetUniformfv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetUniformiv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetUniformuiv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribI(uint index, uint pname, out int @params) + { + @params = default; + fixed (int* @paramsPtr = &@params) + { + Context.glGetVertexAttribIiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribI(uint index, uint pname, out uint @params) + { + @params = default; + fixed (uint* @paramsPtr = &@params) + { + Context.glGetVertexAttribIuiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribPointerv(uint index, uint pname, void** pointer) + { + Context.glGetVertexAttribPointerv(index, pname, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (double* @paramsPtr = @params) + { + Context.glGetVertexAttribdv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (float* @paramsPtr = @params) + { + Context.glGetVertexAttribfv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttrib(uint index, uint pname, Span @params) + { + if (@params.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(@params)); + } + fixed (int* @paramsPtr = @params) + { + Context.glGetVertexAttribiv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Hint(uint target, uint mode) + { + Context.glHint(target, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsBuffer(GlHandle buffer) + { + return Context.glIsBuffer(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsEnabled(uint cap) + { + return Context.glIsEnabled(cap); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsEnabled(uint target, uint index) + { + return Context.glIsEnabledi(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsFramebuffer(GlHandle framebuffer) + { + return Context.glIsFramebuffer(framebuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsProgram(GlHandle program) + { + return Context.glIsProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsQuery(uint id) + { + return Context.glIsQuery(id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsRenderbuffer(GlHandle renderbuffer) + { + return Context.glIsRenderbuffer(renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsSampler(GlHandle sampler) + { + return Context.glIsSampler(sampler.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsShader(GlHandle shader) + { + return Context.glIsShader(shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsSync(glSync sync) + { + return Context.glIsSync(sync); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsTexture(GlHandle texture) + { + return Context.glIsTexture(texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsVertexArray(uint array) + { + return Context.glIsVertexArray(array); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LineWidth(float width) + { + Context.glLineWidth(width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LinkProgram(GlHandle program) + { + Context.glLinkProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void LogicOp(uint opcode) + { + Context.glLogicOp(opcode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapBuffer(uint target, uint access) + { + return Context.glMapBuffer(target, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapBufferRange(uint target, nint offset, nint length, uint access) + { + return Context.glMapBufferRange(target, offset, length, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArrays(uint mode, ReadOnlySpan first, ReadOnlySpan count) + { + if (count.Length != first.Length) { + throw new ArgumentException("Span lengths controlled by drawcount must match.", nameof(count)); + } + fixed (int* firstPtr = first) + { + fixed (int* countPtr = count) + { + Context.glMultiDrawArrays(mode, firstPtr, countPtr, checked((int)first.Length)); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElements(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount) + { + if (count.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); + } + fixed (int* countPtr = count) + { + Context.glMultiDrawElements(mode, countPtr, type, indices, drawcount); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsBaseVertex(uint mode, ReadOnlySpan count, uint type, void** indices, int drawcount, ReadOnlySpan basevertex) + { + if (count.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(count)); + } + if (basevertex.Length < checked((int)drawcount)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'drawcount'.", nameof(basevertex)); + } + fixed (int* countPtr = count) + { + fixed (int* basevertexPtr = basevertex) + { + Context.glMultiDrawElementsBaseVertex(mode, countPtr, type, indices, drawcount, basevertexPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStore(uint pname, float param) + { + Context.glPixelStoref(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PixelStore(uint pname, int param) + { + Context.glPixelStorei(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, float param) + { + Context.glPointParameterf(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, ReadOnlySpan @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glPointParameterfv(pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, int param) + { + Context.glPointParameteri(pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointParameter(uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glPointParameteriv(pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PointSize(float size) + { + Context.glPointSize(size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonMode(uint face, uint mode) + { + Context.glPolygonMode(face, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonOffset(float factor, float units) + { + Context.glPolygonOffset(factor, units); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PrimitiveRestartIndex(uint index) + { + Context.glPrimitiveRestartIndex(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProvokingVertex(uint mode) + { + Context.glProvokingVertex(mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void QueryCounter(uint id, uint target) + { + Context.glQueryCounter(id, target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadBuffer(uint src) + { + Context.glReadBuffer(src); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadPixels(int x, int y, int width, int height, uint format, uint type, void* pixels) + { + Context.glReadPixels(x, y, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void RenderbufferStorage(uint target, uint internalformat, int width, int height) + { + Context.glRenderbufferStorage(target, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void RenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height) + { + Context.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SampleCoverage(float value, byte invert) + { + Context.glSampleCoverage(value, invert); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SampleMaski(uint maskNumber, uint mask) + { + Context.glSampleMaski(maskNumber, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glSamplerParameterIiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameterI(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (uint* paramPtr = param) + { + Context.glSamplerParameterIuiv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, float param) + { + Context.glSamplerParameterf(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (float* paramPtr = param) + { + Context.glSamplerParameterfv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, int param) + { + Context.glSamplerParameteri(sampler.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SamplerParameter(GlHandle sampler, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glSamplerParameteriv(sampler.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Scissor(int x, int y, int width, int height) + { + Context.glScissor(x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderSource(GlHandle shader, int count, byte** @string, ReadOnlySpan length) + { + if (length.Length < checked((int)count)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'count'.", nameof(length)); + } + fixed (int* lengthPtr = length) + { + Context.glShaderSource(shader.Value, count, @string, lengthPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilFunc(uint func, int @ref, uint mask) + { + Context.glStencilFunc(func, @ref, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilFuncSeparate(uint face, uint func, int @ref, uint mask) + { + Context.glStencilFuncSeparate(face, func, @ref, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilMask(uint mask) + { + Context.glStencilMask(mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilMaskSeparate(uint face, uint mask) + { + Context.glStencilMaskSeparate(face, mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilOp(uint fail, uint zfail, uint zpass) + { + Context.glStencilOp(fail, zfail, zpass); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void StencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass) + { + Context.glStencilOpSeparate(face, sfail, dpfail, dppass); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexBuffer(uint target, uint internalformat, GlHandle buffer) + { + Context.glTexBuffer(target, internalformat, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage1D(uint target, int level, int internalformat, int width, int border, uint format, uint type, void* pixels) + { + Context.glTexImage1D(target, level, internalformat, width, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage2D(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, void* pixels) + { + Context.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage3D(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, void* pixels) + { + Context.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTexParameterIiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameterI(uint target, uint pname, ReadOnlySpan @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glTexParameterIuiv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, float param) + { + Context.glTexParameterf(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, ReadOnlySpan @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glTexParameterfv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, int param) + { + Context.glTexParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexParameter(uint target, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTexParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, void* pixels) + { + Context.glTexSubImage1D(target, level, xoffset, width, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + { + Context.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) + { + Context.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackVaryings(GlHandle program, int count, byte** varyings, uint bufferMode) + { + Context.glTransformFeedbackVaryings(program.Value, count, varyings, bufferMode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformBlockBinding(GlHandle program, uint uniformBlockIndex, uint uniformBlockBinding) + { + Context.glUniformBlockBinding(program.Value, uniformBlockIndex, uniformBlockBinding); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte UnmapBuffer(uint target) + { + return Context.glUnmapBuffer(target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UseProgram(GlHandle program) + { + Context.glUseProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ValidateProgram(GlHandle program) + { + Context.glValidateProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x) + { + Context.glVertexAttrib1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x) + { + Context.glVertexAttrib1f(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x) + { + Context.glVertexAttrib1s(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y) + { + Context.glVertexAttrib2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y) + { + Context.glVertexAttrib2f(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y) + { + Context.glVertexAttrib2s(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y, double z) + { + Context.glVertexAttrib3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y, float z) + { + Context.glVertexAttrib3f(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y, short z) + { + Context.glVertexAttrib3s(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttrib4Nbv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glVertexAttrib4Niv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (short* vPtr = v) + { + Context.glVertexAttrib4Nsv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, byte x, byte y, byte z, byte w) + { + Context.glVertexAttrib4Nub(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (uint* vPtr = v) + { + Context.glVertexAttrib4Nuiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribNormalized(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttrib4Nusv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttrib4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, double x, double y, double z, double w) + { + Context.glVertexAttrib4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, float x, float y, float z, float w) + { + Context.glVertexAttrib4f(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glVertexAttrib4iv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, short x, short y, short z, short w) + { + Context.glVertexAttrib4s(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (byte* vPtr = v) + { + Context.glVertexAttrib4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (uint* vPtr = v) + { + Context.glVertexAttrib4uiv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttrib(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttrib4usv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribDivisor(uint index, uint divisor) + { + Context.glVertexAttribDivisor(index, divisor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x) + { + Context.glVertexAttribI1i(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x) + { + Context.glVertexAttribI1ui(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y) + { + Context.glVertexAttribI2i(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y) + { + Context.glVertexAttribI2ui(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y, int z) + { + Context.glVertexAttribI3i(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y, uint z) + { + Context.glVertexAttribI3ui(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (sbyte* vPtr = v) + { + Context.glVertexAttribI4bv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, int x, int y, int z, int w) + { + Context.glVertexAttribI4i(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (short* vPtr = v) + { + Context.glVertexAttribI4sv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (byte* vPtr = v) + { + Context.glVertexAttribI4ubv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, uint x, uint y, uint z, uint w) + { + Context.glVertexAttribI4ui(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribI(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (ushort* vPtr = v) + { + Context.glVertexAttribI4usv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIPointer(uint index, int size, uint type, int stride, void* pointer) + { + Context.glVertexAttribIPointer(index, size, type, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP1ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP2(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP2ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP3(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP3ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribP4(uint index, uint type, byte normalized, uint value) + { + Context.glVertexAttribP4ui(index, type, normalized, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribPointer(uint index, int size, uint type, byte normalized, int stride, void* pointer) + { + Context.glVertexAttribPointer(index, size, type, normalized, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Viewport(int x, int y, int width, int height) + { + Context.glViewport(x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void WaitSync(glSync sync, uint flags, ulong timeout) + { + Context.glWaitSync(sync, flags, timeout); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs new file mode 100644 index 00000000..484c5f86 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_0.g.cs @@ -0,0 +1,238 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.0 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BeginQueryIndexed(uint target, uint index, uint id) + { + Context.glBeginQueryIndexed(target, index, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTransformFeedback(uint target, uint id) + { + Context.glBindTransformFeedback(target, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquationSeparate(uint buf, uint modeRGB, uint modeAlpha) + { + Context.glBlendEquationSeparatei(buf, modeRGB, modeAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendEquation(uint buf, uint mode) + { + Context.glBlendEquationi(buf, mode); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFuncSeparate(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) + { + Context.glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlendFunc(uint buf, uint src, uint dst) + { + Context.glBlendFunci(buf, src, dst); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteTransformFeedbacks(ReadOnlySpan ids) + { + fixed (uint* idsPtr = ids) + { + Context.glDeleteTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysIndirect(uint mode, void* indirect) + { + Context.glDrawArraysIndirect(mode, indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsIndirect(uint mode, uint type, void* indirect) + { + Context.glDrawElementsIndirect(mode, type, indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedback(uint mode, uint id) + { + Context.glDrawTransformFeedback(mode, id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackStream(uint mode, uint id, uint stream) + { + Context.glDrawTransformFeedbackStream(mode, id, stream); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EndQueryIndexed(uint target, uint index) + { + Context.glEndQueryIndexed(target, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenTransformFeedbacks(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glGenTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineName(GlHandle program, uint shadertype, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveSubroutineName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformName(GlHandle program, uint shadertype, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetActiveSubroutineUniformName(program.Value, shadertype, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pname, Span values) + { + fixed (int* valuesPtr = values) + { + Context.glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramStageiv(GlHandle program, uint shadertype, uint pname, out int values) + { + values = default; + fixed (int* valuesPtr = &values) + { + Context.glGetProgramStageiv(program.Value, shadertype, pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryIndexediv(uint target, uint index, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetQueryIndexediv(target, index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetSubroutineIndex(GlHandle program, uint shadertype, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetSubroutineIndex(program.Value, shadertype, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetSubroutineUniformLocation(GlHandle program, uint shadertype, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetSubroutineUniformLocation(program.Value, shadertype, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniformSubroutineuiv(uint shadertype, int location, out uint @params) + { + @params = default; + fixed (uint* @paramsPtr = &@params) + { + Context.glGetUniformSubroutineuiv(shadertype, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetUniform(GlHandle program, int location, Span @params) + { + fixed (double* @paramsPtr = @params) + { + Context.glGetUniformdv(program.Value, location, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsTransformFeedback(uint id) + { + return Context.glIsTransformFeedback(id); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MinSampleShading(float value) + { + Context.glMinSampleShading(value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PatchParameter(uint pname, ReadOnlySpan values) + { + fixed (float* valuesPtr = values) + { + Context.glPatchParameterfv(pname, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PatchParameter(uint pname, int value) + { + Context.glPatchParameteri(pname, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PauseTransformFeedback() + { + Context.glPauseTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ResumeTransformFeedback() + { + Context.glResumeTransformFeedback(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UniformSubroutinesuiv(uint shadertype, ReadOnlySpan indices) + { + fixed (uint* indicesPtr = indices) + { + Context.glUniformSubroutinesuiv(shadertype, checked((int)indices.Length), indicesPtr); + } + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs new file mode 100644 index 00000000..795baf52 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_1.g.cs @@ -0,0 +1,286 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.1 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveShaderProgram(uint pipeline, GlHandle program) + { + Context.glActiveShaderProgram(pipeline, program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindProgramPipeline(uint pipeline) + { + Context.glBindProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearDepth(float d) + { + Context.glClearDepthf(d); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateShaderProgramv(uint type, int count, byte** strings) + { + return GlHandle.Create(Context.glCreateShaderProgramv(type, count, strings)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DeleteProgramPipelines(ReadOnlySpan pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glDeleteProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRangeArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (double* vPtr = v) + { + Context.glDepthRangeArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRangeIndexed(uint index, double n, double f) + { + Context.glDepthRangeIndexed(index, n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DepthRange(float n, float f) + { + Context.glDepthRangef(n, f); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenProgramPipelines(Span pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glGenProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetDoublei_v(uint target, uint index, Span data) + { + fixed (double* dataPtr = data) + { + Context.glGetDoublei_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFloati_v(uint target, uint index, Span data) + { + fixed (float* dataPtr = data) + { + Context.glGetFloati_v(target, index, dataPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramBinary(GlHandle program, int bufSize, out int length, out uint binaryFormat, void* binary) + { + length = default; + binaryFormat = default; + fixed (int* lengthPtr = &length) + { + fixed (uint* binaryFormatPtr = &binaryFormat) + { + Context.glGetProgramBinary(program.Value, bufSize, lengthPtr, binaryFormatPtr, binary); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineInfoLog(uint pipeline, out int length, Span infoLog) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* infoLogPtr = infoLog) + { + Context.glGetProgramPipelineInfoLog(pipeline, checked((int)infoLog.Length), lengthPtr, infoLogPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramPipelineiv(uint pipeline, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramPipelineiv(pipeline, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetShaderPrecisionFormat(uint shadertype, uint precisiontype, Span range, out int precision) + { + precision = default; + if (range.Length < 2) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '2'.", nameof(range)); + } + fixed (int* rangePtr = range) + { + fixed (int* precisionPtr = &precision) + { + Context.glGetShaderPrecisionFormat(shadertype, precisiontype, rangePtr, precisionPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexAttribLdv(uint index, uint pname, Span @params) + { + fixed (double* @paramsPtr = @params) + { + Context.glGetVertexAttribLdv(index, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte IsProgramPipeline(uint pipeline) + { + return Context.glIsProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramBinary(GlHandle program, uint binaryFormat, void* binary, int length) + { + Context.glProgramBinary(program.Value, binaryFormat, binary, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ProgramParameter(GlHandle program, uint pname, int value) + { + Context.glProgramParameteri(program.Value, pname, value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReleaseShaderCompiler() + { + Context.glReleaseShaderCompiler(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (int* vPtr = v) + { + Context.glScissorArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorIndexed(uint index, int left, int bottom, int width, int height) + { + Context.glScissorIndexed(index, left, bottom, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ScissorIndexed(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (int* vPtr = v) + { + Context.glScissorIndexedv(index, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderBinary(ReadOnlySpan shaders, uint binaryFormat, void* binary, int length) + { + fixed (uint* shadersPtr = shaders) + { + Context.glShaderBinary(checked((int)shaders.Length), shadersPtr, binaryFormat, binary, length); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UseProgramStages(uint pipeline, uint stages, GlHandle program) + { + Context.glUseProgramStages(pipeline, stages, program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ValidateProgramPipeline(uint pipeline) + { + Context.glValidateProgramPipeline(pipeline); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x) + { + Context.glVertexAttribL1d(index, x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y) + { + Context.glVertexAttribL2d(index, x, y); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y, double z) + { + Context.glVertexAttribL3d(index, x, y, z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribL(uint index, double x, double y, double z, double w) + { + Context.glVertexAttribL4d(index, x, y, z, w); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLPointer(uint index, int size, uint type, int stride, void* pointer) + { + Context.glVertexAttribLPointer(index, size, type, stride, pointer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportArrayv(uint first, int count, ReadOnlySpan v) + { + fixed (float* vPtr = v) + { + Context.glViewportArrayv(first, count, vPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportIndexed(uint index, float x, float y, float w, float h) + { + Context.glViewportIndexedf(index, x, y, w, h); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ViewportIndexed(uint index, ReadOnlySpan v) + { + if (v.Length < 4) { + throw new ArgumentException("Span is shorter than the OpenGL length expression '4'.", nameof(v)); + } + fixed (float* vPtr = v) + { + Context.glViewportIndexedfv(index, vPtr); + } + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs new file mode 100644 index 00000000..4d0f9c84 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_2.g.cs @@ -0,0 +1,93 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.2 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindImageTexture(uint unit, GlHandle texture, int level, byte layered, int layer, uint access, uint format) + { + Context.glBindImageTexture(unit, texture.Value, level, layered, layer, access, format); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawArraysInstancedBaseInstance(uint mode, int first, int count, int instancecount, uint baseinstance) + { + Context.glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, uint baseinstance) + { + Context.glDrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstancedBaseVertexBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, int basevertex, uint baseinstance) + { + Context.glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackInstanced(uint mode, uint id, int instancecount) + { + Context.glDrawTransformFeedbackInstanced(mode, id, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawTransformFeedbackStreamInstanced(uint mode, uint id, uint stream, int instancecount) + { + Context.glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetActiveAtomicCounterBufferiv(GlHandle program, GlHandle bufferIndex, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformativ(uint target, uint internalformat, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetInternalformativ(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MemoryBarrier(uint barriers) + { + Context.glMemoryBarrier(barriers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage1D(uint target, int levels, uint internalformat, int width) + { + Context.glTexStorage1D(target, levels, internalformat, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage2D(uint target, int levels, uint internalformat, int width, int height) + { + Context.glTexStorage2D(target, levels, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage3D(uint target, int levels, uint internalformat, int width, int height, int depth) + { + Context.glTexStorage3D(target, levels, internalformat, width, height, depth); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs new file mode 100644 index 00000000..134d7495 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_3.g.cs @@ -0,0 +1,379 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.3 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexBuffer(uint bindingindex, GlHandle buffer, nint offset, int stride) + { + Context.glBindVertexBuffer(bindingindex, buffer.Value, offset, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferData(uint target, uint internalformat, uint format, uint type, void* data) + { + Context.glClearBufferData(target, internalformat, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearBufferSubData(uint target, uint internalformat, nint offset, nint size, uint format, uint type, void* data) + { + Context.glClearBufferSubData(target, internalformat, offset, size, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth) + { + Context.glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageCallback(IntPtr callback, void* userParam) + { + Context.glDebugMessageCallback(callback, userParam); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageControl(uint source, uint type, uint severity, ReadOnlySpan ids, byte enabled) + { + fixed (uint* idsPtr = ids) + { + Context.glDebugMessageControl(source, type, severity, checked((int)ids.Length), idsPtr, enabled); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DebugMessageInsert(uint source, uint type, uint id, uint severity, int length, ReadOnlySpan buf) + { + fixed (byte* bufPtr = buf) + { + Context.glDebugMessageInsert(source, type, id, severity, length, bufPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z) + { + Context.glDispatchCompute(num_groups_x, num_groups_y, num_groups_z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DispatchComputeIndirect(nint indirect) + { + Context.glDispatchComputeIndirect(indirect); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FramebufferParameter(uint target, uint pname, int param) + { + Context.glFramebufferParameteri(target, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetDebugMessageLog(Span sources, Span types, Span ids, Span severities, Span lengths, Span messageLog) + { + if (types.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(types)); + } + if (ids.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(ids)); + } + if (severities.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(severities)); + } + if (lengths.Length != sources.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(lengths)); + } + fixed (uint* sourcesPtr = sources) + { + fixed (uint* typesPtr = types) + { + fixed (uint* idsPtr = ids) + { + fixed (uint* severitiesPtr = severities) + { + fixed (int* lengthsPtr = lengths) + { + fixed (byte* messageLogPtr = messageLog) + { + return Context.glGetDebugMessageLog(checked((uint)sources.Length), checked((int)messageLog.Length), sourcesPtr, typesPtr, idsPtr, severitiesPtr, lengthsPtr, messageLogPtr); + } + } + } + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetFramebufferParameteriv(uint target, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetFramebufferParameteriv(target, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetInternalformati64v(uint target, uint internalformat, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetInternalformati64v(target, internalformat, pname, checked((int)@params.Length), @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectLabel(uint identifier, uint name, out int length, Span label) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* labelPtr = label) + { + Context.glGetObjectLabel(identifier, name, checked((int)label.Length), lengthPtr, labelPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetObjectPtrLabel(void* ptr, out int length, Span label) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* labelPtr = label) + { + Context.glGetObjectPtrLabel(ptr, checked((int)label.Length), lengthPtr, labelPtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetPointerv(uint pname, void** @params) + { + Context.glGetPointerv(pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramInterfaceiv(program.Value, programInterface, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetProgramResourceIndex(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceIndex(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetProgramResourceLocation(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceLocation(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int GetProgramResourceLocationIndex(GlHandle program, uint programInterface, ReadOnlySpan name) + { + fixed (byte* namePtr = name) + { + return Context.glGetProgramResourceLocationIndex(program.Value, programInterface, namePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramResourceName(GlHandle program, uint programInterface, uint index, out int length, Span name) + { + length = default; + fixed (int* lengthPtr = &length) + { + fixed (byte* namePtr = name) + { + Context.glGetProgramResourceName(program.Value, programInterface, index, checked((int)name.Length), lengthPtr, namePtr); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetProgramResourceiv(GlHandle program, uint programInterface, uint index, ReadOnlySpan props, out int length, Span @params) + { + length = default; + fixed (uint* propsPtr = props) + { + fixed (int* lengthPtr = &length) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetProgramResourceiv(program.Value, programInterface, index, checked((int)props.Length), propsPtr, checked((int)@params.Length), lengthPtr, @paramsPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferData(GlHandle buffer) + { + Context.glInvalidateBufferData(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateBufferSubData(GlHandle buffer, nint offset, nint length) + { + Context.glInvalidateBufferSubData(buffer.Value, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateFramebuffer(uint target, ReadOnlySpan attachments) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateFramebuffer(target, checked((int)attachments.Length), attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateSubFramebuffer(uint target, ReadOnlySpan attachments, int x, int y, int width, int height) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateSubFramebuffer(target, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateTexImage(GlHandle texture, int level) + { + Context.glInvalidateTexImage(texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth) + { + Context.glInvalidateTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArraysIndirect(uint mode, void* indirect, int drawcount, int stride) + { + Context.glMultiDrawArraysIndirect(mode, indirect, drawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirect(uint mode, uint type, void* indirect, int drawcount, int stride) + { + Context.glMultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ObjectLabel(uint identifier, uint name, int length, ReadOnlySpan label) + { + fixed (byte* labelPtr = label) + { + Context.glObjectLabel(identifier, name, length, labelPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ObjectPtrLabel(void* ptr, int length, ReadOnlySpan label) + { + fixed (byte* labelPtr = label) + { + Context.glObjectPtrLabel(ptr, length, labelPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PopDebugGroup() + { + Context.glPopDebugGroup(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PushDebugGroup(uint source, uint id, int length, ReadOnlySpan message) + { + fixed (byte* messagePtr = message) + { + Context.glPushDebugGroup(source, id, length, messagePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ShaderStorageBlockBinding(GlHandle program, uint storageBlockIndex, uint storageBlockBinding) + { + Context.glShaderStorageBlockBinding(program.Value, storageBlockIndex, storageBlockBinding); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexBufferRange(uint target, uint internalformat, GlHandle buffer, nint offset, nint size) + { + Context.glTexBufferRange(target, internalformat, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage2DMultisample(uint target, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TexStorage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureView(GlHandle texture, uint target, GlHandle origtexture, uint internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers) + { + Context.glTextureView(texture.Value, target, origtexture.Value, internalformat, minlevel, numlevels, minlayer, numlayers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribBinding(uint attribindex, uint bindingindex) + { + Context.glVertexAttribBinding(attribindex, bindingindex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribFormat(uint attribindex, int size, uint type, byte normalized, uint relativeoffset) + { + Context.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribIFormat(uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexAttribIFormat(attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttribLFormat(uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexAttribLFormat(attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexBindingDivisor(uint bindingindex, uint divisor) + { + Context.glVertexBindingDivisor(bindingindex, divisor); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs new file mode 100644 index 00000000..2d4daadf --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_4.g.cs @@ -0,0 +1,111 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.4 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersBase(uint target, uint first, ReadOnlySpan buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glBindBuffersBase(target, first, checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffersRange(uint target, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan sizes) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (sizes.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(sizes)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (nint* sizesPtr = sizes) + { + Context.glBindBuffersRange(target, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, sizesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindImageTextures(uint first, ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glBindImageTextures(first, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindSamplers(uint first, ReadOnlySpan samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glBindSamplers(first, checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTextures(uint first, ReadOnlySpan textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glBindTextures(first, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexBuffers(uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (strides.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) + { + Context.glBindVertexBuffers(first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); + } + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BufferStorage(uint target, nint size, void* data, uint flags) + { + Context.glBufferStorage(target, size, data, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexImage(GlHandle texture, int level, uint format, uint type, void* data) + { + Context.glClearTexImage(texture.Value, level, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* data) + { + Context.glClearTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs new file mode 100644 index 00000000..6e831635 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_5.g.cs @@ -0,0 +1,822 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.5 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTextureUnit(uint unit, GlHandle texture) + { + Context.glBindTextureUnit(unit, texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BlitNamedFramebuffer(GlHandle readFramebuffer, GlHandle drawFramebuffer, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) + { + Context.glBlitNamedFramebuffer(readFramebuffer.Value, drawFramebuffer.Value, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint CheckNamedFramebufferStatus(GlHandle framebuffer, uint target) + { + return Context.glCheckNamedFramebufferStatus(framebuffer.Value, target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedBufferData(GlHandle buffer, uint internalformat, uint format, uint type, void* data) + { + Context.glClearNamedBufferData(buffer.Value, internalformat, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedBufferSubData(GlHandle buffer, uint internalformat, nint offset, nint size, uint format, uint type, void* data) + { + Context.glClearNamedBufferSubData(buffer.Value, internalformat, offset, size, format, type, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, float depth, int stencil) + { + Context.glClearNamedFramebufferfi(framebuffer.Value, buffer, drawbuffer, depth, stencil); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (float* valuePtr = value) + { + Context.glClearNamedFramebufferfv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (int* valuePtr = value) + { + Context.glClearNamedFramebufferiv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearNamedFramebuffer(GlHandle framebuffer, uint buffer, int drawbuffer, ReadOnlySpan value) + { + fixed (uint* valuePtr = value) + { + Context.glClearNamedFramebufferuiv(framebuffer.Value, buffer, drawbuffer, valuePtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClipControl(uint origin, uint depth) + { + Context.glClipControl(origin, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage1D(texture.Value, level, xoffset, width, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompressedTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, void* data) + { + Context.glCompressedTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyNamedBufferSubData(GlHandle readBuffer, GlHandle writeBuffer, nint readOffset, nint writeOffset, nint size) + { + Context.glCopyNamedBufferSubData(readBuffer.Value, writeBuffer.Value, readOffset, writeOffset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage1D(GlHandle texture, int level, int xoffset, int x, int y, int width) + { + Context.glCopyTextureSubImage1D(texture.Value, level, xoffset, x, y, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int x, int y, int width, int height) + { + Context.glCopyTextureSubImage2D(texture.Value, level, xoffset, yoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CopyTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + { + Context.glCopyTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, x, y, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateBuffers(Span buffers) + { + fixed (uint* buffersPtr = buffers) + { + Context.glCreateBuffers(checked((int)buffers.Length), buffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateFramebuffers(Span framebuffers) + { + fixed (uint* framebuffersPtr = framebuffers) + { + Context.glCreateFramebuffers(checked((int)framebuffers.Length), framebuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateProgramPipelines(Span pipelines) + { + fixed (uint* pipelinesPtr = pipelines) + { + Context.glCreateProgramPipelines(checked((int)pipelines.Length), pipelinesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateQueries(uint target, Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glCreateQueries(target, checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateRenderbuffers(Span renderbuffers) + { + fixed (uint* renderbuffersPtr = renderbuffers) + { + Context.glCreateRenderbuffers(checked((int)renderbuffers.Length), renderbuffersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateSamplers(Span samplers) + { + fixed (uint* samplersPtr = samplers) + { + Context.glCreateSamplers(checked((int)samplers.Length), samplersPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTextures(uint target, Span textures) + { + fixed (uint* texturesPtr = textures) + { + Context.glCreateTextures(target, checked((int)textures.Length), texturesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateTransformFeedbacks(Span ids) + { + fixed (uint* idsPtr = ids) + { + Context.glCreateTransformFeedbacks(checked((int)ids.Length), idsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CreateVertexArrays(Span arrays) + { + fixed (uint* arraysPtr = arrays) + { + Context.glCreateVertexArrays(checked((int)arrays.Length), arraysPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DisableVertexArrayAttrib(uint vaobj, uint index) + { + Context.glDisableVertexArrayAttrib(vaobj, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnableVertexArrayAttrib(uint vaobj, uint index) + { + Context.glEnableVertexArrayAttrib(vaobj, index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FlushMappedNamedBufferRange(GlHandle buffer, nint offset, nint length) + { + Context.glFlushMappedNamedBufferRange(buffer.Value, offset, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateTextureMipmap(GlHandle texture) + { + Context.glGenerateTextureMipmap(texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTextureImage(GlHandle texture, int level, int bufSize, void* pixels) + { + Context.glGetCompressedTextureImage(texture.Value, level, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetCompressedTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int bufSize, void* pixels) + { + Context.glGetCompressedTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetGraphicsResetStatus() + { + return Context.glGetGraphicsResetStatus(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) + { + fixed (long* @paramsPtr = @params) + { + Context.glGetNamedBufferParameteri64v(buffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferParameter(GlHandle buffer, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedBufferParameteriv(buffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferPointerv(GlHandle buffer, uint pname, void** @params) + { + Context.glGetNamedBufferPointerv(buffer.Value, pname, @params); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) + { + Context.glGetNamedBufferSubData(buffer.Value, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferAttachmentParameteriv(GlHandle framebuffer, uint attachment, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedFramebufferAttachmentParameteriv(framebuffer.Value, attachment, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedFramebufferParameteriv(GlHandle framebuffer, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetNamedFramebufferParameteriv(framebuffer.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetNamedRenderbufferParameteriv(GlHandle renderbuffer, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetNamedRenderbufferParameteriv(renderbuffer.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObject(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjecti64v(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectiv(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectiv(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectui64v(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectui64v(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetQueryBufferObjectuiv(uint id, GlHandle buffer, uint pname, nint offset) + { + Context.glGetQueryBufferObjectuiv(id, buffer.Value, pname, offset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureImage(GlHandle texture, int level, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetTextureImage(texture.Value, level, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTextureLevelParameterfv(texture.Value, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureLevelParameter(GlHandle texture, int level, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureLevelParameteriv(texture.Value, level, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureParameterIiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameterI(GlHandle texture, uint pname, Span @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glGetTextureParameterIuiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameter(GlHandle texture, uint pname, Span @params) + { + fixed (float* @paramsPtr = @params) + { + Context.glGetTextureParameterfv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureParameter(GlHandle texture, uint pname, Span @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glGetTextureParameteriv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTextureSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetTextureSubImage(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki64_v(uint xfb, uint pname, uint index, Span param) + { + fixed (long* paramPtr = param) + { + Context.glGetTransformFeedbacki64_v(xfb, pname, index, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbacki_v(uint xfb, uint pname, uint index, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetTransformFeedbacki_v(xfb, pname, index, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetTransformFeedbackiv(uint xfb, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetTransformFeedbackiv(xfb, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexed64iv(uint vaobj, uint index, uint pname, Span param) + { + fixed (long* paramPtr = param) + { + Context.glGetVertexArrayIndexed64iv(vaobj, index, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayIndexediv(uint vaobj, uint index, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetVertexArrayIndexediv(vaobj, index, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetVertexArrayiv(uint vaobj, uint pname, Span param) + { + fixed (int* paramPtr = param) + { + Context.glGetVertexArrayiv(vaobj, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnCompressedTexImage(uint target, int lod, int bufSize, void* pixels) + { + Context.glGetnCompressedTexImage(target, lod, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnTexImage(uint target, int level, uint format, uint type, int bufSize, void* pixels) + { + Context.glGetnTexImage(target, level, format, type, bufSize, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 8)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 8'.", nameof(@params)); + } + fixed (double* @paramsPtr = @params) + { + Context.glGetnUniformdv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (float* @paramsPtr = @params) + { + Context.glGetnUniformfv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (int* @paramsPtr = @params) + { + Context.glGetnUniformiv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GetnUniform(GlHandle program, int location, int bufSize, Span @params) + { + if (@params.Length < checked((int)bufSize / 4)) { + throw new ArgumentException("Span is shorter than the OpenGL length expression 'bufSize / 4'.", nameof(@params)); + } + fixed (uint* @paramsPtr = @params) + { + Context.glGetnUniformuiv(program.Value, location, bufSize, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferData(GlHandle framebuffer, ReadOnlySpan attachments) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateNamedFramebufferData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InvalidateNamedFramebufferSubData(GlHandle framebuffer, ReadOnlySpan attachments, int x, int y, int width, int height) + { + fixed (uint* attachmentsPtr = attachments) + { + Context.glInvalidateNamedFramebufferSubData(framebuffer.Value, checked((int)attachments.Length), attachmentsPtr, x, y, width, height); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapNamedBuffer(GlHandle buffer, uint access) + { + return Context.glMapNamedBuffer(buffer.Value, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void* MapNamedBufferRange(GlHandle buffer, nint offset, nint length, uint access) + { + return Context.glMapNamedBufferRange(buffer.Value, offset, length, access); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MemoryBarrierByRegion(uint barriers) + { + Context.glMemoryBarrierByRegion(barriers); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferData(GlHandle buffer, nint size, void* data, uint usage) + { + Context.glNamedBufferData(buffer.Value, size, data, usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferStorage(GlHandle buffer, nint size, void* data, uint flags) + { + Context.glNamedBufferStorage(buffer.Value, size, data, flags); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedBufferSubData(GlHandle buffer, nint offset, nint size, void* data) + { + Context.glNamedBufferSubData(buffer.Value, offset, size, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffer(GlHandle framebuffer, uint buf) + { + Context.glNamedFramebufferDrawBuffer(framebuffer.Value, buf); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferDrawBuffers(GlHandle framebuffer, ReadOnlySpan bufs) + { + fixed (uint* bufsPtr = bufs) + { + Context.glNamedFramebufferDrawBuffers(framebuffer.Value, checked((int)bufs.Length), bufsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferParameter(GlHandle framebuffer, uint pname, int param) + { + Context.glNamedFramebufferParameteri(framebuffer.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferReadBuffer(GlHandle framebuffer, uint src) + { + Context.glNamedFramebufferReadBuffer(framebuffer.Value, src); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferRenderbuffer(GlHandle framebuffer, uint attachment, uint renderbuffertarget, GlHandle renderbuffer) + { + Context.glNamedFramebufferRenderbuffer(framebuffer.Value, attachment, renderbuffertarget, renderbuffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferTexture(GlHandle framebuffer, uint attachment, GlHandle texture, int level) + { + Context.glNamedFramebufferTexture(framebuffer.Value, attachment, texture.Value, level); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedFramebufferTextureLayer(GlHandle framebuffer, uint attachment, GlHandle texture, int level, int layer) + { + Context.glNamedFramebufferTextureLayer(framebuffer.Value, attachment, texture.Value, level, layer); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedRenderbufferStorage(GlHandle renderbuffer, uint internalformat, int width, int height) + { + Context.glNamedRenderbufferStorage(renderbuffer.Value, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void NamedRenderbufferStorageMultisample(GlHandle renderbuffer, int samples, uint internalformat, int width, int height) + { + Context.glNamedRenderbufferStorageMultisample(renderbuffer.Value, samples, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadnPixels(int x, int y, int width, int height, uint format, uint type, int bufSize, void* data) + { + Context.glReadnPixels(x, y, width, height, format, type, bufSize, data); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBarrier() + { + Context.glTextureBarrier(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBuffer(GlHandle texture, uint internalformat, GlHandle buffer) + { + Context.glTextureBuffer(texture.Value, internalformat, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureBufferRange(GlHandle texture, uint internalformat, GlHandle buffer, nint offset, nint size) + { + Context.glTextureBufferRange(texture.Value, internalformat, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) + { + fixed (int* @paramsPtr = @params) + { + Context.glTextureParameterIiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameterI(GlHandle texture, uint pname, ReadOnlySpan @params) + { + fixed (uint* @paramsPtr = @params) + { + Context.glTextureParameterIuiv(texture.Value, pname, @paramsPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, float param) + { + Context.glTextureParameterf(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) + { + fixed (float* paramPtr = param) + { + Context.glTextureParameterfv(texture.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, int param) + { + Context.glTextureParameteri(texture.Value, pname, param); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(GlHandle texture, uint pname, ReadOnlySpan param) + { + fixed (int* paramPtr = param) + { + Context.glTextureParameteriv(texture.Value, pname, paramPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage1D(GlHandle texture, int levels, uint internalformat, int width) + { + Context.glTextureStorage1D(texture.Value, levels, internalformat, width); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage2D(GlHandle texture, int levels, uint internalformat, int width, int height) + { + Context.glTextureStorage2D(texture.Value, levels, internalformat, width, height); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage2DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, byte fixedsamplelocations) + { + Context.glTextureStorage2DMultisample(texture.Value, samples, internalformat, width, height, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage3D(GlHandle texture, int levels, uint internalformat, int width, int height, int depth) + { + Context.glTextureStorage3D(texture.Value, levels, internalformat, width, height, depth); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureStorage3DMultisample(GlHandle texture, int samples, uint internalformat, int width, int height, int depth, byte fixedsamplelocations) + { + Context.glTextureStorage3DMultisample(texture.Value, samples, internalformat, width, height, depth, fixedsamplelocations); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, uint type, void* pixels) + { + Context.glTextureSubImage1D(texture.Value, level, xoffset, width, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + { + Context.glTextureSubImage2D(texture.Value, level, xoffset, yoffset, width, height, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, void* pixels) + { + Context.glTextureSubImage3D(texture.Value, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackBufferBase(uint xfb, uint index, GlHandle buffer) + { + Context.glTransformFeedbackBufferBase(xfb, index, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TransformFeedbackBufferRange(uint xfb, uint index, GlHandle buffer, nint offset, nint size) + { + Context.glTransformFeedbackBufferRange(xfb, index, buffer.Value, offset, size); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public byte UnmapNamedBuffer(GlHandle buffer) + { + return Context.glUnmapNamedBuffer(buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribBinding(uint vaobj, uint attribindex, uint bindingindex) + { + Context.glVertexArrayAttribBinding(vaobj, attribindex, bindingindex); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribFormat(uint vaobj, uint attribindex, int size, uint type, byte normalized, uint relativeoffset) + { + Context.glVertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribIFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayAttribLFormat(uint vaobj, uint attribindex, int size, uint type, uint relativeoffset) + { + Context.glVertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayBindingDivisor(uint vaobj, uint bindingindex, uint divisor) + { + Context.glVertexArrayBindingDivisor(vaobj, bindingindex, divisor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayElementBuffer(uint vaobj, GlHandle buffer) + { + Context.glVertexArrayElementBuffer(vaobj, buffer.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayVertexBuffer(uint vaobj, uint bindingindex, GlHandle buffer, nint offset, int stride) + { + Context.glVertexArrayVertexBuffer(vaobj, bindingindex, buffer.Value, offset, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexArrayVertexBuffers(uint vaobj, uint first, ReadOnlySpan buffers, ReadOnlySpan offsets, ReadOnlySpan strides) + { + if (offsets.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(offsets)); + } + if (strides.Length != buffers.Length) { + throw new ArgumentException("Span lengths controlled by count must match.", nameof(strides)); + } + fixed (uint* buffersPtr = buffers) + { + fixed (nint* offsetsPtr = offsets) + { + fixed (int* stridesPtr = strides) + { + Context.glVertexArrayVertexBuffers(vaobj, first, checked((int)buffers.Length), buffersPtr, offsetsPtr, stridesPtr); + } + } + } + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs new file mode 100644 index 00000000..2cfb253d --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Raw.v4_6.g.cs @@ -0,0 +1,51 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Version: 4.6 +// +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using StgSharp.Graphics.OpenGL; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawArraysIndirectCount(uint mode, void* indirect, nint drawcount, int maxdrawcount, int stride) + { + Context.glMultiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void MultiDrawElementsIndirectCount(uint mode, uint type, void* indirect, nint drawcount, int maxdrawcount, int stride) + { + Context.glMultiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void PolygonOffsetClamp(float factor, float units, float clamp) + { + Context.glPolygonOffsetClamp(factor, units, clamp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SpecializeShader(GlHandle shader, ReadOnlySpan pEntryPoint, ReadOnlySpan pConstantIndex, ReadOnlySpan pConstantValue) + { + if (pConstantValue.Length != pConstantIndex.Length) { + throw new ArgumentException("Span lengths controlled by numSpecializationConstants must match.", nameof(pConstantValue)); + } + fixed (byte* pEntryPointPtr = pEntryPoint) + { + fixed (uint* pConstantIndexPtr = pConstantIndex) + { + fixed (uint* pConstantValuePtr = pConstantValue) + { + Context.glSpecializeShader(shader.Value, pEntryPointPtr, checked((uint)pConstantIndex.Length), pConstantIndexPtr, pConstantValuePtr); + } + } + } + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs new file mode 100644 index 00000000..71e949cf --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v3_3.g.cs @@ -0,0 +1,261 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 3.3 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1f(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (float* valuesPtr = values) { + Context.glUniform1fv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1i(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (int* valuesPtr = values) { + Context.glUniform1iv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1ui(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (uint* valuesPtr = values) { + Context.glUniform1uiv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2f(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform2fv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2i(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform2iv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2ui(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform2uiv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform3fv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1, int v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3i(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform3iv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3ui(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform3uiv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2, float v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glUniform4fv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int v0, int v1, int v2, int v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4i(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glUniform4iv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, uint v0, uint v1, uint v2, uint v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4ui(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glUniform4uiv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec2 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec3 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, Vec4 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4fv(uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, GraphicsMatrix value, bool transpose = false) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs new file mode 100644 index 00000000..58e8a5a3 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_0.g.cs @@ -0,0 +1,87 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 4.0 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform1d(uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (double* valuesPtr = values) { + Context.glUniform1dv(uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform2d(uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform2dv(uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1, double v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform3d(uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform3dv(uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, double v0, double v1, double v2, double v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glUniform4d(uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glUniform4dv(uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs new file mode 100644 index 00000000..c9d5c485 --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenGLFunction.Uniform.v4_1.g.cs @@ -0,0 +1,334 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Uniform overloads introduced in OpenGL 4.1 +// +using System; +using System.Runtime.CompilerServices; +using StgSharp.Mathematics.Graphics; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1d(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (double* valuesPtr = values) { + Context.glProgramUniform1dv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1f(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (float* valuesPtr = values) { + Context.glProgramUniform1fv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1i(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (int* valuesPtr = values) { + Context.glProgramUniform1iv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform1ui(program.Value, uniform.id.SignedValue, v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + fixed (uint* valuesPtr = values) { + Context.glProgramUniform1uiv(program.Value, uniform.id.SignedValue, values.Length, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2d(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform2dv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2f(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2i(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform2iv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2ui(program.Value, uniform.id.SignedValue, v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 2) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 2.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform2uiv(program.Value, uniform.id.SignedValue, values.Length / 2, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3d(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform3dv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3f(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3i(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform3iv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3ui(program.Value, uniform.id.SignedValue, v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 3) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 3.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform3uiv(program.Value, uniform.id.SignedValue, values.Length / 3, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, double v0, double v1, double v2, double v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4d(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (double* valuesPtr = values) { + Context.glProgramUniform4dv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, float v0, float v1, float v2, float v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4f(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (float* valuesPtr = values) { + Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, int v0, int v1, int v2, int v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4i(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (int* valuesPtr = values) { + Context.glProgramUniform4iv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, uint v0, uint v1, uint v2, uint v3) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4ui(program.Value, uniform.id.SignedValue, v0, v1, v2, v3); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, ReadOnlySpan values) + { + ArgumentNullException.ThrowIfNull(uniform); + if ((values.Length % 4) != 0) { + throw new ArgumentException("Uniform data length must be divisible by 4.", nameof(values)); + } + fixed (uint* valuesPtr = values) { + Context.glProgramUniform4uiv(program.Value, uniform.id.SignedValue, values.Length / 4, valuesPtr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec2 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform2fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec3 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform3fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, Vec4 value) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniform4fv(program.Value, uniform.id.SignedValue, 1, (float*)&value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(GlHandle program, Uniform uniform, GraphicsMatrix value, bool transpose = false) + { + ArgumentNullException.ThrowIfNull(uniform); + Context.glProgramUniformMatrix4fv(program.Value, uniform.id.SignedValue, 1, transpose ? (byte)1 : (byte)0, (float*)&value); + } + + } +} diff --git a/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs b/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs new file mode 100644 index 00000000..05e23dba --- /dev/null +++ b/test/StgSharp.GenerateGL/Generated/OpenglContext.g.cs @@ -0,0 +1,670 @@ +// +// Generated by StgSharp.GenerateGL on 2026-08-25 09:22:55Z +// Aggregated GL3+ commands +// +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial struct OpenglContext + { + internal unsafe delegate* glActiveShaderProgram; + internal unsafe delegate* glActiveTexture; + internal unsafe delegate* glAttachShader; + internal unsafe delegate* glBeginConditionalRender; + internal unsafe delegate* glBeginQuery; + internal unsafe delegate* glBeginQueryIndexed; + internal unsafe delegate* glBeginTransformFeedback; + internal unsafe delegate* glBindAttribLocation; + internal unsafe delegate* glBindBuffer; + internal unsafe delegate* glBindBufferBase; + internal unsafe delegate* glBindBufferRange; + internal unsafe delegate* glBindBuffersBase; + internal unsafe delegate* glBindBuffersRange; + internal unsafe delegate* glBindFragDataLocation; + internal unsafe delegate* glBindFragDataLocationIndexed; + internal unsafe delegate* glBindFramebuffer; + internal unsafe delegate* glBindImageTexture; + internal unsafe delegate* glBindImageTextures; + internal unsafe delegate* glBindProgramPipeline; + internal unsafe delegate* glBindRenderbuffer; + internal unsafe delegate* glBindSampler; + internal unsafe delegate* glBindSamplers; + internal unsafe delegate* glBindTexture; + internal unsafe delegate* glBindTextureUnit; + internal unsafe delegate* glBindTextures; + internal unsafe delegate* glBindTransformFeedback; + internal unsafe delegate* glBindVertexArray; + internal unsafe delegate* glBindVertexBuffer; + internal unsafe delegate* glBindVertexBuffers; + internal unsafe delegate* glBlendColor; + internal unsafe delegate* glBlendEquation; + internal unsafe delegate* glBlendEquationSeparate; + internal unsafe delegate* glBlendEquationSeparatei; + internal unsafe delegate* glBlendEquationi; + internal unsafe delegate* glBlendFunc; + internal unsafe delegate* glBlendFuncSeparate; + internal unsafe delegate* glBlendFuncSeparatei; + internal unsafe delegate* glBlendFunci; + internal unsafe delegate* glBlitFramebuffer; + internal unsafe delegate* glBlitNamedFramebuffer; + internal unsafe delegate* glBufferData; + internal unsafe delegate* glBufferStorage; + internal unsafe delegate* glBufferSubData; + internal unsafe delegate* glCheckFramebufferStatus; + internal unsafe delegate* glCheckNamedFramebufferStatus; + internal unsafe delegate* glClampColor; + internal unsafe delegate* glClear; + internal unsafe delegate* glClearBufferData; + internal unsafe delegate* glClearBufferSubData; + internal unsafe delegate* glClearBufferfi; + internal unsafe delegate* glClearBufferfv; + internal unsafe delegate* glClearBufferiv; + internal unsafe delegate* glClearBufferuiv; + internal unsafe delegate* glClearColor; + internal unsafe delegate* glClearDepth; + internal unsafe delegate* glClearDepthf; + internal unsafe delegate* glClearNamedBufferData; + internal unsafe delegate* glClearNamedBufferSubData; + internal unsafe delegate* glClearNamedFramebufferfi; + internal unsafe delegate* glClearNamedFramebufferfv; + internal unsafe delegate* glClearNamedFramebufferiv; + internal unsafe delegate* glClearNamedFramebufferuiv; + internal unsafe delegate* glClearStencil; + internal unsafe delegate* glClearTexImage; + internal unsafe delegate* glClearTexSubImage; + internal unsafe delegate* glClientWaitSync; + internal unsafe delegate* glClipControl; + internal unsafe delegate* glColorMask; + internal unsafe delegate* glColorMaski; + internal unsafe delegate* glCompileShader; + internal unsafe delegate* glCompressedTexImage1D; + internal unsafe delegate* glCompressedTexImage2D; + internal unsafe delegate* glCompressedTexImage3D; + internal unsafe delegate* glCompressedTexSubImage1D; + internal unsafe delegate* glCompressedTexSubImage2D; + internal unsafe delegate* glCompressedTexSubImage3D; + internal unsafe delegate* glCompressedTextureSubImage1D; + internal unsafe delegate* glCompressedTextureSubImage2D; + internal unsafe delegate* glCompressedTextureSubImage3D; + internal unsafe delegate* glCopyBufferSubData; + internal unsafe delegate* glCopyImageSubData; + internal unsafe delegate* glCopyNamedBufferSubData; + internal unsafe delegate* glCopyTexImage1D; + internal unsafe delegate* glCopyTexImage2D; + internal unsafe delegate* glCopyTexSubImage1D; + internal unsafe delegate* glCopyTexSubImage2D; + internal unsafe delegate* glCopyTexSubImage3D; + internal unsafe delegate* glCopyTextureSubImage1D; + internal unsafe delegate* glCopyTextureSubImage2D; + internal unsafe delegate* glCopyTextureSubImage3D; + internal unsafe delegate* glCreateBuffers; + internal unsafe delegate* glCreateFramebuffers; + internal unsafe delegate* glCreateProgram; + internal unsafe delegate* glCreateProgramPipelines; + internal unsafe delegate* glCreateQueries; + internal unsafe delegate* glCreateRenderbuffers; + internal unsafe delegate* glCreateSamplers; + internal unsafe delegate* glCreateShader; + internal unsafe delegate* glCreateShaderProgramv; + internal unsafe delegate* glCreateTextures; + internal unsafe delegate* glCreateTransformFeedbacks; + internal unsafe delegate* glCreateVertexArrays; + internal unsafe delegate* glCullFace; + internal unsafe delegate* glDebugMessageCallback; + internal unsafe delegate* glDebugMessageControl; + internal unsafe delegate* glDebugMessageInsert; + internal unsafe delegate* glDeleteBuffers; + internal unsafe delegate* glDeleteFramebuffers; + internal unsafe delegate* glDeleteProgram; + internal unsafe delegate* glDeleteProgramPipelines; + internal unsafe delegate* glDeleteQueries; + internal unsafe delegate* glDeleteRenderbuffers; + internal unsafe delegate* glDeleteSamplers; + internal unsafe delegate* glDeleteShader; + internal unsafe delegate* glDeleteSync; + internal unsafe delegate* glDeleteTextures; + internal unsafe delegate* glDeleteTransformFeedbacks; + internal unsafe delegate* glDeleteVertexArrays; + internal unsafe delegate* glDepthFunc; + internal unsafe delegate* glDepthMask; + internal unsafe delegate* glDepthRange; + internal unsafe delegate* glDepthRangeArrayv; + internal unsafe delegate* glDepthRangeIndexed; + internal unsafe delegate* glDepthRangef; + internal unsafe delegate* glDetachShader; + internal unsafe delegate* glDisable; + internal unsafe delegate* glDisableVertexArrayAttrib; + internal unsafe delegate* glDisableVertexAttribArray; + internal unsafe delegate* glDisablei; + internal unsafe delegate* glDispatchCompute; + internal unsafe delegate* glDispatchComputeIndirect; + internal unsafe delegate* glDrawArrays; + internal unsafe delegate* glDrawArraysIndirect; + internal unsafe delegate* glDrawArraysInstanced; + internal unsafe delegate* glDrawArraysInstancedBaseInstance; + internal unsafe delegate* glDrawBuffer; + internal unsafe delegate* glDrawBuffers; + internal unsafe delegate* glDrawElements; + internal unsafe delegate* glDrawElementsBaseVertex; + internal unsafe delegate* glDrawElementsIndirect; + internal unsafe delegate* glDrawElementsInstanced; + internal unsafe delegate* glDrawElementsInstancedBaseInstance; + internal unsafe delegate* glDrawElementsInstancedBaseVertex; + internal unsafe delegate* glDrawElementsInstancedBaseVertexBaseInstance; + internal unsafe delegate* glDrawRangeElements; + internal unsafe delegate* glDrawRangeElementsBaseVertex; + internal unsafe delegate* glDrawTransformFeedback; + internal unsafe delegate* glDrawTransformFeedbackInstanced; + internal unsafe delegate* glDrawTransformFeedbackStream; + internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; + internal unsafe delegate* glEnable; + internal unsafe delegate* glEnableVertexArrayAttrib; + internal unsafe delegate* glEnableVertexAttribArray; + internal unsafe delegate* glEnablei; + internal unsafe delegate* glEndConditionalRender; + internal unsafe delegate* glEndQuery; + internal unsafe delegate* glEndQueryIndexed; + internal unsafe delegate* glEndTransformFeedback; + internal unsafe delegate* glFenceSync; + internal unsafe delegate* glFinish; + internal unsafe delegate* glFlush; + internal unsafe delegate* glFlushMappedBufferRange; + internal unsafe delegate* glFlushMappedNamedBufferRange; + internal unsafe delegate* glFramebufferParameteri; + internal unsafe delegate* glFramebufferRenderbuffer; + internal unsafe delegate* glFramebufferTexture; + internal unsafe delegate* glFramebufferTexture1D; + internal unsafe delegate* glFramebufferTexture2D; + internal unsafe delegate* glFramebufferTexture3D; + internal unsafe delegate* glFramebufferTextureLayer; + internal unsafe delegate* glFrontFace; + internal unsafe delegate* glGenBuffers; + internal unsafe delegate* glGenFramebuffers; + internal unsafe delegate* glGenProgramPipelines; + internal unsafe delegate* glGenQueries; + internal unsafe delegate* glGenRenderbuffers; + internal unsafe delegate* glGenSamplers; + internal unsafe delegate* glGenTextures; + internal unsafe delegate* glGenTransformFeedbacks; + internal unsafe delegate* glGenVertexArrays; + internal unsafe delegate* glGenerateMipmap; + internal unsafe delegate* glGenerateTextureMipmap; + internal unsafe delegate* glGetActiveAtomicCounterBufferiv; + internal unsafe delegate* glGetActiveAttrib; + internal unsafe delegate* glGetActiveSubroutineName; + internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveSubroutineUniformiv; + internal unsafe delegate* glGetActiveUniform; + internal unsafe delegate* glGetActiveUniformBlockName; + internal unsafe delegate* glGetActiveUniformBlockiv; + internal unsafe delegate* glGetActiveUniformName; + internal unsafe delegate* glGetActiveUniformsiv; + internal unsafe delegate* glGetAttachedShaders; + internal unsafe delegate* glGetAttribLocation; + internal unsafe delegate* glGetBooleani_v; + internal unsafe delegate* glGetBooleanv; + internal unsafe delegate* glGetBufferParameteri64v; + internal unsafe delegate* glGetBufferParameteriv; + internal unsafe delegate* glGetBufferPointerv; + internal unsafe delegate* glGetBufferSubData; + internal unsafe delegate* glGetCompressedTexImage; + internal unsafe delegate* glGetCompressedTextureImage; + internal unsafe delegate* glGetCompressedTextureSubImage; + internal unsafe delegate* glGetDebugMessageLog; + internal unsafe delegate* glGetDoublei_v; + internal unsafe delegate* glGetDoublev; + internal unsafe delegate* glGetError; + internal unsafe delegate* glGetFloati_v; + internal unsafe delegate* glGetFloatv; + internal unsafe delegate* glGetFragDataIndex; + internal unsafe delegate* glGetFragDataLocation; + internal unsafe delegate* glGetFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetFramebufferParameteriv; + internal unsafe delegate* glGetGraphicsResetStatus; + internal unsafe delegate* glGetInteger64i_v; + internal unsafe delegate* glGetInteger64v; + internal unsafe delegate* glGetIntegeri_v; + internal unsafe delegate* glGetIntegerv; + internal unsafe delegate* glGetInternalformati64v; + internal unsafe delegate* glGetInternalformativ; + internal unsafe delegate* glGetMultisamplefv; + internal unsafe delegate* glGetNamedBufferParameteri64v; + internal unsafe delegate* glGetNamedBufferParameteriv; + internal unsafe delegate* glGetNamedBufferPointerv; + internal unsafe delegate* glGetNamedBufferSubData; + internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetNamedFramebufferParameteriv; + internal unsafe delegate* glGetNamedRenderbufferParameteriv; + internal unsafe delegate* glGetObjectLabel; + internal unsafe delegate* glGetObjectPtrLabel; + internal unsafe delegate* glGetPointerv; + internal unsafe delegate* glGetProgramBinary; + internal unsafe delegate* glGetProgramInfoLog; + internal unsafe delegate* glGetProgramInterfaceiv; + internal unsafe delegate* glGetProgramPipelineInfoLog; + internal unsafe delegate* glGetProgramPipelineiv; + internal unsafe delegate* glGetProgramResourceIndex; + internal unsafe delegate* glGetProgramResourceLocation; + internal unsafe delegate* glGetProgramResourceLocationIndex; + internal unsafe delegate* glGetProgramResourceName; + internal unsafe delegate* glGetProgramResourceiv; + internal unsafe delegate* glGetProgramStageiv; + internal unsafe delegate* glGetProgramiv; + internal unsafe delegate* glGetQueryBufferObjecti64v; + internal unsafe delegate* glGetQueryBufferObjectiv; + internal unsafe delegate* glGetQueryBufferObjectui64v; + internal unsafe delegate* glGetQueryBufferObjectuiv; + internal unsafe delegate* glGetQueryIndexediv; + internal unsafe delegate* glGetQueryObjecti64v; + internal unsafe delegate* glGetQueryObjectiv; + internal unsafe delegate* glGetQueryObjectui64v; + internal unsafe delegate* glGetQueryObjectuiv; + internal unsafe delegate* glGetQueryiv; + internal unsafe delegate* glGetRenderbufferParameteriv; + internal unsafe delegate* glGetSamplerParameterIiv; + internal unsafe delegate* glGetSamplerParameterIuiv; + internal unsafe delegate* glGetSamplerParameterfv; + internal unsafe delegate* glGetSamplerParameteriv; + internal unsafe delegate* glGetShaderInfoLog; + internal unsafe delegate* glGetShaderPrecisionFormat; + internal unsafe delegate* glGetShaderSource; + internal unsafe delegate* glGetShaderiv; + internal unsafe delegate* glGetString; + internal unsafe delegate* glGetStringi; + internal unsafe delegate* glGetSubroutineIndex; + internal unsafe delegate* glGetSubroutineUniformLocation; + internal unsafe delegate* glGetSynciv; + internal unsafe delegate* glGetTexImage; + internal unsafe delegate* glGetTexLevelParameterfv; + internal unsafe delegate* glGetTexLevelParameteriv; + internal unsafe delegate* glGetTexParameterIiv; + internal unsafe delegate* glGetTexParameterIuiv; + internal unsafe delegate* glGetTexParameterfv; + internal unsafe delegate* glGetTexParameteriv; + internal unsafe delegate* glGetTextureImage; + internal unsafe delegate* glGetTextureLevelParameterfv; + internal unsafe delegate* glGetTextureLevelParameteriv; + internal unsafe delegate* glGetTextureParameterIiv; + internal unsafe delegate* glGetTextureParameterIuiv; + internal unsafe delegate* glGetTextureParameterfv; + internal unsafe delegate* glGetTextureParameteriv; + internal unsafe delegate* glGetTextureSubImage; + internal unsafe delegate* glGetTransformFeedbackVarying; + internal unsafe delegate* glGetTransformFeedbacki64_v; + internal unsafe delegate* glGetTransformFeedbacki_v; + internal unsafe delegate* glGetTransformFeedbackiv; + internal unsafe delegate* glGetUniformBlockIndex; + internal unsafe delegate* glGetUniformIndices; + internal unsafe delegate* glGetUniformLocation; + internal unsafe delegate* glGetUniformSubroutineuiv; + internal unsafe delegate* glGetUniformdv; + internal unsafe delegate* glGetUniformfv; + internal unsafe delegate* glGetUniformiv; + internal unsafe delegate* glGetUniformuiv; + internal unsafe delegate* glGetVertexArrayIndexed64iv; + internal unsafe delegate* glGetVertexArrayIndexediv; + internal unsafe delegate* glGetVertexArrayiv; + internal unsafe delegate* glGetVertexAttribIiv; + internal unsafe delegate* glGetVertexAttribIuiv; + internal unsafe delegate* glGetVertexAttribLdv; + internal unsafe delegate* glGetVertexAttribPointerv; + internal unsafe delegate* glGetVertexAttribdv; + internal unsafe delegate* glGetVertexAttribfv; + internal unsafe delegate* glGetVertexAttribiv; + internal unsafe delegate* glGetnCompressedTexImage; + internal unsafe delegate* glGetnTexImage; + internal unsafe delegate* glGetnUniformdv; + internal unsafe delegate* glGetnUniformfv; + internal unsafe delegate* glGetnUniformiv; + internal unsafe delegate* glGetnUniformuiv; + internal unsafe delegate* glHint; + internal unsafe delegate* glInvalidateBufferData; + internal unsafe delegate* glInvalidateBufferSubData; + internal unsafe delegate* glInvalidateFramebuffer; + internal unsafe delegate* glInvalidateNamedFramebufferData; + internal unsafe delegate* glInvalidateNamedFramebufferSubData; + internal unsafe delegate* glInvalidateSubFramebuffer; + internal unsafe delegate* glInvalidateTexImage; + internal unsafe delegate* glInvalidateTexSubImage; + internal unsafe delegate* glIsBuffer; + internal unsafe delegate* glIsEnabled; + internal unsafe delegate* glIsEnabledi; + internal unsafe delegate* glIsFramebuffer; + internal unsafe delegate* glIsProgram; + internal unsafe delegate* glIsProgramPipeline; + internal unsafe delegate* glIsQuery; + internal unsafe delegate* glIsRenderbuffer; + internal unsafe delegate* glIsSampler; + internal unsafe delegate* glIsShader; + internal unsafe delegate* glIsSync; + internal unsafe delegate* glIsTexture; + internal unsafe delegate* glIsTransformFeedback; + internal unsafe delegate* glIsVertexArray; + internal unsafe delegate* glLineWidth; + internal unsafe delegate* glLinkProgram; + internal unsafe delegate* glLogicOp; + internal unsafe delegate* glMapBuffer; + internal unsafe delegate* glMapBufferRange; + internal unsafe delegate* glMapNamedBuffer; + internal unsafe delegate* glMapNamedBufferRange; + internal unsafe delegate* glMemoryBarrier; + internal unsafe delegate* glMemoryBarrierByRegion; + internal unsafe delegate* glMinSampleShading; + internal unsafe delegate* glMultiDrawArrays; + internal unsafe delegate* glMultiDrawArraysIndirect; + internal unsafe delegate* glMultiDrawArraysIndirectCount; + internal unsafe delegate* glMultiDrawElements; + internal unsafe delegate* glMultiDrawElementsBaseVertex; + internal unsafe delegate* glMultiDrawElementsIndirect; + internal unsafe delegate* glMultiDrawElementsIndirectCount; + internal unsafe delegate* glNamedBufferData; + internal unsafe delegate* glNamedBufferStorage; + internal unsafe delegate* glNamedBufferSubData; + internal unsafe delegate* glNamedFramebufferDrawBuffer; + internal unsafe delegate* glNamedFramebufferDrawBuffers; + internal unsafe delegate* glNamedFramebufferParameteri; + internal unsafe delegate* glNamedFramebufferReadBuffer; + internal unsafe delegate* glNamedFramebufferRenderbuffer; + internal unsafe delegate* glNamedFramebufferTexture; + internal unsafe delegate* glNamedFramebufferTextureLayer; + internal unsafe delegate* glNamedRenderbufferStorage; + internal unsafe delegate* glNamedRenderbufferStorageMultisample; + internal unsafe delegate* glObjectLabel; + internal unsafe delegate* glObjectPtrLabel; + internal unsafe delegate* glPatchParameterfv; + internal unsafe delegate* glPatchParameteri; + internal unsafe delegate* glPauseTransformFeedback; + internal unsafe delegate* glPixelStoref; + internal unsafe delegate* glPixelStorei; + internal unsafe delegate* glPointParameterf; + internal unsafe delegate* glPointParameterfv; + internal unsafe delegate* glPointParameteri; + internal unsafe delegate* glPointParameteriv; + internal unsafe delegate* glPointSize; + internal unsafe delegate* glPolygonMode; + internal unsafe delegate* glPolygonOffset; + internal unsafe delegate* glPolygonOffsetClamp; + internal unsafe delegate* glPopDebugGroup; + internal unsafe delegate* glPrimitiveRestartIndex; + internal unsafe delegate* glProgramBinary; + internal unsafe delegate* glProgramParameteri; + internal unsafe delegate* glProgramUniform1d; + internal unsafe delegate* glProgramUniform1dv; + internal unsafe delegate* glProgramUniform1f; + internal unsafe delegate* glProgramUniform1fv; + internal unsafe delegate* glProgramUniform1i; + internal unsafe delegate* glProgramUniform1iv; + internal unsafe delegate* glProgramUniform1ui; + internal unsafe delegate* glProgramUniform1uiv; + internal unsafe delegate* glProgramUniform2d; + internal unsafe delegate* glProgramUniform2dv; + internal unsafe delegate* glProgramUniform2f; + internal unsafe delegate* glProgramUniform2fv; + internal unsafe delegate* glProgramUniform2i; + internal unsafe delegate* glProgramUniform2iv; + internal unsafe delegate* glProgramUniform2ui; + internal unsafe delegate* glProgramUniform2uiv; + internal unsafe delegate* glProgramUniform3d; + internal unsafe delegate* glProgramUniform3dv; + internal unsafe delegate* glProgramUniform3f; + internal unsafe delegate* glProgramUniform3fv; + internal unsafe delegate* glProgramUniform3i; + internal unsafe delegate* glProgramUniform3iv; + internal unsafe delegate* glProgramUniform3ui; + internal unsafe delegate* glProgramUniform3uiv; + internal unsafe delegate* glProgramUniform4d; + internal unsafe delegate* glProgramUniform4dv; + internal unsafe delegate* glProgramUniform4f; + internal unsafe delegate* glProgramUniform4fv; + internal unsafe delegate* glProgramUniform4i; + internal unsafe delegate* glProgramUniform4iv; + internal unsafe delegate* glProgramUniform4ui; + internal unsafe delegate* glProgramUniform4uiv; + internal unsafe delegate* glProgramUniformMatrix2dv; + internal unsafe delegate* glProgramUniformMatrix2fv; + internal unsafe delegate* glProgramUniformMatrix2x3dv; + internal unsafe delegate* glProgramUniformMatrix2x3fv; + internal unsafe delegate* glProgramUniformMatrix2x4dv; + internal unsafe delegate* glProgramUniformMatrix2x4fv; + internal unsafe delegate* glProgramUniformMatrix3dv; + internal unsafe delegate* glProgramUniformMatrix3fv; + internal unsafe delegate* glProgramUniformMatrix3x2dv; + internal unsafe delegate* glProgramUniformMatrix3x2fv; + internal unsafe delegate* glProgramUniformMatrix3x4dv; + internal unsafe delegate* glProgramUniformMatrix3x4fv; + internal unsafe delegate* glProgramUniformMatrix4dv; + internal unsafe delegate* glProgramUniformMatrix4fv; + internal unsafe delegate* glProgramUniformMatrix4x2dv; + internal unsafe delegate* glProgramUniformMatrix4x2fv; + internal unsafe delegate* glProgramUniformMatrix4x3dv; + internal unsafe delegate* glProgramUniformMatrix4x3fv; + internal unsafe delegate* glProvokingVertex; + internal unsafe delegate* glPushDebugGroup; + internal unsafe delegate* glQueryCounter; + internal unsafe delegate* glReadBuffer; + internal unsafe delegate* glReadPixels; + internal unsafe delegate* glReadnPixels; + internal unsafe delegate* glReleaseShaderCompiler; + internal unsafe delegate* glRenderbufferStorage; + internal unsafe delegate* glRenderbufferStorageMultisample; + internal unsafe delegate* glResumeTransformFeedback; + internal unsafe delegate* glSampleCoverage; + internal unsafe delegate* glSampleMaski; + internal unsafe delegate* glSamplerParameterIiv; + internal unsafe delegate* glSamplerParameterIuiv; + internal unsafe delegate* glSamplerParameterf; + internal unsafe delegate* glSamplerParameterfv; + internal unsafe delegate* glSamplerParameteri; + internal unsafe delegate* glSamplerParameteriv; + internal unsafe delegate* glScissor; + internal unsafe delegate* glScissorArrayv; + internal unsafe delegate* glScissorIndexed; + internal unsafe delegate* glScissorIndexedv; + internal unsafe delegate* glShaderBinary; + internal unsafe delegate* glShaderSource; + internal unsafe delegate* glShaderStorageBlockBinding; + internal unsafe delegate* glSpecializeShader; + internal unsafe delegate* glStencilFunc; + internal unsafe delegate* glStencilFuncSeparate; + internal unsafe delegate* glStencilMask; + internal unsafe delegate* glStencilMaskSeparate; + internal unsafe delegate* glStencilOp; + internal unsafe delegate* glStencilOpSeparate; + internal unsafe delegate* glTexBuffer; + internal unsafe delegate* glTexBufferRange; + internal unsafe delegate* glTexImage1D; + internal unsafe delegate* glTexImage2D; + internal unsafe delegate* glTexImage2DMultisample; + internal unsafe delegate* glTexImage3D; + internal unsafe delegate* glTexImage3DMultisample; + internal unsafe delegate* glTexParameterIiv; + internal unsafe delegate* glTexParameterIuiv; + internal unsafe delegate* glTexParameterf; + internal unsafe delegate* glTexParameterfv; + internal unsafe delegate* glTexParameteri; + internal unsafe delegate* glTexParameteriv; + internal unsafe delegate* glTexStorage1D; + internal unsafe delegate* glTexStorage2D; + internal unsafe delegate* glTexStorage2DMultisample; + internal unsafe delegate* glTexStorage3D; + internal unsafe delegate* glTexStorage3DMultisample; + internal unsafe delegate* glTexSubImage1D; + internal unsafe delegate* glTexSubImage2D; + internal unsafe delegate* glTexSubImage3D; + internal unsafe delegate* glTextureBarrier; + internal unsafe delegate* glTextureBuffer; + internal unsafe delegate* glTextureBufferRange; + internal unsafe delegate* glTextureParameterIiv; + internal unsafe delegate* glTextureParameterIuiv; + internal unsafe delegate* glTextureParameterf; + internal unsafe delegate* glTextureParameterfv; + internal unsafe delegate* glTextureParameteri; + internal unsafe delegate* glTextureParameteriv; + internal unsafe delegate* glTextureStorage1D; + internal unsafe delegate* glTextureStorage2D; + internal unsafe delegate* glTextureStorage2DMultisample; + internal unsafe delegate* glTextureStorage3D; + internal unsafe delegate* glTextureStorage3DMultisample; + internal unsafe delegate* glTextureSubImage1D; + internal unsafe delegate* glTextureSubImage2D; + internal unsafe delegate* glTextureSubImage3D; + internal unsafe delegate* glTextureView; + internal unsafe delegate* glTransformFeedbackBufferBase; + internal unsafe delegate* glTransformFeedbackBufferRange; + internal unsafe delegate* glTransformFeedbackVaryings; + internal unsafe delegate* glUniform1d; + internal unsafe delegate* glUniform1dv; + internal unsafe delegate* glUniform1f; + internal unsafe delegate* glUniform1fv; + internal unsafe delegate* glUniform1i; + internal unsafe delegate* glUniform1iv; + internal unsafe delegate* glUniform1ui; + internal unsafe delegate* glUniform1uiv; + internal unsafe delegate* glUniform2d; + internal unsafe delegate* glUniform2dv; + internal unsafe delegate* glUniform2f; + internal unsafe delegate* glUniform2fv; + internal unsafe delegate* glUniform2i; + internal unsafe delegate* glUniform2iv; + internal unsafe delegate* glUniform2ui; + internal unsafe delegate* glUniform2uiv; + internal unsafe delegate* glUniform3d; + internal unsafe delegate* glUniform3dv; + internal unsafe delegate* glUniform3f; + internal unsafe delegate* glUniform3fv; + internal unsafe delegate* glUniform3i; + internal unsafe delegate* glUniform3iv; + internal unsafe delegate* glUniform3ui; + internal unsafe delegate* glUniform3uiv; + internal unsafe delegate* glUniform4d; + internal unsafe delegate* glUniform4dv; + internal unsafe delegate* glUniform4f; + internal unsafe delegate* glUniform4fv; + internal unsafe delegate* glUniform4i; + internal unsafe delegate* glUniform4iv; + internal unsafe delegate* glUniform4ui; + internal unsafe delegate* glUniform4uiv; + internal unsafe delegate* glUniformBlockBinding; + internal unsafe delegate* glUniformMatrix2dv; + internal unsafe delegate* glUniformMatrix2fv; + internal unsafe delegate* glUniformMatrix2x3dv; + internal unsafe delegate* glUniformMatrix2x3fv; + internal unsafe delegate* glUniformMatrix2x4dv; + internal unsafe delegate* glUniformMatrix2x4fv; + internal unsafe delegate* glUniformMatrix3dv; + internal unsafe delegate* glUniformMatrix3fv; + internal unsafe delegate* glUniformMatrix3x2dv; + internal unsafe delegate* glUniformMatrix3x2fv; + internal unsafe delegate* glUniformMatrix3x4dv; + internal unsafe delegate* glUniformMatrix3x4fv; + internal unsafe delegate* glUniformMatrix4dv; + internal unsafe delegate* glUniformMatrix4fv; + internal unsafe delegate* glUniformMatrix4x2dv; + internal unsafe delegate* glUniformMatrix4x2fv; + internal unsafe delegate* glUniformMatrix4x3dv; + internal unsafe delegate* glUniformMatrix4x3fv; + internal unsafe delegate* glUniformSubroutinesuiv; + internal unsafe delegate* glUnmapBuffer; + internal unsafe delegate* glUnmapNamedBuffer; + internal unsafe delegate* glUseProgram; + internal unsafe delegate* glUseProgramStages; + internal unsafe delegate* glValidateProgram; + internal unsafe delegate* glValidateProgramPipeline; + internal unsafe delegate* glVertexArrayAttribBinding; + internal unsafe delegate* glVertexArrayAttribFormat; + internal unsafe delegate* glVertexArrayAttribIFormat; + internal unsafe delegate* glVertexArrayAttribLFormat; + internal unsafe delegate* glVertexArrayBindingDivisor; + internal unsafe delegate* glVertexArrayElementBuffer; + internal unsafe delegate* glVertexArrayVertexBuffer; + internal unsafe delegate* glVertexArrayVertexBuffers; + internal unsafe delegate* glVertexAttrib1d; + internal unsafe delegate* glVertexAttrib1dv; + internal unsafe delegate* glVertexAttrib1f; + internal unsafe delegate* glVertexAttrib1fv; + internal unsafe delegate* glVertexAttrib1s; + internal unsafe delegate* glVertexAttrib1sv; + internal unsafe delegate* glVertexAttrib2d; + internal unsafe delegate* glVertexAttrib2dv; + internal unsafe delegate* glVertexAttrib2f; + internal unsafe delegate* glVertexAttrib2fv; + internal unsafe delegate* glVertexAttrib2s; + internal unsafe delegate* glVertexAttrib2sv; + internal unsafe delegate* glVertexAttrib3d; + internal unsafe delegate* glVertexAttrib3dv; + internal unsafe delegate* glVertexAttrib3f; + internal unsafe delegate* glVertexAttrib3fv; + internal unsafe delegate* glVertexAttrib3s; + internal unsafe delegate* glVertexAttrib3sv; + internal unsafe delegate* glVertexAttrib4Nbv; + internal unsafe delegate* glVertexAttrib4Niv; + internal unsafe delegate* glVertexAttrib4Nsv; + internal unsafe delegate* glVertexAttrib4Nub; + internal unsafe delegate* glVertexAttrib4Nubv; + internal unsafe delegate* glVertexAttrib4Nuiv; + internal unsafe delegate* glVertexAttrib4Nusv; + internal unsafe delegate* glVertexAttrib4bv; + internal unsafe delegate* glVertexAttrib4d; + internal unsafe delegate* glVertexAttrib4dv; + internal unsafe delegate* glVertexAttrib4f; + internal unsafe delegate* glVertexAttrib4fv; + internal unsafe delegate* glVertexAttrib4iv; + internal unsafe delegate* glVertexAttrib4s; + internal unsafe delegate* glVertexAttrib4sv; + internal unsafe delegate* glVertexAttrib4ubv; + internal unsafe delegate* glVertexAttrib4uiv; + internal unsafe delegate* glVertexAttrib4usv; + internal unsafe delegate* glVertexAttribBinding; + internal unsafe delegate* glVertexAttribDivisor; + internal unsafe delegate* glVertexAttribFormat; + internal unsafe delegate* glVertexAttribI1i; + internal unsafe delegate* glVertexAttribI1iv; + internal unsafe delegate* glVertexAttribI1ui; + internal unsafe delegate* glVertexAttribI1uiv; + internal unsafe delegate* glVertexAttribI2i; + internal unsafe delegate* glVertexAttribI2iv; + internal unsafe delegate* glVertexAttribI2ui; + internal unsafe delegate* glVertexAttribI2uiv; + internal unsafe delegate* glVertexAttribI3i; + internal unsafe delegate* glVertexAttribI3iv; + internal unsafe delegate* glVertexAttribI3ui; + internal unsafe delegate* glVertexAttribI3uiv; + internal unsafe delegate* glVertexAttribI4bv; + internal unsafe delegate* glVertexAttribI4i; + internal unsafe delegate* glVertexAttribI4iv; + internal unsafe delegate* glVertexAttribI4sv; + internal unsafe delegate* glVertexAttribI4ubv; + internal unsafe delegate* glVertexAttribI4ui; + internal unsafe delegate* glVertexAttribI4uiv; + internal unsafe delegate* glVertexAttribI4usv; + internal unsafe delegate* glVertexAttribIFormat; + internal unsafe delegate* glVertexAttribIPointer; + internal unsafe delegate* glVertexAttribL1d; + internal unsafe delegate* glVertexAttribL1dv; + internal unsafe delegate* glVertexAttribL2d; + internal unsafe delegate* glVertexAttribL2dv; + internal unsafe delegate* glVertexAttribL3d; + internal unsafe delegate* glVertexAttribL3dv; + internal unsafe delegate* glVertexAttribL4d; + internal unsafe delegate* glVertexAttribL4dv; + internal unsafe delegate* glVertexAttribLFormat; + internal unsafe delegate* glVertexAttribLPointer; + internal unsafe delegate* glVertexAttribP1ui; + internal unsafe delegate* glVertexAttribP1uiv; + internal unsafe delegate* glVertexAttribP2ui; + internal unsafe delegate* glVertexAttribP2uiv; + internal unsafe delegate* glVertexAttribP3ui; + internal unsafe delegate* glVertexAttribP3uiv; + internal unsafe delegate* glVertexAttribP4ui; + internal unsafe delegate* glVertexAttribP4uiv; + internal unsafe delegate* glVertexAttribPointer; + internal unsafe delegate* glVertexBindingDivisor; + internal unsafe delegate* glViewport; + internal unsafe delegate* glViewportArrayv; + internal unsafe delegate* glViewportIndexedf; + internal unsafe delegate* glViewportIndexedfv; + internal unsafe delegate* glWaitSync; + } +} diff --git a/test/StgSharp.GenerateGL/Program.cs b/test/StgSharp.GenerateGL/Program.cs index 75a7db4d..9f3a775f 100644 --- a/test/StgSharp.GenerateGL/Program.cs +++ b/test/StgSharp.GenerateGL/Program.cs @@ -40,7 +40,9 @@ namespace GenerateGL { string baseDir = AppContext.BaseDirectory; string xmlPath = Path.GetFullPath(Path.Combine(baseDir, "xml", "gl.xml")); - string outputRoot = Path.GetFullPath(Path.Combine(baseDir, "Generated")); + string outputRoot = args.Length > 0 + ? Path.GetFullPath(args[0]) + : Path.GetFullPath(Path.Combine(baseDir, "Generated")); Console.WriteLine($"[GenerateGL] Loading registry: {xmlPath}"); var (commands, features) = GlXmlParser.Parse(xmlPath);