From 0b2593a5f65da400bd2dff6e2ff95d3403da8d79 Mon Sep 17 00:00:00 2001 From: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com> Date: Fri, 28 Aug 2026 18:09:56 +0800 Subject: [PATCH] genericed graphic vector design --- src/README.md | 31 + src/StgSharp.Graphics/Camera.cs | 3 +- .../OpenGL/Api/OpenGLFunction.Buffer.cs | 75 -- .../OpenGL/Api/OpenGLFunction.Context.cs | 4 +- .../OpenGL/Api/OpenGLFunction.Drawing.cs | 105 --- .../OpenGL/Api/OpenGLFunction.Framebuffer.cs | 154 ---- .../OpenGL/Api/OpenGLFunction.Texture.cs | 140 ---- .../OpenGL/Api/OpenGLFunction.TextureUnits.cs | 71 -- .../OpenGL/Api/OpenGLFunction.Uniform.cs | 29 - .../OpenGL/Api/OpenGLFunction.VertexArray.cs | 90 --- .../OpenGL/Generated/OpenGLFunction.Base.g.cs | 220 +++--- .../OpenGL/Generated/OpenGLFunction.v3_3.g.cs | 50 +- .../OpenGL/Generated/OpenGLFunction.v4_0.g.cs | 24 +- .../OpenGL/Generated/OpenGLFunction.v4_1.g.cs | 16 +- .../OpenGL/Generated/OpenGLFunction.v4_2.g.cs | 10 +- .../OpenGL/Generated/OpenGLFunction.v4_3.g.cs | 22 +- .../OpenGL/Generated/OpenGLFunction.v4_4.g.cs | 6 +- .../OpenGL/Generated/OpenGLFunction.v4_5.g.cs | 202 +++--- .../OpenGL/Generated/OpenGLFunction.v4_6.g.cs | 2 +- .../OpenGL/Generated/OpenglContext.g.cs | 1 + .../OpenGL/Generated/glContextShadow.g.cs | 669 +++++++++++++++++ .../OpenGL/glContextShadow.cs | 678 ------------------ .../OpenGL/glRenderStream.cs | 3 +- src/StgSharp.Graphics/PlainGeometryMesh.cs | 4 +- src/StgSharp.Graphics/RenderStream.cs | 6 +- src/StgSharp.Graphics/TextureProvider.cs | 7 +- .../Coordination/CoordinationBase.cs | 2 +- .../Coordination/PlainCoordinate.cs | 2 +- .../Coordination/SpaceCoordinate.cs | 2 +- .../GeometryOperation/GeometryOperation.cs | 2 +- .../Geometries/IGeometry.cs | 2 +- .../Geometries/IInstancing.cs | 2 +- .../Geometries/IInstancingBuffer.cs | 2 +- .../PlainGeometry/Define/GeometryOperation.cs | 2 +- .../PlainGeometry/Define/IPlainEntity.cs | 3 +- .../PlainGeometry/Define/ParticleOnPlain.cs | 4 +- .../PlainGeometry/Define/PlainGeometry.cs | 2 +- .../Define/PlainInstancingBuffer.cs | 2 +- .../Geometries/PlainGeometry/Parallelogram.cs | 2 +- .../Geometries/PlainGeometry/Plain.cs | 2 +- .../Geometries/PlainGeometry/Polygon4.cs | 2 +- .../Geometries/PlainGeometry/Polygon5.cs | 2 +- .../Geometries/PlainGeometry/Polygon6.cs | 4 +- .../Geometries/PlainGeometry/Rectangle.cs | 4 +- .../Geometries/PlainGeometry/Triangle.cs | 2 +- src/StgSharp.Mathematics/Geometries/Point.cs | 2 +- .../SpaceGeometry/TriangulatedSurface.cs | 2 +- .../Numeric/Graphics/GraphicVector.cs | 42 ++ .../Numeric/Graphics/GraphicsMatrix.cs | 2 +- .../Numeric/Graphics/Vec2.cs | 203 +++--- .../Numeric/Graphics/Vec3.cs | 294 +++----- .../Numeric/Graphics/Vec3_T.cs | 300 ++++++++ .../Numeric/Graphics/Vec4.cs | 234 +++--- .../Numeric/Graphics/Vector.Cross.cs | 35 - .../Numeric/Graphics/Vector.GetAngle.cs | 20 +- .../Numeric/Graphics/Vector.GetLength.cs | 20 +- .../Numeric/Graphics/Vector.Normalize.cs | 4 +- .../Numeric/Graphics/Vector.Orthogonalize.cs | 4 +- test/README.md | 19 + test/StgSharpDebug/RenderStream/Partical.cs | 189 ++--- tools/README.md | 17 + .../Generation/OpenGlGenerator.cs | 40 +- .../Naming/CSharpIdentifierPolicy.cs | 20 + tools/StgSharp.GenerateGL/README.md | 5 +- 64 files changed, 1890 insertions(+), 2229 deletions(-) create mode 100644 src/README.md delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs create mode 100644 src/StgSharp.Graphics/OpenGL/Generated/glContextShadow.g.cs delete mode 100644 src/StgSharp.Graphics/OpenGL/glContextShadow.cs create mode 100644 src/StgSharp.Mathematics/Numeric/Graphics/GraphicVector.cs create mode 100644 src/StgSharp.Mathematics/Numeric/Graphics/Vec3_T.cs delete mode 100644 src/StgSharp.Mathematics/Numeric/Graphics/Vector.Cross.cs create mode 100644 test/README.md create mode 100644 tools/README.md diff --git a/src/README.md b/src/README.md new file mode 100644 index 00000000..c6505c06 --- /dev/null +++ b/src/README.md @@ -0,0 +1,31 @@ +# Source Projects + +This directory contains the production source code, native runtime, supporting applications, and benchmarks for StgSharp. Most managed projects target .NET 8. The native project is built separately with CMake and provides platform and SIMD functionality consumed by managed projects. + +## Directory map + +| Directory | Purpose | +| --- | --- | +| `StgSharp.Common` | Shared collections, memory management, threading, pipelines, platform abstractions, and other foundational APIs. | +| `StgSharp.Mathematics` | Numeric types, vectors, matrices, geometry, and managed access to accelerated math operations. | +| `StgSharp.Graphics` | OpenGL bindings, rendering infrastructure, shaders, textures, windows, and input integration. | +| `StgSharp.Native` | C native runtime, GLFW/STBI integration, allocators, platform code, and optimized SIMD/matrix kernels. See its own `README.md` for native build details. | +| `StgSharp.RegularAnalysis` | NGRA regular-language analysis, regex processing, intermediate representations, and source-generation infrastructure. | +| `StgSharp.UserInterface` | State-oriented user-interface framework and its incremental source generator. | +| `StgSharp.TerminalDialogue` | Terminal user-interface components and an interactive terminal application. | +| `StgSharp.Benchmark` | BenchmarkDotNet workloads for measuring selected runtime and allocation behavior. | +| `StgSharp.Script` | Retained sources from the earlier EXPRESS implementation. The planned Script layer has not started and is expected to build on NGRA. | +| `StgSharp.Model` | Placeholder project whose design is being reconsidered. | +| `StgSharp.Tools` | Small retained comparison and inspection artifacts; it is not currently a buildable project. | + +## Build notes + +Build the native library before running managed components that require it: + +```powershell +cmake --preset clang-release -S src/StgSharp.Native +cmake --build cmake_build/clang-release +dotnet build StgSharp.sln +``` + +Managed builds copy an existing native binary when one is available; they do not invoke CMake automatically. Generated OpenGL files under `StgSharp.Graphics/OpenGL/Generated` should be updated through the generator in `tools/StgSharp.GenerateGL`, not edited by hand. diff --git a/src/StgSharp.Graphics/Camera.cs b/src/StgSharp.Graphics/Camera.cs index 0f7c1393..6a87a602 100644 --- a/src/StgSharp.Graphics/Camera.cs +++ b/src/StgSharp.Graphics/Camera.cs @@ -5,9 +5,10 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- +using StgSharp.Mathematics.Numeric.Graphics; using System; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { public sealed class Camera { diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs deleted file mode 100644 index 82b556d7..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Buffer.cs +++ /dev/null @@ -1,75 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="OpenGLFunction.Buffer" -// 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 BindBuffer( - BufferType bufferType, - GlHandle handle - ) - { - _context->glBindBuffer((uint)bufferType, handle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteBuffer( - GlHandle handle - ) - { - _context->glDeleteBuffers(1, &handle.Value); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteBuffers( - ReadOnlySpan handles - ) - { - fixed (GlHandle* handlesPtr = handles) { - _context->glDeleteBuffers(handles.Length, (uint*)handlesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle[] GenBuffers( - int count - ) - { - ArgumentOutOfRangeException.ThrowIfNegative(count); - - GlHandle[] handles = new GlHandle[count]; - if (handles.Length == 0) { - return handles; - } - - fixed (GlHandle* handlesPtr = handles) { - _context->glGenBuffers(count, (uint*)handlesPtr); - } - return handles; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetBufferData( - BufferType bufferType, - ReadOnlySpan bufferData, - BufferUsage usage - ) where T : unmanaged - { - nint sizeInBytes = checked((nint)bufferData.Length * sizeof(T)); - fixed (T* bufferPtr = bufferData) { - _context->glBufferData((uint)bufferType, sizeInBytes, bufferPtr, (uint)usage); - } - } - - } -} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs index 22f29e63..aaf1b8a5 100644 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs +++ b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Context.cs @@ -23,8 +23,8 @@ namespace StgSharp.Graphics.OpenGL private OpenGLFunction() { - textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS; - UnusedTextureImageUint = []; + // textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS; + // UnusedTextureImageUint = []; _attachmentColorRange = new Lazy( () => GetMaskInteger(glConst.MAX_COLOR_ATTACHMENTS)); } diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs deleted file mode 100644 index a863c921..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Drawing.cs +++ /dev/null @@ -1,105 +0,0 @@ -// ----------------------------------------------------------------------------- -// 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 deleted file mode 100644 index ee2a6488..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Framebuffer.cs +++ /dev/null @@ -1,154 +0,0 @@ -// ----------------------------------------------------------------------------- -// 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 - ) - { - if (framebuffers.IsEmpty) { - return; - } - - fixed (GlHandle* framebuffersPtr = framebuffers) { - Context.glGenFramebuffers(framebuffers.Length, (uint*)framebuffersPtr); - } - } - - /// Delete framebuffer object handles. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteFramebuffers( - ReadOnlySpan framebuffers - ) - { - fixed (GlHandle* framebuffersPtr = framebuffers) { - Context.glDeleteFramebuffers(framebuffers.Length, (uint*)framebuffersPtr); - } - } - - /// - /// Bind a framebuffer object to a framebuffer target. - /// - /// 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); - } - - /// Delete renderbuffer object handles. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteRenderbuffers( - ReadOnlySpan renderbuffers - ) - { - fixed (GlHandle* renderbuffersPtr = renderbuffers) { - Context.glDeleteRenderbuffers(renderbuffers.Length, (uint*)renderbuffersPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrameBufferTexture2d( - FrameBufferTarget target, - 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 - ) - { - ArgumentOutOfRangeException.ThrowIfNegative(count); - - GlHandle[] h = new GlHandle[count]; - if (h.Length == 0) { - return h; - } - - 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.Texture.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs deleted file mode 100644 index 35d32420..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Texture.cs +++ /dev/null @@ -1,140 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="OpenGLFunction.Texture" -// 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 ActiveTextureUnit( - uint type - ) - { - _context->glActiveTexture(type); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenTextures( - int count - ) - { - ArgumentOutOfRangeException.ThrowIfNegative(count); - - GlHandle[] h = new GlHandle[count]; - if (h.Length == 0) { - return h; - } - - fixed (GlHandle* hptr = h) { - _context->glGenTextures(count, (uint*)hptr); - } - return h; - } - - /// Delete texture object handles. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DeleteTextures( - ReadOnlySpan textures - ) - { - fixed (GlHandle* texturesPtr = textures) { - Context.glDeleteTextures(textures.Length, (uint*)texturesPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void GetTextureImage( - Texture2DTarget target, - int level, - FrameBufferChannel channel, - PixelChannelLayout channelLayout, - Span destination - ) where T : unmanaged - { - fixed (T* tptr = destination) { - _context->glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, - 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, - Span destination - ) where T : unmanaged - { - fixed (T* destinationPtr = destination) { - _context->glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height, - (uint)format, (uint)dataType, destinationPtr); - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d( - Texture2DTarget target, - int level, - int internalFormat, - int width, - int height, - FrameBufferChannel format, - PixelChannelLayout type - ) - { - _context->glTexImage2D((uint)target, level, internalFormat, width, height, 0, - (uint)format, (uint)type, (void*)0); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d( - Texture2DTarget target, - int level, - int internalFormat, - int width, - int height, - FrameBufferChannel format, - PixelChannelLayout type, - ReadOnlySpan pixels - ) where T : unmanaged - { - fixed (T* pixelPtr = pixels) { - _context->glTexImage2D((uint)target, level, internalFormat, width, height, 0, - (uint)format, (uint)type, pixelPtr); - } - } - - [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/Api/OpenGLFunction.TextureUnits.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs deleted file mode 100644 index 777e1285..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.TextureUnits.cs +++ /dev/null @@ -1,71 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="OpenGLFunction.TextureUnits" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Runtime.CompilerServices; - -namespace StgSharp.Graphics.OpenGL -{ - public partial class OpenGLFunction - { - - private readonly int textureUnitCountGetter; - - public int TextureUnitCount => textureUnitCountGetter; - - private ConcurrentQueue UnusedTextureImageUint - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get; - } = []; - - internal void ReturnAvailableUnit( - IEnumerable source - ) - { - int v = glConst.TEXTURE0 + TextureUnitCount; - foreach (TextureUnit unit in source) - { - if ((int)unit > v) { - throw new InvalidOperationException( - "Source contains texture unit beyond context support."); - } - } - } - - internal int TryGetAvailableTextureUnit( - int count, - out IEnumerable result - ) - { - result = new Queue(); - for (int i = 0; i < count; i++) - { - if (UnusedTextureImageUint.TryDequeue(out TextureUnit unit)) - { - (result as Queue)!.Enqueue(unit); - } else - { - return i; - } - } - return count; - } - - private ConcurrentQueue InitializeUnusedTextureImageUint() - { - ConcurrentQueue result = new ConcurrentQueue(); - for (int index = 0; index < TextureUnitCount; index++) { - result.Enqueue((TextureUnit)(glConst.TEXTURE0 + index)); - } - return result; - } - - } -} diff --git a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs b/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs deleted file mode 100644 index e105cf66..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.Uniform.cs +++ /dev/null @@ -1,29 +0,0 @@ -// ----------------------------------------------------------------------------- -// 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 deleted file mode 100644 index cf2f4114..00000000 --- a/src/StgSharp.Graphics/OpenGL/Api/OpenGLFunction.VertexArray.cs +++ /dev/null @@ -1,90 +0,0 @@ -// ----------------------------------------------------------------------------- -// 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( - ReadOnlySpan arrays - ) - { - fixed (GlHandle* arraysPtr = arrays) { - _context->glDeleteVertexArrays(arrays.Length, (uint*)arraysPtr); - } - } - - public unsafe GlHandle[] GenVertexArrays( - int count - ) - { - ArgumentOutOfRangeException.ThrowIfNegative(count); - - GlHandle[] h = new GlHandle[count]; - if (h.Length == 0) { - return h; - } - - fixed (GlHandle* hptr = h) { - _context->glGenVertexArrays(count, (uint*)hptr); - } - return h; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetVertexAttribute( - uint index, - int size, - TypeCode t, - bool normalized, - int stride, - int pointer - ) - { - uint type = t switch - { - TypeCode.Single => glConst.FLOAT, - TypeCode.Int32 => glConst.INT, - TypeCode.UInt32 => glConst.UNSIGNED_INT, - TypeCode.Int16 => glConst.SHORT, - TypeCode.UInt16 => glConst.UNSIGNED_SHORT, - TypeCode.SByte => glConst.BYTE, - TypeCode.Byte => glConst.UNSIGNED_BYTE, - _ => throw new ArgumentOutOfRangeException(nameof(t), t, - "The type cannot be used as an OpenGL vertex attribute."), - }; - _context->glVertexAttribPointer(index, size, type, (byte)(normalized ? 1 : 0), stride, - (nint*)pointer); - _context->glEnableVertexAttribArray(index); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttributeDivisor( - uint layoutIndex, - uint divisor - ) - { - _context->glVertexAttribDivisor(layoutIndex, divisor); - } - - } -} diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Base.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Base.g.cs index e4447331..4339f8ad 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Base.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.Base.g.cs @@ -3,8 +3,8 @@ // Desktop OpenGL forwarding methods introduced through 3.2 and retained by the target core profile. // -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -103,9 +103,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(uint target, uint pname, float param) + public void TextureParameter(uint target, uint pName, float param) { - __context->glTexParameterf(target, pname, param); + __context->glTexParameterf(target, pName, param); } /// @@ -114,9 +114,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(uint target, uint pname, float* @params) + public void TextureParameter(uint target, uint pName, float* @params) { - __context->glTexParameterfv(target, pname, @params); + __context->glTexParameterfv(target, pName, @params); } /// @@ -125,9 +125,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(uint target, uint pname, int param) + public void TextureParameter(uint target, uint pName, int param) { - __context->glTexParameteri(target, pname, param); + __context->glTexParameteri(target, pName, param); } /// @@ -136,9 +136,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(uint target, uint pname, int* @params) + public void TextureParameter(uint target, uint pName, int* @params) { - __context->glTexParameteriv(target, pname, @params); + __context->glTexParameteriv(target, pName, @params); } /// @@ -356,9 +356,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PixelStore(uint pname, float param) + public void PixelStore(uint pName, float param) { - __context->glPixelStoref(pname, param); + __context->glPixelStoref(pName, param); } /// @@ -367,9 +367,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PixelStore(uint pname, int param) + public void PixelStore(uint pName, int param) { - __context->glPixelStorei(pname, param); + __context->glPixelStorei(pName, param); } /// @@ -400,11 +400,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetValue(uint pname, Span values) + public void GetValue(uint pName, Span values) { fixed (byte* __value = values) { - __context->glGetBooleanv(pname, __value); + __context->glGetBooleanv(pName, __value); } } @@ -414,11 +414,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetValue(uint pname, Span values) + public void GetValue(uint pName, Span values) { fixed (double* __value = values) { - __context->glGetDoublev(pname, __value); + __context->glGetDoublev(pName, __value); } } @@ -439,11 +439,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetValue(uint pname, Span values) + public void GetValue(uint pName, Span values) { fixed (float* __value = values) { - __context->glGetFloatv(pname, __value); + __context->glGetFloatv(pName, __value); } } @@ -453,11 +453,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetValue(uint pname, Span values) + public void GetValue(uint pName, Span values) { fixed (int* __value = values) { - __context->glGetIntegerv(pname, __value); + __context->glGetIntegerv(pName, __value); } } @@ -489,9 +489,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameter(uint target, uint pname, float* @params) + public void GetTextureParameter(uint target, uint pName, float* @params) { - __context->glGetTexParameterfv(target, pname, @params); + __context->glGetTexParameterfv(target, pName, @params); } /// @@ -500,9 +500,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameter(uint target, uint pname, int* @params) + public void GetTextureParameter(uint target, uint pName, int* @params) { - __context->glGetTexParameteriv(target, pname, @params); + __context->glGetTexParameteriv(target, pName, @params); } /// @@ -511,9 +511,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureLevelParameter(uint target, int level, uint pname, float* @params) + public void GetTextureLevelParameter(uint target, int level, uint pName, float* @params) { - __context->glGetTexLevelParameterfv(target, level, pname, @params); + __context->glGetTexLevelParameterfv(target, level, pName, @params); } /// @@ -522,9 +522,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureLevelParameter(uint target, int level, uint pname, int* @params) + public void GetTextureLevelParameter(uint target, int level, uint pName, int* @params) { - __context->glGetTexLevelParameteriv(target, level, pname, @params); + __context->glGetTexLevelParameteriv(target, level, pName, @params); } /// @@ -588,9 +588,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetPointerv(uint pname, void** @params) + public void GetPointerv(uint pName, void** @params) { - __context->glGetPointerv(pname, @params); + __context->glGetPointerv(pName, @params); } /// @@ -632,9 +632,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) + public void CopyTexSubImage1D(uint target, int level, int xOffset, int x, int y, int width) { - __context->glCopyTexSubImage1D(target, level, xoffset, x, y, width); + __context->glCopyTexSubImage1D(target, level, xOffset, x, y, width); } /// @@ -643,9 +643,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) + 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); + __context->glCopyTexSubImage2D(target, level, xOffset, yOffset, x, y, width, height); } /// @@ -654,9 +654,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, void* pixels) + 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); + __context->glTexSubImage1D(target, level, xOffset, width, format, type, pixels); } /// @@ -665,9 +665,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + 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); + __context->glTexSubImage2D(target, level, xOffset, yOffset, width, height, format, type, pixels); } /// @@ -748,9 +748,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glTexSubImage3D(target, level, xOffset, yOffset, zOffset, width, height, depth, format, type, pixels); } /// @@ -759,9 +759,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + 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); + __context->glCopyTexSubImage3D(target, level, xOffset, yOffset, zOffset, x, y, width, height); } /// @@ -825,9 +825,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glCompressedTexSubImage3D(target, level, xOffset, yOffset, zOffset, width, height, depth, format, imageSize, data); } /// @@ -836,9 +836,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + 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); + __context->glCompressedTexSubImage2D(target, level, xOffset, yOffset, width, height, format, imageSize, data); } /// @@ -847,9 +847,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, void* data) + 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); + __context->glCompressedTexSubImage1D(target, level, xOffset, width, format, imageSize, data); } /// @@ -902,9 +902,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, float param) + public void PointParameter(uint pName, float param) { - __context->glPointParameterf(pname, param); + __context->glPointParameterf(pName, param); } /// @@ -913,9 +913,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, float* @params) + public void PointParameter(uint pName, float* @params) { - __context->glPointParameterfv(pname, @params); + __context->glPointParameterfv(pName, @params); } /// @@ -924,9 +924,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, int param) + public void PointParameter(uint pName, int param) { - __context->glPointParameteri(pname, param); + __context->glPointParameteri(pName, param); } /// @@ -935,9 +935,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PointParameter(uint pname, int* @params) + public void PointParameter(uint pName, int* @params) { - __context->glPointParameteriv(pname, @params); + __context->glPointParameteriv(pName, @params); } /// @@ -1029,9 +1029,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryiv(uint target, uint pname, int* @params) + public void GetQueryiv(uint target, uint pName, int* @params) { - __context->glGetQueryiv(target, pname, @params); + __context->glGetQueryiv(target, pName, @params); } /// @@ -1040,9 +1040,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(GlHandle id, uint pname, int* @params) + public void GetQueryObject(GlHandle id, uint pName, int* @params) { - __context->glGetQueryObjectiv(id.Value, pname, @params); + __context->glGetQueryObjectiv(id.Value, pName, @params); } /// @@ -1051,9 +1051,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(GlHandle id, uint pname, uint* @params) + public void GetQueryObject(GlHandle id, uint pName, uint* @params) { - __context->glGetQueryObjectuiv(id.Value, pname, @params); + __context->glGetQueryObjectuiv(id.Value, pName, @params); } /// @@ -1167,9 +1167,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferParameter(uint target, uint pname, int* @params) + public void GetBufferParameter(uint target, uint pName, int* @params) { - __context->glGetBufferParameteriv(target, pname, @params); + __context->glGetBufferParameteriv(target, pName, @params); } /// @@ -1178,9 +1178,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferPointerv(uint target, uint pname, void** @params) + public void GetBufferPointerv(uint target, uint pName, void** @params) { - __context->glGetBufferPointerv(target, pname, @params); + __context->glGetBufferPointerv(target, pName, @params); } /// @@ -1401,9 +1401,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramiv(GlHandle program, uint pname, int* @params) + public void GetProgramiv(GlHandle program, uint pName, int* @params) { - __context->glGetProgramiv(program.Value, pname, @params); + __context->glGetProgramiv(program.Value, pName, @params); } /// @@ -1423,9 +1423,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetShaderiv(GlHandle shader, uint pname, int* @params) + public void GetShaderiv(GlHandle shader, uint pName, int* @params) { - __context->glGetShaderiv(shader.Value, pname, @params); + __context->glGetShaderiv(shader.Value, pName, @params); } /// @@ -1489,9 +1489,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribute(uint index, uint pname, double* @params) + public void GetVertexAttribute(uint index, uint pName, double* @params) { - __context->glGetVertexAttribdv(index, pname, @params); + __context->glGetVertexAttribdv(index, pName, @params); } /// @@ -1500,9 +1500,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribute(uint index, uint pname, float* @params) + public void GetVertexAttribute(uint index, uint pName, float* @params) { - __context->glGetVertexAttribfv(index, pname, @params); + __context->glGetVertexAttribfv(index, pName, @params); } /// @@ -1511,9 +1511,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttribute(uint index, uint pname, int* @params) + public void GetVertexAttribute(uint index, uint pName, int* @params) { - __context->glGetVertexAttribiv(index, pname, @params); + __context->glGetVertexAttribiv(index, pName, @params); } /// @@ -1522,9 +1522,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttributePointer(uint index, uint pname, void** pointer) + public void GetVertexAttributePointer(uint index, uint pName, void** pointer) { - __context->glGetVertexAttribPointerv(index, pname, pointer); + __context->glGetVertexAttribPointerv(index, pName, pointer); } /// @@ -2280,9 +2280,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttributeInteger(uint index, uint pname, int* @params) + public void GetVertexAttributeInteger(uint index, uint pName, int* @params) { - __context->glGetVertexAttribIiv(index, pname, @params); + __context->glGetVertexAttribIiv(index, pName, @params); } /// @@ -2291,9 +2291,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttributeInteger(uint index, uint pname, uint* @params) + public void GetVertexAttributeInteger(uint index, uint pName, uint* @params) { - __context->glGetVertexAttribIuiv(index, pname, @params); + __context->glGetVertexAttribIuiv(index, pName, @params); } /// @@ -2572,9 +2572,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameterInteger(uint target, uint pname, int* @params) + public void TextureParameterInteger(uint target, uint pName, int* @params) { - __context->glTexParameterIiv(target, pname, @params); + __context->glTexParameterIiv(target, pName, @params); } /// @@ -2583,9 +2583,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameterInteger(uint target, uint pname, uint* @params) + public void TextureParameterInteger(uint target, uint pName, uint* @params) { - __context->glTexParameterIuiv(target, pname, @params); + __context->glTexParameterIuiv(target, pName, @params); } /// @@ -2594,9 +2594,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameterInteger(uint target, uint pname, int* @params) + public void GetTextureParameterInteger(uint target, uint pName, int* @params) { - __context->glGetTexParameterIiv(target, pname, @params); + __context->glGetTexParameterIiv(target, pName, @params); } /// @@ -2605,9 +2605,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTextureParameterInteger(uint target, uint pname, uint* @params) + public void GetTextureParameterInteger(uint target, uint pName, uint* @params) { - __context->glGetTexParameterIuiv(target, pname, @params); + __context->glGetTexParameterIuiv(target, pName, @params); } /// @@ -2732,9 +2732,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetRenderBufferParameteriv(uint target, uint pname, int* @params) + public void GetRenderBufferParameteriv(uint target, uint pName, int* @params) { - __context->glGetRenderbufferParameteriv(target, pname, @params); + __context->glGetRenderbufferParameteriv(target, pName, @params); } /// @@ -2826,9 +2826,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrameBufferTexture3D(uint target, uint attachment, uint textarget, GlHandle texture, int level, int zoffset) + public void FrameBufferTexture3D(uint target, uint attachment, uint textarget, GlHandle texture, int level, int zOffset) { - __context->glFramebufferTexture3D(target, attachment, textarget, texture.Value, level, zoffset); + __context->glFramebufferTexture3D(target, attachment, textarget, texture.Value, level, zOffset); } /// @@ -2848,9 +2848,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFrameBufferAttachmentParameteriv(uint target, uint attachment, uint pname, int* @params) + public void GetFrameBufferAttachmentParameteriv(uint target, uint attachment, uint pName, int* @params) { - __context->glGetFramebufferAttachmentParameteriv(target, attachment, pname, @params); + __context->glGetFramebufferAttachmentParameteriv(target, attachment, pName, @params); } /// @@ -3041,9 +3041,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformsiv(GlHandle program, int uniformCount, uint* uniformIndices, uint pname, int* @params) + public void GetActiveUniformsiv(GlHandle program, int uniformCount, uint* uniformIndices, uint pName, int* @params) { - __context->glGetActiveUniformsiv(program.Value, uniformCount, uniformIndices, pname, @params); + __context->glGetActiveUniformsiv(program.Value, uniformCount, uniformIndices, pName, @params); } /// @@ -3074,9 +3074,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveUniformBlockiv(GlHandle program, uint uniformBlockIndex, uint pname, int* @params) + public void GetActiveUniformBlockiv(GlHandle program, uint uniformBlockIndex, uint pName, int* @params) { - __context->glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pname, @params); + __context->glGetActiveUniformBlockiv(program.Value, uniformBlockIndex, pName, @params); } /// @@ -3217,11 +3217,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetValue(uint pname, Span values) + public void GetValue(uint pName, Span values) { fixed (long* __value = values) { - __context->glGetInteger64v(pname, __value); + __context->glGetInteger64v(pName, __value); } } @@ -3231,9 +3231,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSynciv(void* sync, uint pname, int count, int* length, int* values) + public void GetSynciv(void* sync, uint pName, int count, int* length, int* values) { - __context->glGetSynciv(sync, pname, count, length, values); + __context->glGetSynciv(sync, pName, count, length, values); } /// @@ -3256,9 +3256,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetBufferParameter(uint target, uint pname, long* @params) + public void GetBufferParameter(uint target, uint pName, long* @params) { - __context->glGetBufferParameteri64v(target, pname, @params); + __context->glGetBufferParameteri64v(target, pName, @params); } /// @@ -3300,9 +3300,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetMultisamplefv(uint pname, uint index, float* val) + public void GetMultisamplefv(uint pName, uint index, float* val) { - __context->glGetMultisamplefv(pname, index, val); + __context->glGetMultisamplefv(pName, index, val); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v3_3.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v3_3.g.cs index 98ccebbc..b0ac7399 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v3_3.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v3_3.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 3.3 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -91,9 +91,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, int param) + public void SamplerParameter(GlHandle sampler, uint pName, int param) { - __context->glSamplerParameteri(sampler.Value, pname, param); + __context->glSamplerParameteri(sampler.Value, pName, param); } /// @@ -102,9 +102,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, int* param) + public void SamplerParameter(GlHandle sampler, uint pName, int* param) { - __context->glSamplerParameteriv(sampler.Value, pname, param); + __context->glSamplerParameteriv(sampler.Value, pName, param); } /// @@ -113,9 +113,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, float param) + public void SamplerParameter(GlHandle sampler, uint pName, float param) { - __context->glSamplerParameterf(sampler.Value, pname, param); + __context->glSamplerParameterf(sampler.Value, pName, param); } /// @@ -124,9 +124,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameter(GlHandle sampler, uint pname, float* param) + public void SamplerParameter(GlHandle sampler, uint pName, float* param) { - __context->glSamplerParameterfv(sampler.Value, pname, param); + __context->glSamplerParameterfv(sampler.Value, pName, param); } /// @@ -135,9 +135,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameterInteger(GlHandle sampler, uint pname, int* param) + public void SamplerParameterInteger(GlHandle sampler, uint pName, int* param) { - __context->glSamplerParameterIiv(sampler.Value, pname, param); + __context->glSamplerParameterIiv(sampler.Value, pName, param); } /// @@ -146,9 +146,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SamplerParameterInteger(GlHandle sampler, uint pname, uint* param) + public void SamplerParameterInteger(GlHandle sampler, uint pName, uint* param) { - __context->glSamplerParameterIuiv(sampler.Value, pname, param); + __context->glSamplerParameterIuiv(sampler.Value, pName, param); } /// @@ -157,9 +157,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameter(GlHandle sampler, uint pname, int* @params) + public void GetSamplerParameter(GlHandle sampler, uint pName, int* @params) { - __context->glGetSamplerParameteriv(sampler.Value, pname, @params); + __context->glGetSamplerParameteriv(sampler.Value, pName, @params); } /// @@ -168,9 +168,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameterInteger(GlHandle sampler, uint pname, int* @params) + public void GetSamplerParameterInteger(GlHandle sampler, uint pName, int* @params) { - __context->glGetSamplerParameterIiv(sampler.Value, pname, @params); + __context->glGetSamplerParameterIiv(sampler.Value, pName, @params); } /// @@ -179,9 +179,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameter(GlHandle sampler, uint pname, float* @params) + public void GetSamplerParameter(GlHandle sampler, uint pName, float* @params) { - __context->glGetSamplerParameterfv(sampler.Value, pname, @params); + __context->glGetSamplerParameterfv(sampler.Value, pName, @params); } /// @@ -190,9 +190,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetSamplerParameterInteger(GlHandle sampler, uint pname, uint* @params) + public void GetSamplerParameterInteger(GlHandle sampler, uint pName, uint* @params) { - __context->glGetSamplerParameterIuiv(sampler.Value, pname, @params); + __context->glGetSamplerParameterIuiv(sampler.Value, pName, @params); } /// @@ -212,9 +212,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(GlHandle id, uint pname, long* @params) + public void GetQueryObject(GlHandle id, uint pName, long* @params) { - __context->glGetQueryObjecti64v(id.Value, pname, @params); + __context->glGetQueryObjecti64v(id.Value, pName, @params); } /// @@ -223,9 +223,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryObject(GlHandle id, uint pname, ulong* @params) + public void GetQueryObject(GlHandle id, uint pName, ulong* @params) { - __context->glGetQueryObjectui64v(id.Value, pname, @params); + __context->glGetQueryObjectui64v(id.Value, pName, @params); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_0.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_0.g.cs index 6819fd5d..60268a59 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_0.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_0.g.cs @@ -3,8 +3,8 @@ // Desktop OpenGL 4.0 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -234,9 +234,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pname, int* values) + public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pName, int* values) { - __context->glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pname, values); + __context->glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pName, values); } /// @@ -289,9 +289,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramStageiv(GlHandle program, uint shadertype, uint pname, int* values) + public void GetProgramStageiv(GlHandle program, uint shadertype, uint pName, int* values) { - __context->glGetProgramStageiv(program.Value, shadertype, pname, values); + __context->glGetProgramStageiv(program.Value, shadertype, pName, values); } /// @@ -300,9 +300,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PatchParameter(uint pname, int value) + public void PatchParameter(uint pName, int value) { - __context->glPatchParameteri(pname, value); + __context->glPatchParameteri(pName, value); } /// @@ -311,9 +311,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void PatchParameter(uint pname, float* values) + public void PatchParameter(uint pName, float* values) { - __context->glPatchParameterfv(pname, values); + __context->glPatchParameterfv(pName, values); } /// @@ -438,9 +438,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryIndexediv(uint target, uint index, uint pname, int* @params) + public void GetQueryIndexediv(uint target, uint index, uint pName, int* @params) { - __context->glGetQueryIndexediv(target, index, pname, @params); + __context->glGetQueryIndexediv(target, index, pName, @params); } } diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_1.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_1.g.cs index cf034d87..d07a698b 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_1.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_1.g.cs @@ -3,8 +3,8 @@ // Desktop OpenGL 4.1 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -99,9 +99,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ProgramParameteri(GlHandle program, uint pname, int value) + public void ProgramParameteri(GlHandle program, uint pName, int value) { - __context->glProgramParameteri(program.Value, pname, value); + __context->glProgramParameteri(program.Value, pName, value); } /// @@ -193,9 +193,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramPipelineiv(GlHandle pipeline, uint pname, int* @params) + public void GetProgramPipelineiv(GlHandle pipeline, uint pName, int* @params) { - __context->glGetProgramPipelineiv(pipeline.Value, pname, @params); + __context->glGetProgramPipelineiv(pipeline.Value, pName, @params); } /// @@ -726,9 +726,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexAttributeDouble(uint index, uint pname, double* @params) + public void GetVertexAttributeDouble(uint index, uint pName, double* @params) { - __context->glGetVertexAttribLdv(index, pname, @params); + __context->glGetVertexAttribLdv(index, pName, @params); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_2.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_2.g.cs index 272c9a6d..163b466c 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_2.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_2.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 4.2 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -52,9 +52,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInternalFormat(uint target, uint internalFormat, uint pname, int count, int* @params) + public void GetInternalFormat(uint target, uint internalFormat, uint pName, int count, int* @params) { - __context->glGetInternalformativ(target, internalFormat, pname, count, @params); + __context->glGetInternalformativ(target, internalFormat, pName, count, @params); } /// @@ -63,9 +63,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetActiveAtomicCounterBufferiv(GlHandle program, uint bufferIndex, uint pname, int* @params) + public void GetActiveAtomicCounterBufferiv(GlHandle program, uint bufferIndex, uint pName, int* @params) { - __context->glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex, pname, @params); + __context->glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex, pName, @params); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_3.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_3.g.cs index 7d0dc50b..b4075d08 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_3.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_3.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 4.3 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -74,9 +74,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrameBufferParameteri(uint target, uint pname, int param) + public void FrameBufferParameteri(uint target, uint pName, int param) { - __context->glFramebufferParameteri(target, pname, param); + __context->glFramebufferParameteri(target, pName, param); } /// @@ -85,9 +85,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetFrameBufferParameteriv(uint target, uint pname, int* @params) + public void GetFrameBufferParameteriv(uint target, uint pName, int* @params) { - __context->glGetFramebufferParameteriv(target, pname, @params); + __context->glGetFramebufferParameteriv(target, pName, @params); } /// @@ -96,9 +96,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetInternalFormat(uint target, uint internalFormat, uint pname, int count, long* @params) + public void GetInternalFormat(uint target, uint internalFormat, uint pName, int count, long* @params) { - __context->glGetInternalformati64v(target, internalFormat, pname, count, @params); + __context->glGetInternalformati64v(target, internalFormat, pName, count, @params); } /// @@ -107,9 +107,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void InvalidateTexSubImage(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth) + 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); + __context->glInvalidateTexSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth); } /// @@ -195,9 +195,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pname, int* @params) + public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pName, int* @params) { - __context->glGetProgramInterfaceiv(program.Value, programInterface, pname, @params); + __context->glGetProgramInterfaceiv(program.Value, programInterface, pName, @params); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_4.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_4.g.cs index b4084002..8e753cfa 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_4.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_4.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 4.4 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -41,9 +41,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glClearTexSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, format, type, data); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_5.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_5.g.cs index f63cfc02..0b5c849a 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_5.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_5.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 4.5 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -66,9 +66,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbackiv(GlHandle xfb, uint pname, int* param) + public void GetTransformFeedbackiv(GlHandle xfb, uint pName, int* param) { - __context->glGetTransformFeedbackiv(xfb.Value, pname, param); + __context->glGetTransformFeedbackiv(xfb.Value, pName, param); } /// @@ -77,9 +77,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbacki_v(GlHandle xfb, uint pname, uint index, int* param) + public void GetTransformFeedbacki_v(GlHandle xfb, uint pName, uint index, int* param) { - __context->glGetTransformFeedbacki_v(xfb.Value, pname, index, param); + __context->glGetTransformFeedbacki_v(xfb.Value, pName, index, param); } /// @@ -88,9 +88,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetTransformFeedbacki64_v(GlHandle xfb, uint pname, uint index, long* param) + public void GetTransformFeedbacki64_v(GlHandle xfb, uint pName, uint index, long* param) { - __context->glGetTransformFeedbacki64_v(xfb.Value, pname, index, param); + __context->glGetTransformFeedbacki64_v(xfb.Value, pName, index, param); } /// @@ -223,9 +223,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferParameter(GlHandle buffer, uint pname, int* @params) + public void GetNamedBufferParameter(GlHandle buffer, uint pName, int* @params) { - __context->glGetNamedBufferParameteriv(buffer.Value, pname, @params); + __context->glGetNamedBufferParameteriv(buffer.Value, pName, @params); } /// @@ -234,9 +234,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferParameter(GlHandle buffer, uint pname, long* @params) + public void GetNamedBufferParameter(GlHandle buffer, uint pName, long* @params) { - __context->glGetNamedBufferParameteri64v(buffer.Value, pname, @params); + __context->glGetNamedBufferParameteri64v(buffer.Value, pName, @params); } /// @@ -245,9 +245,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedBufferPointerv(GlHandle buffer, uint pname, void** @params) + public void GetNamedBufferPointerv(GlHandle buffer, uint pName, void** @params) { - __context->glGetNamedBufferPointerv(buffer.Value, pname, @params); + __context->glGetNamedBufferPointerv(buffer.Value, pName, @params); } /// @@ -292,9 +292,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedFrameBufferParameteri(GlHandle frameBuffer, uint pname, int param) + public void NamedFrameBufferParameteri(GlHandle frameBuffer, uint pName, int param) { - __context->glNamedFramebufferParameteri(frameBuffer.Value, pname, param); + __context->glNamedFramebufferParameteri(frameBuffer.Value, pName, param); } /// @@ -446,9 +446,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedFrameBufferParameteriv(GlHandle frameBuffer, uint pname, int* param) + public void GetNamedFrameBufferParameteriv(GlHandle frameBuffer, uint pName, int* param) { - __context->glGetNamedFramebufferParameteriv(frameBuffer.Value, pname, param); + __context->glGetNamedFramebufferParameteriv(frameBuffer.Value, pName, param); } /// @@ -457,9 +457,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedFrameBufferAttachmentParameteriv(GlHandle frameBuffer, uint attachment, uint pname, int* @params) + public void GetNamedFrameBufferAttachmentParameteriv(GlHandle frameBuffer, uint attachment, uint pName, int* @params) { - __context->glGetNamedFramebufferAttachmentParameteriv(frameBuffer.Value, attachment, pname, @params); + __context->glGetNamedFramebufferAttachmentParameteriv(frameBuffer.Value, attachment, pName, @params); } /// @@ -504,9 +504,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedRenderBufferParameteriv(GlHandle renderBuffer, uint pname, int* @params) + public void GetNamedRenderBufferParameteriv(GlHandle renderBuffer, uint pName, int* @params) { - __context->glGetNamedRenderbufferParameteriv(renderBuffer.Value, pname, @params); + __context->glGetNamedRenderbufferParameteriv(renderBuffer.Value, pName, @params); } /// @@ -606,9 +606,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, uint type, void* pixels) + 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); + __context->glTextureSubImage1D(texture.Value, level, xOffset, width, format, type, pixels); } /// @@ -617,9 +617,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, void* pixels) + 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); + __context->glTextureSubImage2D(texture.Value, level, xOffset, yOffset, width, height, format, type, pixels); } /// @@ -628,9 +628,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glTextureSubImage3D(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, format, type, pixels); } /// @@ -639,9 +639,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTextureSubImage1D(GlHandle texture, int level, int xoffset, int width, uint format, int imageSize, void* data) + 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); + __context->glCompressedTextureSubImage1D(texture.Value, level, xOffset, width, format, imageSize, data); } /// @@ -650,9 +650,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompressedTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, void* data) + 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); + __context->glCompressedTextureSubImage2D(texture.Value, level, xOffset, yOffset, width, height, format, imageSize, data); } /// @@ -661,9 +661,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glCompressedTextureSubImage3D(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, format, imageSize, data); } /// @@ -672,9 +672,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage1D(GlHandle texture, int level, int xoffset, int x, int y, int width) + public void CopyTextureSubImage1D(GlHandle texture, int level, int xOffset, int x, int y, int width) { - __context->glCopyTextureSubImage1D(texture.Value, level, xoffset, x, y, width); + __context->glCopyTextureSubImage1D(texture.Value, level, xOffset, x, y, width); } /// @@ -683,9 +683,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage2D(GlHandle texture, int level, int xoffset, int yoffset, int x, int y, int width, int height) + 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); + __context->glCopyTextureSubImage2D(texture.Value, level, xOffset, yOffset, x, y, width, height); } /// @@ -694,9 +694,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CopyTextureSubImage3D(GlHandle texture, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) + 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); + __context->glCopyTextureSubImage3D(texture.Value, level, xOffset, yOffset, zOffset, x, y, width, height); } /// @@ -705,9 +705,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameter(GlHandle texture, uint pname, float param) + public void NamedTextureParameter(GlHandle texture, uint pName, float param) { - __context->glTextureParameterf(texture.Value, pname, param); + __context->glTextureParameterf(texture.Value, pName, param); } /// @@ -716,9 +716,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameter(GlHandle texture, uint pname, float* param) + public void NamedTextureParameter(GlHandle texture, uint pName, float* param) { - __context->glTextureParameterfv(texture.Value, pname, param); + __context->glTextureParameterfv(texture.Value, pName, param); } /// @@ -727,9 +727,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameter(GlHandle texture, uint pname, int param) + public void NamedTextureParameter(GlHandle texture, uint pName, int param) { - __context->glTextureParameteri(texture.Value, pname, param); + __context->glTextureParameteri(texture.Value, pName, param); } /// @@ -738,9 +738,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameterInteger(GlHandle texture, uint pname, int* @params) + public void NamedTextureParameterInteger(GlHandle texture, uint pName, int* @params) { - __context->glTextureParameterIiv(texture.Value, pname, @params); + __context->glTextureParameterIiv(texture.Value, pName, @params); } /// @@ -749,9 +749,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameterInteger(GlHandle texture, uint pname, uint* @params) + public void NamedTextureParameterInteger(GlHandle texture, uint pName, uint* @params) { - __context->glTextureParameterIuiv(texture.Value, pname, @params); + __context->glTextureParameterIuiv(texture.Value, pName, @params); } /// @@ -760,9 +760,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void NamedTextureParameter(GlHandle texture, uint pname, int* param) + public void NamedTextureParameter(GlHandle texture, uint pName, int* param) { - __context->glTextureParameteriv(texture.Value, pname, param); + __context->glTextureParameteriv(texture.Value, pName, param); } /// @@ -815,9 +815,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureLevelParameter(GlHandle texture, int level, uint pname, float* @params) + public void GetNamedTextureLevelParameter(GlHandle texture, int level, uint pName, float* @params) { - __context->glGetTextureLevelParameterfv(texture.Value, level, pname, @params); + __context->glGetTextureLevelParameterfv(texture.Value, level, pName, @params); } /// @@ -826,9 +826,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureLevelParameter(GlHandle texture, int level, uint pname, int* @params) + public void GetNamedTextureLevelParameter(GlHandle texture, int level, uint pName, int* @params) { - __context->glGetTextureLevelParameteriv(texture.Value, level, pname, @params); + __context->glGetTextureLevelParameteriv(texture.Value, level, pName, @params); } /// @@ -837,9 +837,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureParameter(GlHandle texture, uint pname, float* @params) + public void GetNamedTextureParameter(GlHandle texture, uint pName, float* @params) { - __context->glGetTextureParameterfv(texture.Value, pname, @params); + __context->glGetTextureParameterfv(texture.Value, pName, @params); } /// @@ -848,9 +848,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureParameterInteger(GlHandle texture, uint pname, int* @params) + public void GetNamedTextureParameterInteger(GlHandle texture, uint pName, int* @params) { - __context->glGetTextureParameterIiv(texture.Value, pname, @params); + __context->glGetTextureParameterIiv(texture.Value, pName, @params); } /// @@ -859,9 +859,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureParameterInteger(GlHandle texture, uint pname, uint* @params) + public void GetNamedTextureParameterInteger(GlHandle texture, uint pName, uint* @params) { - __context->glGetTextureParameterIuiv(texture.Value, pname, @params); + __context->glGetTextureParameterIuiv(texture.Value, pName, @params); } /// @@ -870,9 +870,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetNamedTextureParameter(GlHandle texture, uint pname, int* @params) + public void GetNamedTextureParameter(GlHandle texture, uint pName, int* @params) { - __context->glGetTextureParameteriv(texture.Value, pname, @params); + __context->glGetTextureParameteriv(texture.Value, pName, @params); } /// @@ -895,9 +895,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void DisableVertexArrayAttribute(GlHandle vaobj, uint index) + public void DisableVertexArrayAttribute(GlHandle vertexArray, uint index) { - __context->glDisableVertexArrayAttrib(vaobj.Value, index); + __context->glDisableVertexArrayAttrib(vertexArray.Value, index); } /// @@ -906,9 +906,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void EnableVertexArrayAttribute(GlHandle vaobj, uint index) + public void EnableVertexArrayAttribute(GlHandle vertexArray, uint index) { - __context->glEnableVertexArrayAttrib(vaobj.Value, index); + __context->glEnableVertexArrayAttrib(vertexArray.Value, index); } /// @@ -917,9 +917,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayElementBuffer(GlHandle vaobj, GlHandle buffer) + public void VertexArrayElementBuffer(GlHandle vertexArray, GlHandle buffer) { - __context->glVertexArrayElementBuffer(vaobj.Value, buffer.Value); + __context->glVertexArrayElementBuffer(vertexArray.Value, buffer.Value); } /// @@ -928,9 +928,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayVertexBuffer(GlHandle vaobj, uint bindingIndex, GlHandle buffer, nint offset, int stride) + public void VertexArrayVertexBuffer(GlHandle vertexArray, uint bindingIndex, GlHandle buffer, nint offset, int stride) { - __context->glVertexArrayVertexBuffer(vaobj.Value, bindingIndex, buffer.Value, offset, stride); + __context->glVertexArrayVertexBuffer(vertexArray.Value, bindingIndex, buffer.Value, offset, stride); } /// @@ -939,11 +939,11 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayVertexBuffers(GlHandle vaobj, uint first, ReadOnlySpan buffers, nint* offsets, int* strides) + public void VertexArrayVertexBuffers(GlHandle vertexArray, uint first, ReadOnlySpan buffers, nint* offsets, int* strides) { fixed (GlHandle* __buffers = buffers) { - __context->glVertexArrayVertexBuffers(vaobj.Value, first, buffers.Length, (uint*)__buffers, offsets, strides); + __context->glVertexArrayVertexBuffers(vertexArray.Value, first, buffers.Length, (uint*)__buffers, offsets, strides); } } @@ -953,9 +953,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttributeBinding(GlHandle vaobj, uint attributeIndex, uint bindingIndex) + public void VertexArrayAttributeBinding(GlHandle vertexArray, uint attributeIndex, uint bindingIndex) { - __context->glVertexArrayAttribBinding(vaobj.Value, attributeIndex, bindingIndex); + __context->glVertexArrayAttribBinding(vertexArray.Value, attributeIndex, bindingIndex); } /// @@ -964,9 +964,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttributeFormat(GlHandle vaobj, uint attributeIndex, int size, uint type, byte normalized, uint relativeOffset) + public void VertexArrayAttributeFormat(GlHandle vertexArray, uint attributeIndex, int size, uint type, byte normalized, uint relativeOffset) { - __context->glVertexArrayAttribFormat(vaobj.Value, attributeIndex, size, type, normalized, relativeOffset); + __context->glVertexArrayAttribFormat(vertexArray.Value, attributeIndex, size, type, normalized, relativeOffset); } /// @@ -975,9 +975,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttributeIntegerFormat(GlHandle vaobj, uint attributeIndex, int size, uint type, uint relativeOffset) + public void VertexArrayAttributeIntegerFormat(GlHandle vertexArray, uint attributeIndex, int size, uint type, uint relativeOffset) { - __context->glVertexArrayAttribIFormat(vaobj.Value, attributeIndex, size, type, relativeOffset); + __context->glVertexArrayAttribIFormat(vertexArray.Value, attributeIndex, size, type, relativeOffset); } /// @@ -986,9 +986,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayAttributeDoubleFormat(GlHandle vaobj, uint attributeIndex, int size, uint type, uint relativeOffset) + public void VertexArrayAttributeDoubleFormat(GlHandle vertexArray, uint attributeIndex, int size, uint type, uint relativeOffset) { - __context->glVertexArrayAttribLFormat(vaobj.Value, attributeIndex, size, type, relativeOffset); + __context->glVertexArrayAttribLFormat(vertexArray.Value, attributeIndex, size, type, relativeOffset); } /// @@ -997,9 +997,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexArrayBindingDivisor(GlHandle vaobj, uint bindingIndex, uint divisor) + public void VertexArrayBindingDivisor(GlHandle vertexArray, uint bindingIndex, uint divisor) { - __context->glVertexArrayBindingDivisor(vaobj.Value, bindingIndex, divisor); + __context->glVertexArrayBindingDivisor(vertexArray.Value, bindingIndex, divisor); } /// @@ -1008,9 +1008,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayiv(GlHandle vaobj, uint pname, int* param) + public void GetVertexArrayiv(GlHandle vertexArray, uint pName, int* param) { - __context->glGetVertexArrayiv(vaobj.Value, pname, param); + __context->glGetVertexArrayiv(vertexArray.Value, pName, param); } /// @@ -1019,9 +1019,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayIndexediv(GlHandle vaobj, uint index, uint pname, int* param) + public void GetVertexArrayIndexediv(GlHandle vertexArray, uint index, uint pName, int* param) { - __context->glGetVertexArrayIndexediv(vaobj.Value, index, pname, param); + __context->glGetVertexArrayIndexediv(vertexArray.Value, index, pName, param); } /// @@ -1030,9 +1030,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetVertexArrayIndexed64iv(GlHandle vaobj, uint index, uint pname, long* param) + public void GetVertexArrayIndexed64iv(GlHandle vertexArray, uint index, uint pName, long* param) { - __context->glGetVertexArrayIndexed64iv(vaobj.Value, index, pname, param); + __context->glGetVertexArrayIndexed64iv(vertexArray.Value, index, pName, param); } /// @@ -1083,9 +1083,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjecti64v(GlHandle id, GlHandle buffer, uint pname, nint offset) + public void GetQueryBufferObjecti64v(GlHandle id, GlHandle buffer, uint pName, nint offset) { - __context->glGetQueryBufferObjecti64v(id.Value, buffer.Value, pname, offset); + __context->glGetQueryBufferObjecti64v(id.Value, buffer.Value, pName, offset); } /// @@ -1094,9 +1094,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectiv(GlHandle id, GlHandle buffer, uint pname, nint offset) + public void GetQueryBufferObjectiv(GlHandle id, GlHandle buffer, uint pName, nint offset) { - __context->glGetQueryBufferObjectiv(id.Value, buffer.Value, pname, offset); + __context->glGetQueryBufferObjectiv(id.Value, buffer.Value, pName, offset); } /// @@ -1105,9 +1105,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectui64v(GlHandle id, GlHandle buffer, uint pname, nint offset) + public void GetQueryBufferObjectui64v(GlHandle id, GlHandle buffer, uint pName, nint offset) { - __context->glGetQueryBufferObjectui64v(id.Value, buffer.Value, pname, offset); + __context->glGetQueryBufferObjectui64v(id.Value, buffer.Value, pName, offset); } /// @@ -1116,9 +1116,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GetQueryBufferObjectuiv(GlHandle id, GlHandle buffer, uint pname, nint offset) + public void GetQueryBufferObjectuiv(GlHandle id, GlHandle buffer, uint pName, nint offset) { - __context->glGetQueryBufferObjectuiv(id.Value, buffer.Value, pname, offset); + __context->glGetQueryBufferObjectuiv(id.Value, buffer.Value, pName, offset); } /// @@ -1138,9 +1138,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glGetTextureSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, format, type, bufSize, pixels); } /// @@ -1149,9 +1149,9 @@ namespace StgSharp.Graphics.OpenGL /// See docs.gl. /// [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) + 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); + __context->glGetCompressedTextureSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, bufSize, pixels); } /// diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_6.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_6.g.cs index 0896e1a3..dc06a560 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_6.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenGLFunction.v4_6.g.cs @@ -3,7 +3,7 @@ // Desktop OpenGL 4.6 core-profile forwarding methods. // -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; diff --git a/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs index a3ba0578..6bc90278 100644 --- a/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs +++ b/src/StgSharp.Graphics/OpenGL/Generated/OpenglContext.g.cs @@ -5,6 +5,7 @@ namespace StgSharp.Graphics.OpenGL { + [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] public unsafe partial struct OpenglContext { internal delegate* unmanaged glActiveShaderProgram; diff --git a/src/StgSharp.Graphics/OpenGL/Generated/glContextShadow.g.cs b/src/StgSharp.Graphics/OpenGL/Generated/glContextShadow.g.cs new file mode 100644 index 00000000..098da3e1 --- /dev/null +++ b/src/StgSharp.Graphics/OpenGL/Generated/glContextShadow.g.cs @@ -0,0 +1,669 @@ +// +// Generated by StgSharp.GenerateGL. +// Native-address shadow of the OpenGL function pointer table. +// + +namespace StgSharp.Graphics.OpenGL +{ + [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] + internal struct glContextShadow + { + internal nint glActiveShaderProgram; + internal nint glActiveTexture; + internal nint glAttachShader; + internal nint glBeginConditionalRender; + internal nint glBeginQuery; + internal nint glBeginQueryIndexed; + internal nint glBeginTransformFeedback; + internal nint glBindAttribLocation; + internal nint glBindBuffer; + internal nint glBindBufferBase; + internal nint glBindBufferRange; + internal nint glBindBuffersBase; + internal nint glBindBuffersRange; + internal nint glBindFragDataLocation; + internal nint glBindFragDataLocationIndexed; + internal nint glBindFramebuffer; + internal nint glBindImageTexture; + internal nint glBindImageTextures; + internal nint glBindProgramPipeline; + internal nint glBindRenderbuffer; + internal nint glBindSampler; + internal nint glBindSamplers; + internal nint glBindTexture; + internal nint glBindTextureUnit; + internal nint glBindTextures; + internal nint glBindTransformFeedback; + internal nint glBindVertexArray; + internal nint glBindVertexBuffer; + internal nint glBindVertexBuffers; + internal nint glBlendColor; + internal nint glBlendEquation; + internal nint glBlendEquationSeparate; + internal nint glBlendEquationSeparatei; + internal nint glBlendEquationi; + internal nint glBlendFunc; + internal nint glBlendFuncSeparate; + internal nint glBlendFuncSeparatei; + internal nint glBlendFunci; + internal nint glBlitFramebuffer; + internal nint glBlitNamedFramebuffer; + internal nint glBufferData; + internal nint glBufferStorage; + internal nint glBufferSubData; + internal nint glCheckFramebufferStatus; + internal nint glCheckNamedFramebufferStatus; + internal nint glClampColor; + internal nint glClear; + internal nint glClearBufferData; + internal nint glClearBufferSubData; + internal nint glClearBufferfi; + internal nint glClearBufferfv; + internal nint glClearBufferiv; + internal nint glClearBufferuiv; + internal nint glClearColor; + internal nint glClearDepth; + internal nint glClearDepthf; + internal nint glClearNamedBufferData; + internal nint glClearNamedBufferSubData; + internal nint glClearNamedFramebufferfi; + internal nint glClearNamedFramebufferfv; + internal nint glClearNamedFramebufferiv; + internal nint glClearNamedFramebufferuiv; + internal nint glClearStencil; + internal nint glClearTexImage; + internal nint glClearTexSubImage; + internal nint glClientWaitSync; + internal nint glClipControl; + internal nint glColorMask; + internal nint glColorMaski; + internal nint glCompileShader; + internal nint glCompressedTexImage1D; + internal nint glCompressedTexImage2D; + internal nint glCompressedTexImage3D; + internal nint glCompressedTexSubImage1D; + internal nint glCompressedTexSubImage2D; + internal nint glCompressedTexSubImage3D; + internal nint glCompressedTextureSubImage1D; + internal nint glCompressedTextureSubImage2D; + internal nint glCompressedTextureSubImage3D; + internal nint glCopyBufferSubData; + internal nint glCopyImageSubData; + internal nint glCopyNamedBufferSubData; + internal nint glCopyTexImage1D; + internal nint glCopyTexImage2D; + internal nint glCopyTexSubImage1D; + internal nint glCopyTexSubImage2D; + internal nint glCopyTexSubImage3D; + internal nint glCopyTextureSubImage1D; + internal nint glCopyTextureSubImage2D; + internal nint glCopyTextureSubImage3D; + internal nint glCreateBuffers; + internal nint glCreateFramebuffers; + internal nint glCreateProgram; + internal nint glCreateProgramPipelines; + internal nint glCreateQueries; + internal nint glCreateRenderbuffers; + internal nint glCreateSamplers; + internal nint glCreateShader; + internal nint glCreateShaderProgramv; + internal nint glCreateTextures; + internal nint glCreateTransformFeedbacks; + internal nint glCreateVertexArrays; + internal nint glCullFace; + internal nint glDebugMessageCallback; + internal nint glDebugMessageControl; + internal nint glDebugMessageInsert; + internal nint glDeleteBuffers; + internal nint glDeleteFramebuffers; + internal nint glDeleteProgram; + internal nint glDeleteProgramPipelines; + internal nint glDeleteQueries; + internal nint glDeleteRenderbuffers; + internal nint glDeleteSamplers; + internal nint glDeleteShader; + internal nint glDeleteSync; + internal nint glDeleteTextures; + internal nint glDeleteTransformFeedbacks; + internal nint glDeleteVertexArrays; + internal nint glDepthFunc; + internal nint glDepthMask; + internal nint glDepthRange; + internal nint glDepthRangeArrayv; + internal nint glDepthRangeIndexed; + internal nint glDepthRangef; + internal nint glDetachShader; + internal nint glDisable; + internal nint glDisableVertexArrayAttrib; + internal nint glDisableVertexAttribArray; + internal nint glDisablei; + internal nint glDispatchCompute; + internal nint glDispatchComputeIndirect; + internal nint glDrawArrays; + internal nint glDrawArraysIndirect; + internal nint glDrawArraysInstanced; + internal nint glDrawArraysInstancedBaseInstance; + internal nint glDrawBuffer; + internal nint glDrawBuffers; + internal nint glDrawElements; + internal nint glDrawElementsBaseVertex; + internal nint glDrawElementsIndirect; + internal nint glDrawElementsInstanced; + internal nint glDrawElementsInstancedBaseInstance; + internal nint glDrawElementsInstancedBaseVertex; + internal nint glDrawElementsInstancedBaseVertexBaseInstance; + internal nint glDrawRangeElements; + internal nint glDrawRangeElementsBaseVertex; + internal nint glDrawTransformFeedback; + internal nint glDrawTransformFeedbackInstanced; + internal nint glDrawTransformFeedbackStream; + internal nint glDrawTransformFeedbackStreamInstanced; + internal nint glEnable; + internal nint glEnableVertexArrayAttrib; + internal nint glEnableVertexAttribArray; + internal nint glEnablei; + internal nint glEndConditionalRender; + internal nint glEndQuery; + internal nint glEndQueryIndexed; + internal nint glEndTransformFeedback; + internal nint glFenceSync; + internal nint glFinish; + internal nint glFlush; + internal nint glFlushMappedBufferRange; + internal nint glFlushMappedNamedBufferRange; + internal nint glFramebufferParameteri; + internal nint glFramebufferRenderbuffer; + internal nint glFramebufferTexture; + internal nint glFramebufferTexture1D; + internal nint glFramebufferTexture2D; + internal nint glFramebufferTexture3D; + internal nint glFramebufferTextureLayer; + internal nint glFrontFace; + internal nint glGenBuffers; + internal nint glGenFramebuffers; + internal nint glGenProgramPipelines; + internal nint glGenQueries; + internal nint glGenRenderbuffers; + internal nint glGenSamplers; + internal nint glGenTextures; + internal nint glGenTransformFeedbacks; + internal nint glGenVertexArrays; + internal nint glGenerateMipmap; + internal nint glGenerateTextureMipmap; + internal nint glGetActiveAtomicCounterBufferiv; + internal nint glGetActiveAttrib; + internal nint glGetActiveSubroutineName; + internal nint glGetActiveSubroutineUniformName; + internal nint glGetActiveSubroutineUniformiv; + internal nint glGetActiveUniform; + internal nint glGetActiveUniformBlockName; + internal nint glGetActiveUniformBlockiv; + internal nint glGetActiveUniformName; + internal nint glGetActiveUniformsiv; + internal nint glGetAttachedShaders; + internal nint glGetAttribLocation; + internal nint glGetBooleani_v; + internal nint glGetBooleanv; + internal nint glGetBufferParameteri64v; + internal nint glGetBufferParameteriv; + internal nint glGetBufferPointerv; + internal nint glGetBufferSubData; + internal nint glGetCompressedTexImage; + internal nint glGetCompressedTextureImage; + internal nint glGetCompressedTextureSubImage; + internal nint glGetDebugMessageLog; + internal nint glGetDoublei_v; + internal nint glGetDoublev; + internal nint glGetError; + internal nint glGetFloati_v; + internal nint glGetFloatv; + internal nint glGetFragDataIndex; + internal nint glGetFragDataLocation; + internal nint glGetFramebufferAttachmentParameteriv; + internal nint glGetFramebufferParameteriv; + internal nint glGetGraphicsResetStatus; + internal nint glGetInteger64i_v; + internal nint glGetInteger64v; + internal nint glGetIntegeri_v; + internal nint glGetIntegerv; + internal nint glGetInternalformati64v; + internal nint glGetInternalformativ; + internal nint glGetMultisamplefv; + internal nint glGetNamedBufferParameteri64v; + internal nint glGetNamedBufferParameteriv; + internal nint glGetNamedBufferPointerv; + internal nint glGetNamedBufferSubData; + internal nint glGetNamedFramebufferAttachmentParameteriv; + internal nint glGetNamedFramebufferParameteriv; + internal nint glGetNamedRenderbufferParameteriv; + internal nint glGetObjectLabel; + internal nint glGetObjectPtrLabel; + internal nint glGetPointerv; + internal nint glGetProgramBinary; + internal nint glGetProgramInfoLog; + internal nint glGetProgramInterfaceiv; + internal nint glGetProgramPipelineInfoLog; + internal nint glGetProgramPipelineiv; + internal nint glGetProgramResourceIndex; + internal nint glGetProgramResourceLocation; + internal nint glGetProgramResourceLocationIndex; + internal nint glGetProgramResourceName; + internal nint glGetProgramResourceiv; + internal nint glGetProgramStageiv; + internal nint glGetProgramiv; + internal nint glGetQueryBufferObjecti64v; + internal nint glGetQueryBufferObjectiv; + internal nint glGetQueryBufferObjectui64v; + internal nint glGetQueryBufferObjectuiv; + internal nint glGetQueryIndexediv; + internal nint glGetQueryObjecti64v; + internal nint glGetQueryObjectiv; + internal nint glGetQueryObjectui64v; + internal nint glGetQueryObjectuiv; + internal nint glGetQueryiv; + internal nint glGetRenderbufferParameteriv; + internal nint glGetSamplerParameterIiv; + internal nint glGetSamplerParameterIuiv; + internal nint glGetSamplerParameterfv; + internal nint glGetSamplerParameteriv; + internal nint glGetShaderInfoLog; + internal nint glGetShaderPrecisionFormat; + internal nint glGetShaderSource; + internal nint glGetShaderiv; + internal nint glGetString; + internal nint glGetStringi; + internal nint glGetSubroutineIndex; + internal nint glGetSubroutineUniformLocation; + internal nint glGetSynciv; + internal nint glGetTexImage; + internal nint glGetTexLevelParameterfv; + internal nint glGetTexLevelParameteriv; + internal nint glGetTexParameterIiv; + internal nint glGetTexParameterIuiv; + internal nint glGetTexParameterfv; + internal nint glGetTexParameteriv; + internal nint glGetTextureImage; + internal nint glGetTextureLevelParameterfv; + internal nint glGetTextureLevelParameteriv; + internal nint glGetTextureParameterIiv; + internal nint glGetTextureParameterIuiv; + internal nint glGetTextureParameterfv; + internal nint glGetTextureParameteriv; + internal nint glGetTextureSubImage; + internal nint glGetTransformFeedbackVarying; + internal nint glGetTransformFeedbacki64_v; + internal nint glGetTransformFeedbacki_v; + internal nint glGetTransformFeedbackiv; + internal nint glGetUniformBlockIndex; + internal nint glGetUniformIndices; + internal nint glGetUniformLocation; + internal nint glGetUniformSubroutineuiv; + internal nint glGetUniformdv; + internal nint glGetUniformfv; + internal nint glGetUniformiv; + internal nint glGetUniformuiv; + internal nint glGetVertexArrayIndexed64iv; + internal nint glGetVertexArrayIndexediv; + internal nint glGetVertexArrayiv; + internal nint glGetVertexAttribIiv; + internal nint glGetVertexAttribIuiv; + internal nint glGetVertexAttribLdv; + internal nint glGetVertexAttribPointerv; + internal nint glGetVertexAttribdv; + internal nint glGetVertexAttribfv; + internal nint glGetVertexAttribiv; + internal nint glGetnCompressedTexImage; + internal nint glGetnTexImage; + internal nint glGetnUniformdv; + internal nint glGetnUniformfv; + internal nint glGetnUniformiv; + internal nint glGetnUniformuiv; + internal nint glHint; + internal nint glInvalidateBufferData; + internal nint glInvalidateBufferSubData; + internal nint glInvalidateFramebuffer; + internal nint glInvalidateNamedFramebufferData; + internal nint glInvalidateNamedFramebufferSubData; + internal nint glInvalidateSubFramebuffer; + internal nint glInvalidateTexImage; + internal nint glInvalidateTexSubImage; + internal nint glIsBuffer; + internal nint glIsEnabled; + internal nint glIsEnabledi; + internal nint glIsFramebuffer; + internal nint glIsProgram; + internal nint glIsProgramPipeline; + internal nint glIsQuery; + internal nint glIsRenderbuffer; + internal nint glIsSampler; + internal nint glIsShader; + internal nint glIsSync; + internal nint glIsTexture; + internal nint glIsTransformFeedback; + internal nint glIsVertexArray; + internal nint glLineWidth; + internal nint glLinkProgram; + internal nint glLogicOp; + internal nint glMapBuffer; + internal nint glMapBufferRange; + internal nint glMapNamedBuffer; + internal nint glMapNamedBufferRange; + internal nint glMemoryBarrier; + internal nint glMemoryBarrierByRegion; + internal nint glMinSampleShading; + internal nint glMultiDrawArrays; + internal nint glMultiDrawArraysIndirect; + internal nint glMultiDrawArraysIndirectCount; + internal nint glMultiDrawElements; + internal nint glMultiDrawElementsBaseVertex; + internal nint glMultiDrawElementsIndirect; + internal nint glMultiDrawElementsIndirectCount; + internal nint glNamedBufferData; + internal nint glNamedBufferStorage; + internal nint glNamedBufferSubData; + internal nint glNamedFramebufferDrawBuffer; + internal nint glNamedFramebufferDrawBuffers; + internal nint glNamedFramebufferParameteri; + internal nint glNamedFramebufferReadBuffer; + internal nint glNamedFramebufferRenderbuffer; + internal nint glNamedFramebufferTexture; + internal nint glNamedFramebufferTextureLayer; + internal nint glNamedRenderbufferStorage; + internal nint glNamedRenderbufferStorageMultisample; + internal nint glObjectLabel; + internal nint glObjectPtrLabel; + internal nint glPatchParameterfv; + internal nint glPatchParameteri; + internal nint glPauseTransformFeedback; + internal nint glPixelStoref; + internal nint glPixelStorei; + internal nint glPointParameterf; + internal nint glPointParameterfv; + internal nint glPointParameteri; + internal nint glPointParameteriv; + internal nint glPointSize; + internal nint glPolygonMode; + internal nint glPolygonOffset; + internal nint glPolygonOffsetClamp; + internal nint glPopDebugGroup; + internal nint glPrimitiveRestartIndex; + internal nint glProgramBinary; + internal nint glProgramParameteri; + internal nint glProgramUniform1d; + internal nint glProgramUniform1dv; + internal nint glProgramUniform1f; + internal nint glProgramUniform1fv; + internal nint glProgramUniform1i; + internal nint glProgramUniform1iv; + internal nint glProgramUniform1ui; + internal nint glProgramUniform1uiv; + internal nint glProgramUniform2d; + internal nint glProgramUniform2dv; + internal nint glProgramUniform2f; + internal nint glProgramUniform2fv; + internal nint glProgramUniform2i; + internal nint glProgramUniform2iv; + internal nint glProgramUniform2ui; + internal nint glProgramUniform2uiv; + internal nint glProgramUniform3d; + internal nint glProgramUniform3dv; + internal nint glProgramUniform3f; + internal nint glProgramUniform3fv; + internal nint glProgramUniform3i; + internal nint glProgramUniform3iv; + internal nint glProgramUniform3ui; + internal nint glProgramUniform3uiv; + internal nint glProgramUniform4d; + internal nint glProgramUniform4dv; + internal nint glProgramUniform4f; + internal nint glProgramUniform4fv; + internal nint glProgramUniform4i; + internal nint glProgramUniform4iv; + internal nint glProgramUniform4ui; + internal nint glProgramUniform4uiv; + internal nint glProgramUniformMatrix2dv; + internal nint glProgramUniformMatrix2fv; + internal nint glProgramUniformMatrix2x3dv; + internal nint glProgramUniformMatrix2x3fv; + internal nint glProgramUniformMatrix2x4dv; + internal nint glProgramUniformMatrix2x4fv; + internal nint glProgramUniformMatrix3dv; + internal nint glProgramUniformMatrix3fv; + internal nint glProgramUniformMatrix3x2dv; + internal nint glProgramUniformMatrix3x2fv; + internal nint glProgramUniformMatrix3x4dv; + internal nint glProgramUniformMatrix3x4fv; + internal nint glProgramUniformMatrix4dv; + internal nint glProgramUniformMatrix4fv; + internal nint glProgramUniformMatrix4x2dv; + internal nint glProgramUniformMatrix4x2fv; + internal nint glProgramUniformMatrix4x3dv; + internal nint glProgramUniformMatrix4x3fv; + internal nint glProvokingVertex; + internal nint glPushDebugGroup; + internal nint glQueryCounter; + internal nint glReadBuffer; + internal nint glReadPixels; + internal nint glReadnPixels; + internal nint glReleaseShaderCompiler; + internal nint glRenderbufferStorage; + internal nint glRenderbufferStorageMultisample; + internal nint glResumeTransformFeedback; + internal nint glSampleCoverage; + internal nint glSampleMaski; + internal nint glSamplerParameterIiv; + internal nint glSamplerParameterIuiv; + internal nint glSamplerParameterf; + internal nint glSamplerParameterfv; + internal nint glSamplerParameteri; + internal nint glSamplerParameteriv; + internal nint glScissor; + internal nint glScissorArrayv; + internal nint glScissorIndexed; + internal nint glScissorIndexedv; + internal nint glShaderBinary; + internal nint glShaderSource; + internal nint glShaderStorageBlockBinding; + internal nint glSpecializeShader; + internal nint glStencilFunc; + internal nint glStencilFuncSeparate; + internal nint glStencilMask; + internal nint glStencilMaskSeparate; + internal nint glStencilOp; + internal nint glStencilOpSeparate; + internal nint glTexBuffer; + internal nint glTexBufferRange; + internal nint glTexImage1D; + internal nint glTexImage2D; + internal nint glTexImage2DMultisample; + internal nint glTexImage3D; + internal nint glTexImage3DMultisample; + internal nint glTexParameterIiv; + internal nint glTexParameterIuiv; + internal nint glTexParameterf; + internal nint glTexParameterfv; + internal nint glTexParameteri; + internal nint glTexParameteriv; + internal nint glTexStorage1D; + internal nint glTexStorage2D; + internal nint glTexStorage2DMultisample; + internal nint glTexStorage3D; + internal nint glTexStorage3DMultisample; + internal nint glTexSubImage1D; + internal nint glTexSubImage2D; + internal nint glTexSubImage3D; + internal nint glTextureBarrier; + internal nint glTextureBuffer; + internal nint glTextureBufferRange; + internal nint glTextureParameterIiv; + internal nint glTextureParameterIuiv; + internal nint glTextureParameterf; + internal nint glTextureParameterfv; + internal nint glTextureParameteri; + internal nint glTextureParameteriv; + internal nint glTextureStorage1D; + internal nint glTextureStorage2D; + internal nint glTextureStorage2DMultisample; + internal nint glTextureStorage3D; + internal nint glTextureStorage3DMultisample; + internal nint glTextureSubImage1D; + internal nint glTextureSubImage2D; + internal nint glTextureSubImage3D; + internal nint glTextureView; + internal nint glTransformFeedbackBufferBase; + internal nint glTransformFeedbackBufferRange; + internal nint glTransformFeedbackVaryings; + internal nint glUniform1d; + internal nint glUniform1dv; + internal nint glUniform1f; + internal nint glUniform1fv; + internal nint glUniform1i; + internal nint glUniform1iv; + internal nint glUniform1ui; + internal nint glUniform1uiv; + internal nint glUniform2d; + internal nint glUniform2dv; + internal nint glUniform2f; + internal nint glUniform2fv; + internal nint glUniform2i; + internal nint glUniform2iv; + internal nint glUniform2ui; + internal nint glUniform2uiv; + internal nint glUniform3d; + internal nint glUniform3dv; + internal nint glUniform3f; + internal nint glUniform3fv; + internal nint glUniform3i; + internal nint glUniform3iv; + internal nint glUniform3ui; + internal nint glUniform3uiv; + internal nint glUniform4d; + internal nint glUniform4dv; + internal nint glUniform4f; + internal nint glUniform4fv; + internal nint glUniform4i; + internal nint glUniform4iv; + internal nint glUniform4ui; + internal nint glUniform4uiv; + internal nint glUniformBlockBinding; + internal nint glUniformMatrix2dv; + internal nint glUniformMatrix2fv; + internal nint glUniformMatrix2x3dv; + internal nint glUniformMatrix2x3fv; + internal nint glUniformMatrix2x4dv; + internal nint glUniformMatrix2x4fv; + internal nint glUniformMatrix3dv; + internal nint glUniformMatrix3fv; + internal nint glUniformMatrix3x2dv; + internal nint glUniformMatrix3x2fv; + internal nint glUniformMatrix3x4dv; + internal nint glUniformMatrix3x4fv; + internal nint glUniformMatrix4dv; + internal nint glUniformMatrix4fv; + internal nint glUniformMatrix4x2dv; + internal nint glUniformMatrix4x2fv; + internal nint glUniformMatrix4x3dv; + internal nint glUniformMatrix4x3fv; + internal nint glUniformSubroutinesuiv; + internal nint glUnmapBuffer; + internal nint glUnmapNamedBuffer; + internal nint glUseProgram; + internal nint glUseProgramStages; + internal nint glValidateProgram; + internal nint glValidateProgramPipeline; + internal nint glVertexArrayAttribBinding; + internal nint glVertexArrayAttribFormat; + internal nint glVertexArrayAttribIFormat; + internal nint glVertexArrayAttribLFormat; + internal nint glVertexArrayBindingDivisor; + internal nint glVertexArrayElementBuffer; + internal nint glVertexArrayVertexBuffer; + internal nint glVertexArrayVertexBuffers; + internal nint glVertexAttrib1d; + internal nint glVertexAttrib1dv; + internal nint glVertexAttrib1f; + internal nint glVertexAttrib1fv; + internal nint glVertexAttrib1s; + internal nint glVertexAttrib1sv; + internal nint glVertexAttrib2d; + internal nint glVertexAttrib2dv; + internal nint glVertexAttrib2f; + internal nint glVertexAttrib2fv; + internal nint glVertexAttrib2s; + internal nint glVertexAttrib2sv; + internal nint glVertexAttrib3d; + internal nint glVertexAttrib3dv; + internal nint glVertexAttrib3f; + internal nint glVertexAttrib3fv; + internal nint glVertexAttrib3s; + internal nint glVertexAttrib3sv; + internal nint glVertexAttrib4Nbv; + internal nint glVertexAttrib4Niv; + internal nint glVertexAttrib4Nsv; + internal nint glVertexAttrib4Nub; + internal nint glVertexAttrib4Nubv; + internal nint glVertexAttrib4Nuiv; + internal nint glVertexAttrib4Nusv; + internal nint glVertexAttrib4bv; + internal nint glVertexAttrib4d; + internal nint glVertexAttrib4dv; + internal nint glVertexAttrib4f; + internal nint glVertexAttrib4fv; + internal nint glVertexAttrib4iv; + internal nint glVertexAttrib4s; + internal nint glVertexAttrib4sv; + internal nint glVertexAttrib4ubv; + internal nint glVertexAttrib4uiv; + internal nint glVertexAttrib4usv; + internal nint glVertexAttribBinding; + internal nint glVertexAttribDivisor; + internal nint glVertexAttribFormat; + internal nint glVertexAttribI1i; + internal nint glVertexAttribI1iv; + internal nint glVertexAttribI1ui; + internal nint glVertexAttribI1uiv; + internal nint glVertexAttribI2i; + internal nint glVertexAttribI2iv; + internal nint glVertexAttribI2ui; + internal nint glVertexAttribI2uiv; + internal nint glVertexAttribI3i; + internal nint glVertexAttribI3iv; + internal nint glVertexAttribI3ui; + internal nint glVertexAttribI3uiv; + internal nint glVertexAttribI4bv; + internal nint glVertexAttribI4i; + internal nint glVertexAttribI4iv; + internal nint glVertexAttribI4sv; + internal nint glVertexAttribI4ubv; + internal nint glVertexAttribI4ui; + internal nint glVertexAttribI4uiv; + internal nint glVertexAttribI4usv; + internal nint glVertexAttribIFormat; + internal nint glVertexAttribIPointer; + internal nint glVertexAttribL1d; + internal nint glVertexAttribL1dv; + internal nint glVertexAttribL2d; + internal nint glVertexAttribL2dv; + internal nint glVertexAttribL3d; + internal nint glVertexAttribL3dv; + internal nint glVertexAttribL4d; + internal nint glVertexAttribL4dv; + internal nint glVertexAttribLFormat; + internal nint glVertexAttribLPointer; + internal nint glVertexAttribP1ui; + internal nint glVertexAttribP1uiv; + internal nint glVertexAttribP2ui; + internal nint glVertexAttribP2uiv; + internal nint glVertexAttribP3ui; + internal nint glVertexAttribP3uiv; + internal nint glVertexAttribP4ui; + internal nint glVertexAttribP4uiv; + internal nint glVertexAttribPointer; + internal nint glVertexBindingDivisor; + internal nint glViewport; + internal nint glViewportArrayv; + internal nint glViewportIndexedf; + internal nint glViewportIndexedfv; + internal nint glWaitSync; + } +} diff --git a/src/StgSharp.Graphics/OpenGL/glContextShadow.cs b/src/StgSharp.Graphics/OpenGL/glContextShadow.cs deleted file mode 100644 index 9d3542bd..00000000 --- a/src/StgSharp.Graphics/OpenGL/glContextShadow.cs +++ /dev/null @@ -1,678 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="glContextShadow" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace StgSharp.Graphics.OpenGL -{ - internal struct glContextShadow - { - - internal IntPtr glActiveShaderProgram; - internal IntPtr glActiveTexture; - internal IntPtr glAttachShader; - internal IntPtr glBeginConditionalRender; - internal IntPtr glBeginQuery; - internal IntPtr glBeginQueryIndexed; - internal IntPtr glBeginTransformFeedback; - internal IntPtr glBindAttribLocation; - internal IntPtr glBindBuffer; - internal IntPtr glBindBufferBase; - internal IntPtr glBindBufferRange; - internal IntPtr glBindBuffersBase; - internal IntPtr glBindBuffersRange; - internal IntPtr glBindFragDataLocation; - internal IntPtr glBindFragDataLocationIndexed; - internal IntPtr glBindFramebuffer; - internal IntPtr glBindImageTexture; - internal IntPtr glBindImageTextures; - internal IntPtr glBindProgramPipeline; - internal IntPtr glBindRenderbuffer; - internal IntPtr glBindSampler; - internal IntPtr glBindSamplers; - internal IntPtr glBindTexture; - internal IntPtr glBindTextures; - internal IntPtr glBindTextureUnit; - internal IntPtr glBindTransformFeedback; - internal IntPtr glBindVertexArray; - internal IntPtr glBindVertexBuffer; - internal IntPtr glBindVertexBuffers; - internal IntPtr glBlendColor; - internal IntPtr glBlendEquation; - internal IntPtr glBlendEquationi; - internal IntPtr glBlendEquationSeparate; - internal IntPtr glBlendEquationSeparatei; - internal IntPtr glBlendFunc; - internal IntPtr glBlendFunci; - internal IntPtr glBlendFuncSeparate; - internal IntPtr glBlendFuncSeparatei; - internal IntPtr glBlitFramebuffer; - internal IntPtr glBlitNamedFramebuffer; - internal IntPtr glBufferData; - internal IntPtr glBufferStorage; - internal IntPtr glBufferSubData; - internal IntPtr glCheckFramebufferStatus; - internal IntPtr glCheckNamedFramebufferStatus; - internal IntPtr glClampColor; - internal IntPtr glClear; - internal IntPtr glClearBufferData; - internal IntPtr glClearBufferfi; - internal IntPtr glClearBufferfv; - internal IntPtr glClearBufferiv; - internal IntPtr glClearBufferSubData; - internal IntPtr glClearBufferuiv; - internal IntPtr glClearColor; - internal IntPtr glClearDepth; - internal IntPtr glClearDepthf; - internal IntPtr glClearNamedBufferData; - internal IntPtr glClearNamedBufferSubData; - internal IntPtr glClearNamedFramebufferfi; - internal IntPtr glClearNamedFramebufferfv; - internal IntPtr glClearNamedFramebufferiv; - internal IntPtr glClearNamedFramebufferuiv; - internal IntPtr glClearStencil; - internal IntPtr glClearTexImage; - internal IntPtr glClearTexSubImage; - internal IntPtr glClientWaitSync; - internal IntPtr glClipControl; - internal IntPtr glColorMask; - internal IntPtr glColorMaski; - internal IntPtr glCompileShader; - internal IntPtr glCompressedTexImage1D; - internal IntPtr glCompressedTexImage2D; - internal IntPtr glCompressedTexImage3D; - internal IntPtr glCompressedTexSubImage1D; - internal IntPtr glCompressedTexSubImage2D; - internal IntPtr glCompressedTexSubImage3D; - internal IntPtr glCompressedTextureSubImage1D; - internal IntPtr glCompressedTextureSubImage2D; - internal IntPtr glCompressedTextureSubImage3D; - internal IntPtr glCopyBufferSubData; - internal IntPtr glCopyImageSubData; - internal IntPtr glCopyNamedBufferSubData; - internal IntPtr glCopyTexImage1D; - internal IntPtr glCopyTexImage2D; - internal IntPtr glCopyTexSubImage1D; - internal IntPtr glCopyTexSubImage2D; - internal IntPtr glCopyTexSubImage3D; - internal IntPtr glCopyTextureSubImage1D; - internal IntPtr glCopyTextureSubImage2D; - internal IntPtr glCopyTextureSubImage3D; - internal IntPtr glCreateBuffers; - internal IntPtr glCreateFramebuffers; - internal IntPtr glCreateProgram; - internal IntPtr glCreateProgramPipelines; - internal IntPtr glCreateQueries; - internal IntPtr glCreateRenderbuffers; - internal IntPtr glCreateSamplers; - internal IntPtr glCreateShader; - internal IntPtr glCreateShaderProgramv; - internal IntPtr glCreateTextures; - internal IntPtr glCreateTransformFeedbacks; - internal IntPtr glCreateVertexArrays; - internal IntPtr glCullFace; - internal IntPtr glDebugMessageCallback; - internal IntPtr glDebugMessageControl; - internal IntPtr glDebugMessageInsert; - internal IntPtr glDeleteBuffers; - internal IntPtr glDeleteFramebuffers; - internal IntPtr glDeleteProgram; - internal IntPtr glDeleteProgramPipelines; - internal IntPtr glDeleteQueries; - internal IntPtr glDeleteRenderbuffers; - internal IntPtr glDeleteSamplers; - internal IntPtr glDeleteShader; - internal IntPtr glDeleteSync; - internal IntPtr glDeleteTextures; - internal IntPtr glDeleteTransformFeedbacks; - internal IntPtr glDeleteVertexArrays; - internal IntPtr glDepthFunc; - internal IntPtr glDepthMask; - internal IntPtr glDepthRange; - internal IntPtr glDepthRangeArrayv; - internal IntPtr glDepthRangef; - internal IntPtr glDepthRangeIndexed; - internal IntPtr glDetachShader; - internal IntPtr glDisable; - internal IntPtr glDisablei; - internal IntPtr glDisableVertexArrayAttrib; - internal IntPtr glDisableVertexAttribArray; - internal IntPtr glDispatchCompute; - internal IntPtr glDispatchComputeIndirect; - internal IntPtr glDrawArrays; - internal IntPtr glDrawArraysIndirect; - internal IntPtr glDrawArraysInstanced; - internal IntPtr glDrawArraysInstancedBaseInstance; - internal IntPtr glDrawBuffer; - internal IntPtr glDrawBuffers; - internal IntPtr glDrawElements; - internal IntPtr glDrawElementsBaseVertex; - internal IntPtr glDrawElementsIndirect; - internal IntPtr glDrawElementsInstanced; - internal IntPtr glDrawElementsInstancedBaseInstance; - internal IntPtr glDrawElementsInstancedBaseVertex; - internal IntPtr glDrawElementsInstancedBaseVertexBaseInstance; - internal IntPtr glDrawRangeElements; - internal IntPtr glDrawRangeElementsBaseVertex; - internal IntPtr glDrawTransformFeedback; - internal IntPtr glDrawTransformFeedbackInstanced; - internal IntPtr glDrawTransformFeedbackStream; - internal IntPtr glDrawTransformFeedbackStreamInstanced; - internal IntPtr glEnable; - internal IntPtr glEnablei; - internal IntPtr glEnableVertexArrayAttrib; - internal IntPtr glEnableVertexAttribArray; - internal IntPtr glEndConditionalRender; - internal IntPtr glEndQuery; - internal IntPtr glEndQueryIndexed; - internal IntPtr glEndTransformFeedback; - internal IntPtr glFenceSync; - internal IntPtr glFinish; - internal IntPtr glFlush; - internal IntPtr glFlushMappedBufferRange; - internal IntPtr glFlushMappedNamedBufferRange; - internal IntPtr glFramebufferParameteri; - internal IntPtr glFramebufferRenderbuffer; - internal IntPtr glFramebufferTexture; - internal IntPtr glFramebufferTexture1D; - internal IntPtr glFramebufferTexture2D; - internal IntPtr glFramebufferTexture3D; - internal IntPtr glFramebufferTextureLayer; - internal IntPtr glFrontFace; - internal IntPtr glGenBuffers; - internal IntPtr glGenerateMipmap; - internal IntPtr glGenerateTextureMipmap; - internal IntPtr glGenFramebuffers; - internal IntPtr glGenProgramPipelines; - internal IntPtr glGenQueries; - internal IntPtr glGenRenderbuffers; - internal IntPtr glGenSamplers; - internal IntPtr glGenTextures; - internal IntPtr glGenTransformFeedbacks; - internal IntPtr glGenVertexArrays; - internal IntPtr glGetActiveAtomicCounterBufferiv; - internal IntPtr glGetActiveAttrib; - internal IntPtr glGetActiveSubroutineName; - internal IntPtr glGetActiveSubroutineUniformiv; - internal IntPtr glGetActiveSubroutineUniformName; - internal IntPtr glGetActiveUniform; - internal IntPtr glGetActiveUniformBlockiv; - internal IntPtr glGetActiveUniformBlockName; - internal IntPtr glGetActiveUniformName; - internal IntPtr glGetActiveUniformsiv; - internal IntPtr glGetAttachedShaders; - internal IntPtr glGetAttribLocation; - internal IntPtr glGetBooleani_v; - internal IntPtr glGetBooleanv; - internal IntPtr glGetBufferParameteri64v; - internal IntPtr glGetBufferParameteriv; - internal IntPtr glGetBufferPointerv; - internal IntPtr glGetBufferSubData; - internal IntPtr glGetCompressedTexImage; - internal IntPtr glGetCompressedTextureImage; - internal IntPtr glGetCompressedTextureSubImage; - internal IntPtr glGetDebugMessageLog; - internal IntPtr glGetDoublei_v; - internal IntPtr glGetDoublev; - internal IntPtr glGetError; - internal IntPtr glGetFloati_v; - internal IntPtr glGetFloatv; - internal IntPtr glGetFragDataIndex; - internal IntPtr glGetFragDataLocation; - internal IntPtr glGetFramebufferAttachmentParameteriv; - internal IntPtr glGetFramebufferParameteriv; - internal IntPtr glGetGraphicsResetStatus; - internal IntPtr glGetInteger64i_v; - internal IntPtr glGetInteger64v; - internal IntPtr glGetIntegeri_v; - internal IntPtr glGetIntegerv; - internal IntPtr glGetInternalformati64v; - internal IntPtr glGetInternalformativ; - internal IntPtr glGetMultisamplefv; - internal IntPtr glGetNamedBufferParameteri64v; - internal IntPtr glGetNamedBufferParameteriv; - internal IntPtr glGetNamedBufferPointerv; - internal IntPtr glGetNamedBufferSubData; - internal IntPtr glGetNamedFramebufferAttachmentParameteriv; - internal IntPtr glGetNamedFramebufferParameteriv; - internal IntPtr glGetNamedRenderbufferParameteriv; - internal IntPtr glGetnCompressedTexImage; - internal IntPtr glGetnTexImage; - internal IntPtr glGetnUniformdv; - internal IntPtr glGetnUniformfv; - internal IntPtr glGetnUniformiv; - internal IntPtr glGetnUniformuiv; - internal IntPtr glGetObjectLabel; - internal IntPtr glGetObjectPtrLabel; - internal IntPtr glGetPointerv; - internal IntPtr glGetProgramBinary; - internal IntPtr glGetProgramInfoLog; - internal IntPtr glGetProgramInterfaceiv; - internal IntPtr glGetProgramiv; - internal IntPtr glGetProgramPipelineInfoLog; - internal IntPtr glGetProgramPipelineiv; - internal IntPtr glGetProgramResourceIndex; - internal IntPtr glGetProgramResourceiv; - internal IntPtr glGetProgramResourceLocation; - internal IntPtr glGetProgramResourceLocationIndex; - internal IntPtr glGetProgramResourceName; - internal IntPtr glGetProgramStageiv; - internal IntPtr glGetQueryBufferObjecti64v; - internal IntPtr glGetQueryBufferObjectiv; - internal IntPtr glGetQueryBufferObjectui64v; - internal IntPtr glGetQueryBufferObjectuiv; - internal IntPtr glGetQueryIndexediv; - internal IntPtr glGetQueryiv; - internal IntPtr glGetQueryObjecti64v; - internal IntPtr glGetQueryObjectiv; - internal IntPtr glGetQueryObjectui64v; - internal IntPtr glGetQueryObjectuiv; - internal IntPtr glGetRenderbufferParameteriv; - internal IntPtr glGetSamplerParameterfv; - internal IntPtr glGetSamplerParameterIiv; - internal IntPtr glGetSamplerParameterIuiv; - internal IntPtr glGetSamplerParameteriv; - internal IntPtr glGetShaderInfoLog; - internal IntPtr glGetShaderiv; - internal IntPtr glGetShaderPrecisionFormat; - internal IntPtr glGetShaderSource; - internal IntPtr glGetString; - internal IntPtr glGetStringi; - internal IntPtr glGetSubroutineIndex; - internal IntPtr glGetSubroutineUniformLocation; - internal IntPtr glGetSynciv; - internal IntPtr glGetTexImage; - internal IntPtr glGetTexLevelParameterfv; - internal IntPtr glGetTexLevelParameteriv; - internal IntPtr glGetTexParameterfv; - internal IntPtr glGetTexParameterIiv; - internal IntPtr glGetTexParameterIuiv; - internal IntPtr glGetTexParameteriv; - internal IntPtr glGetTextureImage; - internal IntPtr glGetTextureLevelParameterfv; - internal IntPtr glGetTextureLevelParameteriv; - internal IntPtr glGetTextureParameterfv; - internal IntPtr glGetTextureParameterIiv; - internal IntPtr glGetTextureParameterIuiv; - internal IntPtr glGetTextureParameteriv; - internal IntPtr glGetTextureSubImage; - internal IntPtr glGetTransformFeedbacki_v; - internal IntPtr glGetTransformFeedbacki64_v; - internal IntPtr glGetTransformFeedbackiv; - internal IntPtr glGetTransformFeedbackVarying; - internal IntPtr glGetUniformBlockIndex; - internal IntPtr glGetUniformdv; - internal IntPtr glGetUniformfv; - internal IntPtr glGetUniformIndices; - internal IntPtr glGetUniformiv; - internal IntPtr glGetUniformLocation; - internal IntPtr glGetUniformSubroutineuiv; - internal IntPtr glGetUniformuiv; - internal IntPtr glGetVertexArrayIndexed64iv; - internal IntPtr glGetVertexArrayIndexediv; - internal IntPtr glGetVertexArrayiv; - internal IntPtr glGetVertexAttribdv; - internal IntPtr glGetVertexAttribfv; - internal IntPtr glGetVertexAttribIiv; - internal IntPtr glGetVertexAttribIuiv; - internal IntPtr glGetVertexAttribiv; - internal IntPtr glGetVertexAttribLdv; - internal IntPtr glGetVertexAttribPointerv; - internal IntPtr glHint; - internal IntPtr glInvalidateBufferData; - internal IntPtr glInvalidateBufferSubData; - internal IntPtr glInvalidateFramebuffer; - internal IntPtr glInvalidateNamedFramebufferData; - internal IntPtr glInvalidateNamedFramebufferSubData; - internal IntPtr glInvalidateSubFramebuffer; - internal IntPtr glInvalidateTexImage; - internal IntPtr glInvalidateTexSubImage; - internal IntPtr glIsBuffer; - internal IntPtr glIsEnabled; - internal IntPtr glIsEnabledi; - internal IntPtr glIsFramebuffer; - internal IntPtr glIsProgram; - internal IntPtr glIsProgramPipeline; - internal IntPtr glIsQuery; - internal IntPtr glIsRenderbuffer; - internal IntPtr glIsSampler; - internal IntPtr glIsShader; - internal IntPtr glIsSync; - internal IntPtr glIsTexture; - internal IntPtr glIsTransformFeedback; - internal IntPtr glIsVertexArray; - internal IntPtr glLineWidth; - internal IntPtr glLinkProgram; - internal IntPtr glLogicOp; - internal IntPtr glMapBuffer; - internal IntPtr glMapBufferRange; - internal IntPtr glMapNamedBuffer; - internal IntPtr glMapNamedBufferRange; - internal IntPtr glMemoryBarrier; - internal IntPtr glMemoryBarrierByRegion; - internal IntPtr glMinSampleShading; - internal IntPtr glMultiDrawArrays; - internal IntPtr glMultiDrawArraysIndirect; - internal IntPtr glMultiDrawArraysIndirectCount; - internal IntPtr glMultiDrawElements; - internal IntPtr glMultiDrawElementsBaseVertex; - internal IntPtr glMultiDrawElementsIndirect; - internal IntPtr glMultiDrawElementsIndirectCount; - internal IntPtr glNamedBufferData; - internal IntPtr glNamedBufferStorage; - internal IntPtr glNamedBufferSubData; - internal IntPtr glNamedFramebufferDrawBuffer; - internal IntPtr glNamedFramebufferDrawBuffers; - internal IntPtr glNamedFramebufferParameteri; - internal IntPtr glNamedFramebufferReadBuffer; - internal IntPtr glNamedFramebufferRenderbuffer; - internal IntPtr glNamedFramebufferTexture; - internal IntPtr glNamedFramebufferTextureLayer; - internal IntPtr glNamedRenderbufferStorage; - internal IntPtr glNamedRenderbufferStorageMultisample; - internal IntPtr glObjectLabel; - internal IntPtr glObjectPtrLabel; - internal IntPtr glPatchParameterfv; - internal IntPtr glPatchParameteri; - internal IntPtr glPauseTransformFeedback; - internal IntPtr glPixelStoref; - internal IntPtr glPixelStorei; - internal IntPtr glPointParameterf; - internal IntPtr glPointParameterfv; - internal IntPtr glPointParameteri; - internal IntPtr glPointParameteriv; - internal IntPtr glPointSize; - internal IntPtr glPolygonMode; - internal IntPtr glPolygonOffset; - internal IntPtr glPolygonOffsetClamp; - internal IntPtr glPopDebugGroup; - internal IntPtr glPrimitiveRestartIndex; - internal IntPtr glProgramBinary; - internal IntPtr glProgramParameteri; - internal IntPtr glProgramUniform1d; - internal IntPtr glProgramUniform1dv; - internal IntPtr glProgramUniform1f; - internal IntPtr glProgramUniform1fv; - internal IntPtr glProgramUniform1i; - internal IntPtr glProgramUniform1iv; - internal IntPtr glProgramUniform1ui; - internal IntPtr glProgramUniform1uiv; - internal IntPtr glProgramUniform2d; - internal IntPtr glProgramUniform2dv; - internal IntPtr glProgramUniform2f; - internal IntPtr glProgramUniform2fv; - internal IntPtr glProgramUniform2i; - internal IntPtr glProgramUniform2iv; - internal IntPtr glProgramUniform2ui; - internal IntPtr glProgramUniform2uiv; - internal IntPtr glProgramUniform3d; - internal IntPtr glProgramUniform3dv; - internal IntPtr glProgramUniform3f; - internal IntPtr glProgramUniform3fv; - internal IntPtr glProgramUniform3i; - internal IntPtr glProgramUniform3iv; - internal IntPtr glProgramUniform3ui; - internal IntPtr glProgramUniform3uiv; - internal IntPtr glProgramUniform4d; - internal IntPtr glProgramUniform4dv; - internal IntPtr glProgramUniform4f; - internal IntPtr glProgramUniform4fv; - internal IntPtr glProgramUniform4i; - internal IntPtr glProgramUniform4iv; - internal IntPtr glProgramUniform4ui; - internal IntPtr glProgramUniform4uiv; - internal IntPtr glProgramUniformMatrix2dv; - internal IntPtr glProgramUniformMatrix2fv; - internal IntPtr glProgramUniformMatrix2x3dv; - internal IntPtr glProgramUniformMatrix2x3fv; - internal IntPtr glProgramUniformMatrix2x4dv; - internal IntPtr glProgramUniformMatrix2x4fv; - internal IntPtr glProgramUniformMatrix3dv; - internal IntPtr glProgramUniformMatrix3fv; - internal IntPtr glProgramUniformMatrix3x2dv; - internal IntPtr glProgramUniformMatrix3x2fv; - internal IntPtr glProgramUniformMatrix3x4dv; - internal IntPtr glProgramUniformMatrix3x4fv; - internal IntPtr glProgramUniformMatrix4dv; - internal IntPtr glProgramUniformMatrix4fv; - internal IntPtr glProgramUniformMatrix4x2dv; - internal IntPtr glProgramUniformMatrix4x2fv; - internal IntPtr glProgramUniformMatrix4x3dv; - internal IntPtr glProgramUniformMatrix4x3fv; - internal IntPtr glProvokingVertex; - internal IntPtr glPushDebugGroup; - internal IntPtr glQueryCounter; - internal IntPtr glReadBuffer; - internal IntPtr glReadnPixels; - internal IntPtr glReadPixels; - internal IntPtr glReleaseShaderCompiler; - internal IntPtr glRenderbufferStorage; - internal IntPtr glRenderbufferStorageMultisample; - internal IntPtr glResumeTransformFeedback; - internal IntPtr glSampleCoverage; - internal IntPtr glSampleMaski; - internal IntPtr glSamplerParameterf; - internal IntPtr glSamplerParameterfv; - internal IntPtr glSamplerParameteri; - internal IntPtr glSamplerParameterIiv; - internal IntPtr glSamplerParameterIuiv; - internal IntPtr glSamplerParameteriv; - internal IntPtr glScissor; - internal IntPtr glScissorArrayv; - internal IntPtr glScissorIndexed; - internal IntPtr glScissorIndexedv; - internal IntPtr glShaderBinary; - internal IntPtr glShaderSource; - internal IntPtr glShaderStorageBlockBinding; - internal IntPtr glSpecializeShader; - internal IntPtr glStencilFunc; - internal IntPtr glStencilFuncSeparate; - internal IntPtr glStencilMask; - internal IntPtr glStencilMaskSeparate; - internal IntPtr glStencilOp; - internal IntPtr glStencilOpSeparate; - internal IntPtr glTexBuffer; - internal IntPtr glTexBufferRange; - internal IntPtr glTexImage1D; - internal IntPtr glTexImage2D; - internal IntPtr glTexImage2DMultisample; - internal IntPtr glTexImage3D; - internal IntPtr glTexImage3DMultisample; - internal IntPtr glTexParameterf; - internal IntPtr glTexParameterfv; - internal IntPtr glTexParameteri; - internal IntPtr glTexParameterIiv; - internal IntPtr glTexParameterIuiv; - internal IntPtr glTexParameteriv; - internal IntPtr glTexStorage1D; - internal IntPtr glTexStorage2D; - internal IntPtr glTexStorage2DMultisample; - internal IntPtr glTexStorage3D; - internal IntPtr glTexStorage3DMultisample; - internal IntPtr glTexSubImage1D; - internal IntPtr glTexSubImage2D; - internal IntPtr glTexSubImage3D; - internal IntPtr glTextureBarrier; - internal IntPtr glTextureBuffer; - internal IntPtr glTextureBufferRange; - internal IntPtr glTextureParameterf; - internal IntPtr glTextureParameterfv; - internal IntPtr glTextureParameteri; - internal IntPtr glTextureParameterIiv; - internal IntPtr glTextureParameterIuiv; - internal IntPtr glTextureParameteriv; - internal IntPtr glTextureStorage1D; - internal IntPtr glTextureStorage2D; - internal IntPtr glTextureStorage2DMultisample; - internal IntPtr glTextureStorage3D; - internal IntPtr glTextureStorage3DMultisample; - internal IntPtr glTextureSubImage1D; - internal IntPtr glTextureSubImage2D; - internal IntPtr glTextureSubImage3D; - internal IntPtr glTextureView; - internal IntPtr glTransformFeedbackBufferBase; - internal IntPtr glTransformFeedbackBufferRange; - internal IntPtr glTransformFeedbackVaryings; - internal IntPtr glUniform1d; - internal IntPtr glUniform1dv; - internal IntPtr glUniform1f; - internal IntPtr glUniform1fv; - internal IntPtr glUniform1i; - internal IntPtr glUniform1iv; - internal IntPtr glUniform1ui; - internal IntPtr glUniform1uiv; - internal IntPtr glUniform2d; - internal IntPtr glUniform2dv; - internal IntPtr glUniform2f; - internal IntPtr glUniform2fv; - internal IntPtr glUniform2i; - internal IntPtr glUniform2iv; - internal IntPtr glUniform2ui; - internal IntPtr glUniform2uiv; - internal IntPtr glUniform3d; - internal IntPtr glUniform3dv; - internal IntPtr glUniform3f; - internal IntPtr glUniform3fv; - internal IntPtr glUniform3i; - internal IntPtr glUniform3iv; - internal IntPtr glUniform3ui; - internal IntPtr glUniform3uiv; - internal IntPtr glUniform4d; - internal IntPtr glUniform4dv; - internal IntPtr glUniform4f; - internal IntPtr glUniform4fv; - internal IntPtr glUniform4i; - internal IntPtr glUniform4iv; - internal IntPtr glUniform4ui; - internal IntPtr glUniform4uiv; - internal IntPtr glUniformBlockBinding; - internal IntPtr glUniformMatrix2dv; - internal IntPtr glUniformMatrix2fv; - internal IntPtr glUniformMatrix2x3dv; - internal IntPtr glUniformMatrix2x3fv; - internal IntPtr glUniformMatrix2x4dv; - internal IntPtr glUniformMatrix2x4fv; - internal IntPtr glUniformMatrix3dv; - internal IntPtr glUniformMatrix3fv; - internal IntPtr glUniformMatrix3x2dv; - internal IntPtr glUniformMatrix3x2fv; - internal IntPtr glUniformMatrix3x4dv; - internal IntPtr glUniformMatrix3x4fv; - internal IntPtr glUniformMatrix4dv; - internal IntPtr glUniformMatrix4fv; - internal IntPtr glUniformMatrix4x2dv; - internal IntPtr glUniformMatrix4x2fv; - internal IntPtr glUniformMatrix4x3dv; - internal IntPtr glUniformMatrix4x3fv; - internal IntPtr glUniformSubroutinesuiv; - internal IntPtr glUnmapBuffer; - internal IntPtr glUnmapNamedBuffer; - internal IntPtr glUseProgram; - internal IntPtr glUseProgramStages; - internal IntPtr glValidateProgram; - internal IntPtr glValidateProgramPipeline; - internal IntPtr glVertexArrayAttribBinding; - internal IntPtr glVertexArrayAttribFormat; - internal IntPtr glVertexArrayAttribIFormat; - internal IntPtr glVertexArrayAttribLFormat; - internal IntPtr glVertexArrayBindingDivisor; - internal IntPtr glVertexArrayElementBuffer; - internal IntPtr glVertexArrayVertexBuffer; - internal IntPtr glVertexArrayVertexBuffers; - internal IntPtr glVertexAttrib1d; - internal IntPtr glVertexAttrib1dv; - internal IntPtr glVertexAttrib1f; - internal IntPtr glVertexAttrib1fv; - internal IntPtr glVertexAttrib1s; - internal IntPtr glVertexAttrib1sv; - internal IntPtr glVertexAttrib2d; - internal IntPtr glVertexAttrib2dv; - internal IntPtr glVertexAttrib2f; - internal IntPtr glVertexAttrib2fv; - internal IntPtr glVertexAttrib2s; - internal IntPtr glVertexAttrib2sv; - internal IntPtr glVertexAttrib3d; - internal IntPtr glVertexAttrib3dv; - internal IntPtr glVertexAttrib3f; - internal IntPtr glVertexAttrib3fv; - internal IntPtr glVertexAttrib3s; - internal IntPtr glVertexAttrib3sv; - internal IntPtr glVertexAttrib4bv; - internal IntPtr glVertexAttrib4d; - internal IntPtr glVertexAttrib4dv; - internal IntPtr glVertexAttrib4f; - internal IntPtr glVertexAttrib4fv; - internal IntPtr glVertexAttrib4iv; - internal IntPtr glVertexAttrib4Nbv; - internal IntPtr glVertexAttrib4Niv; - internal IntPtr glVertexAttrib4Nsv; - internal IntPtr glVertexAttrib4Nub; - internal IntPtr glVertexAttrib4Nubv; - internal IntPtr glVertexAttrib4Nuiv; - internal IntPtr glVertexAttrib4Nusv; - internal IntPtr glVertexAttrib4s; - internal IntPtr glVertexAttrib4sv; - internal IntPtr glVertexAttrib4ubv; - internal IntPtr glVertexAttrib4uiv; - internal IntPtr glVertexAttrib4usv; - internal IntPtr glVertexAttribBinding; - internal IntPtr glVertexAttribDivisor; - internal IntPtr glVertexAttribFormat; - internal IntPtr glVertexAttribI1i; - internal IntPtr glVertexAttribI1iv; - internal IntPtr glVertexAttribI1ui; - internal IntPtr glVertexAttribI1uiv; - internal IntPtr glVertexAttribI2i; - internal IntPtr glVertexAttribI2iv; - internal IntPtr glVertexAttribI2ui; - internal IntPtr glVertexAttribI2uiv; - internal IntPtr glVertexAttribI3i; - internal IntPtr glVertexAttribI3iv; - internal IntPtr glVertexAttribI3ui; - internal IntPtr glVertexAttribI3uiv; - internal IntPtr glVertexAttribI4bv; - internal IntPtr glVertexAttribI4i; - internal IntPtr glVertexAttribI4iv; - internal IntPtr glVertexAttribI4sv; - internal IntPtr glVertexAttribI4ubv; - internal IntPtr glVertexAttribI4ui; - internal IntPtr glVertexAttribI4uiv; - internal IntPtr glVertexAttribI4usv; - internal IntPtr glVertexAttribIFormat; - internal IntPtr glVertexAttribIPointer; - internal IntPtr glVertexAttribL1d; - internal IntPtr glVertexAttribL1dv; - internal IntPtr glVertexAttribL2d; - internal IntPtr glVertexAttribL2dv; - internal IntPtr glVertexAttribL3d; - internal IntPtr glVertexAttribL3dv; - internal IntPtr glVertexAttribL4d; - internal IntPtr glVertexAttribL4dv; - internal IntPtr glVertexAttribLFormat; - internal IntPtr glVertexAttribLPointer; - internal IntPtr glVertexAttribP1ui; - internal IntPtr glVertexAttribP1uiv; - internal IntPtr glVertexAttribP2ui; - internal IntPtr glVertexAttribP2uiv; - internal IntPtr glVertexAttribP3ui; - internal IntPtr glVertexAttribP3uiv; - internal IntPtr glVertexAttribP4ui; - internal IntPtr glVertexAttribP4uiv; - internal IntPtr glVertexAttribPointer; - internal IntPtr glVertexBindingDivisor; - internal IntPtr glViewport; - internal IntPtr glViewportArrayv; - internal IntPtr glViewportIndexedf; - internal IntPtr glViewportIndexedfv; - internal IntPtr glWaitSync; - - } -} diff --git a/src/StgSharp.Graphics/OpenGL/glRenderStream.cs b/src/StgSharp.Graphics/OpenGL/glRenderStream.cs index 8838728e..eed2d185 100644 --- a/src/StgSharp.Graphics/OpenGL/glRenderStream.cs +++ b/src/StgSharp.Graphics/OpenGL/glRenderStream.cs @@ -6,7 +6,8 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using StgSharp.Threading; using System; diff --git a/src/StgSharp.Graphics/PlainGeometryMesh.cs b/src/StgSharp.Graphics/PlainGeometryMesh.cs index 0870e6a1..889d8c89 100644 --- a/src/StgSharp.Graphics/PlainGeometryMesh.cs +++ b/src/StgSharp.Graphics/PlainGeometryMesh.cs @@ -7,8 +7,8 @@ using StgSharp.Geometries; using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; diff --git a/src/StgSharp.Graphics/RenderStream.cs b/src/StgSharp.Graphics/RenderStream.cs index 12d3ae4c..16fa7a2c 100644 --- a/src/StgSharp.Graphics/RenderStream.cs +++ b/src/StgSharp.Graphics/RenderStream.cs @@ -6,7 +6,8 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using StgSharp.Timing; using System; @@ -176,7 +177,6 @@ namespace StgSharp.Graphics /// public abstract void RenderEnd(); - #endregion - + #endregion } } diff --git a/src/StgSharp.Graphics/TextureProvider.cs b/src/StgSharp.Graphics/TextureProvider.cs index 76a80467..11d87eb4 100644 --- a/src/StgSharp.Graphics/TextureProvider.cs +++ b/src/StgSharp.Graphics/TextureProvider.cs @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Runtime.CompilerServices; @@ -38,8 +37,6 @@ namespace StgSharp.Graphics get => ref _texCoord[index]; } - public Span TextureCoordinate => new Span(_texCoord); - public Image Image { get => _image; @@ -50,5 +47,7 @@ namespace StgSharp.Graphics } } + public Span TextureCoordinate => new Span(_texCoord); + } } diff --git a/src/StgSharp.Mathematics/Geometries/Coordination/CoordinationBase.cs b/src/StgSharp.Mathematics/Geometries/Coordination/CoordinationBase.cs index c81c017e..e8f9e360 100644 --- a/src/StgSharp.Mathematics/Geometries/Coordination/CoordinationBase.cs +++ b/src/StgSharp.Mathematics/Geometries/Coordination/CoordinationBase.cs @@ -5,7 +5,7 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System.Runtime.CompilerServices; diff --git a/src/StgSharp.Mathematics/Geometries/Coordination/PlainCoordinate.cs b/src/StgSharp.Mathematics/Geometries/Coordination/PlainCoordinate.cs index e4a28ce3..26cc950c 100644 --- a/src/StgSharp.Mathematics/Geometries/Coordination/PlainCoordinate.cs +++ b/src/StgSharp.Mathematics/Geometries/Coordination/PlainCoordinate.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/Coordination/SpaceCoordinate.cs b/src/StgSharp.Mathematics/Geometries/Coordination/SpaceCoordinate.cs index 6df10b73..73e800be 100644 --- a/src/StgSharp.Mathematics/Geometries/Coordination/SpaceCoordinate.cs +++ b/src/StgSharp.Mathematics/Geometries/Coordination/SpaceCoordinate.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/GeometryOperation/GeometryOperation.cs b/src/StgSharp.Mathematics/Geometries/GeometryOperation/GeometryOperation.cs index 74e539e5..28ac605b 100644 --- a/src/StgSharp.Mathematics/Geometries/GeometryOperation/GeometryOperation.cs +++ b/src/StgSharp.Mathematics/Geometries/GeometryOperation/GeometryOperation.cs @@ -5,7 +5,7 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using StgSharp.Timing; using System; diff --git a/src/StgSharp.Mathematics/Geometries/IGeometry.cs b/src/StgSharp.Mathematics/Geometries/IGeometry.cs index d863dd72..4b49109d 100644 --- a/src/StgSharp.Mathematics/Geometries/IGeometry.cs +++ b/src/StgSharp.Mathematics/Geometries/IGeometry.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/IInstancing.cs b/src/StgSharp.Mathematics/Geometries/IInstancing.cs index 1f0307f4..55ca288f 100644 --- a/src/StgSharp.Mathematics/Geometries/IInstancing.cs +++ b/src/StgSharp.Mathematics/Geometries/IInstancing.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/IInstancingBuffer.cs b/src/StgSharp.Mathematics/Geometries/IInstancingBuffer.cs index 58cdae3e..2db0d9f1 100644 --- a/src/StgSharp.Mathematics/Geometries/IInstancingBuffer.cs +++ b/src/StgSharp.Mathematics/Geometries/IInstancingBuffer.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/GeometryOperation.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/GeometryOperation.cs index 5d2641cf..843deb0a 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/GeometryOperation.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/GeometryOperation.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System.Runtime.CompilerServices; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/IPlainEntity.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/IPlainEntity.cs index ca46dfd3..15d41a1b 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/IPlainEntity.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -6,8 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/ParticleOnPlain.cs index c82c7ecf..a38fe457 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/ParticleOnPlain.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -6,8 +6,8 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainGeometry.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainGeometry.cs index 0d706771..d5285cc2 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainGeometry.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -7,7 +7,7 @@ using StgSharp; using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.ComponentModel; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs index 985895ce..19a68059 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Parallelogram.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Parallelogram.cs index dbe4182b..3ea9c7a3 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Parallelogram.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Parallelogram.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Plain.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Plain.cs index 703c1f6d..7982a840 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Plain.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Plain.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon4.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon4.cs index 091e8bcf..0bd97af5 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon4.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon4.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon5.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon5.cs index 9cfcc201..7427508c 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon5.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon5.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon6.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon6.cs index b185437a..51360cea 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon6.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Polygon6.cs @@ -6,8 +6,8 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Rectangle.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Rectangle.cs index 710fe13e..127d1d57 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Rectangle.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Rectangle.cs @@ -6,8 +6,8 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; - +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Triangle.cs b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Triangle.cs index 23dac646..926ebef0 100644 --- a/src/StgSharp.Mathematics/Geometries/PlainGeometry/Triangle.cs +++ b/src/StgSharp.Mathematics/Geometries/PlainGeometry/Triangle.cs @@ -6,7 +6,7 @@ // ----------------------------------------------------------------------------- using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Numerics; diff --git a/src/StgSharp.Mathematics/Geometries/Point.cs b/src/StgSharp.Mathematics/Geometries/Point.cs index c12487a8..82e3e2c5 100644 --- a/src/StgSharp.Mathematics/Geometries/Point.cs +++ b/src/StgSharp.Mathematics/Geometries/Point.cs @@ -5,7 +5,7 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Geometries/SpaceGeometry/TriangulatedSurface.cs b/src/StgSharp.Mathematics/Geometries/SpaceGeometry/TriangulatedSurface.cs index c5b3128f..467eed51 100644 --- a/src/StgSharp.Mathematics/Geometries/SpaceGeometry/TriangulatedSurface.cs +++ b/src/StgSharp.Mathematics/Geometries/SpaceGeometry/TriangulatedSurface.cs @@ -7,7 +7,7 @@ using StgSharp.Mathematics; using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Collections.Generic; diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/GraphicVector.cs b/src/StgSharp.Mathematics/Numeric/Graphics/GraphicVector.cs new file mode 100644 index 00000000..19cfe698 --- /dev/null +++ b/src/StgSharp.Mathematics/Numeric/Graphics/GraphicVector.cs @@ -0,0 +1,42 @@ +// ----------------------------------------------------------------------------- +// file="GraphicVector" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Mathematics.Numeric.Graphics +{ + internal static class GraphicVector + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IsNormalVectorElement() where T : unmanaged, INumber + { + return typeof(T) == typeof(float) || + typeof(T) == typeof(int) || + typeof(T) == typeof(uint); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IsWideVectorElement() where T : unmanaged, INumber + { + return typeof(T) == typeof(double) || + typeof(T) == typeof(long) || + typeof(T) == typeof(ulong); + } + + public static NotSupportedException ThrowUnsupportedTypeException() + { + return new NotSupportedException($"Operation is not supported for type {typeof(T)}"); + } + + } +} diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/GraphicsMatrix.cs b/src/StgSharp.Mathematics/Numeric/Graphics/GraphicsMatrix.cs index 71ff95b3..ebc5f901 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/GraphicsMatrix.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/GraphicsMatrix.cs @@ -16,7 +16,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics.X86; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { [StructLayout(LayoutKind.Explicit, Size = 16 * sizeof(float), Pack = 16)] public unsafe struct GraphicsMatrix : IEquatable diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vec2.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vec2.cs index bc8fc978..a6854e7b 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vec2.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vec2.cs @@ -6,167 +6,190 @@ // ----------------------------------------------------------------------------- using StgSharp.HighPerformance.ProcessorAbstraction; -using StgSharp.Mathematics; using StgSharp.Mathematics.Numeric; +using StgSharp.Mathematics.Numeric.Graphics; +using System.Collections.Generic; using System.Net.Http.Headers; using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { + public static class Vec2 + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vector128 AsVector128Safe( + this Vec2 source + ) where T : unmanaged, INumber + { + Vector128 result = Vector128.Zero; + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vector128 AsVector128Unsafe( + this Vec2 source + ) where T : unmanaged, INumber + { + Unsafe.SkipInit(out Vector128 result); + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vec2 FromVector128Safe( + Vector128 source + ) where T : unmanaged, INumber + { + return Unsafe.As, Vec2>(ref source); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vec2 FromVector128Unsafe( + Vector128 source + ) where T : unmanaged, INumber + { + return Unsafe.As, Vec2>(ref source); + } + + } + /// /// A two dimension vector defined by two elements. Vec2 in World are default used as colum /// vector. /// - [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] - public struct Vec2 : IUnmanagedVector + /// + /// + /// + [StructLayout(LayoutKind.Sequential, Pack = 16)] + public struct Vec2 : IUnmanagedVector> where T : unmanaged, INumber { - [FieldOffset(0)] internal unsafe fixed float num[2]; - - [FieldOffset(0)] - internal M128 reg; - - [FieldOffset(0)] - internal Vector2 v; - - [FieldOffset(0)] - public float X; - [FieldOffset(4)] - public float Y; - - internal Vec2( - Vector2 vec - ) - { - Unsafe.SkipInit(out reg); - Unsafe.SkipInit(out X); - Unsafe.SkipInit(out Y); - v = vec; - } - - internal Vec2( - M128 vec - ) - { - Unsafe.SkipInit(out reg); - Unsafe.SkipInit(out X); - Unsafe.SkipInit(out Y); - reg = vec; - reg.Member(1) = 0; - } + public T X; + public T Y; public Vec2( - float x, - float y + T x, + T y ) { - v = new Vector2(x, y); + X = x; + Y = y; } - public static Vec2 Unit => new Vec2(1, 1); + public static Vec2 Unit => new(T.One, T.One); - public static Vec2 Zero => new Vec2(0, 0); + public static Vec2 Zero => new(T.Zero, T.Zero); - public static Vec2 One => new Vec2(1, 1); + public static Vec2 One => new(T.One, T.One); - public Vec2 XY + public Vec2 XY { readonly get => this; set => this = value; } - public Vec3 XYZ - { - readonly get => new(reg); - set - { - reg = value.reg; - reg.Member(1) = 0; - } - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public float Cross( - Vec2 right + public T Cross( + Vec2 right ) { return X * right.Y - Y * right.X; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public float Dot( - Vec2 vec + public readonly T Dot( + Vec2 vec ) { - return Vector2.Dot(v, vec.v); + return X * vec.X + Y * vec.Y; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec2 operator -( - Vec2 left, - Vec2 right + public static Vec2 operator -( + Vec2 left, + Vec2 right ) { - return new Vec2(left.v - right.v); + Vector128 leftVec = left.AsVector128Unsafe(); + Vector128 rightVec = right.AsVector128Unsafe(); + return Vec2.FromVector128Unsafe(leftVec + rightVec); } public static bool operator !=( - Vec2 left, - Vec2 right + Vec2 left, + Vec2 right ) { return !(left == right); } - public static Vec2 operator *( - Vec2 vec, - float value + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec2 operator *( + Vec2 vec, + T value ) { - return new Vec2(vec.v * value); - } - public static Vec2 operator *( - float value, - Vec2 vec - ) - { - return new Vec2(vec.v * value); + Vector128 leftVec = vec.AsVector128Unsafe(); + return Vec2.FromVector128Unsafe(leftVec * value); } - public static Vec2 operator /( - Vec2 vec, - float value + public static Vec2 operator *( + T value, + Vec2 vec ) { - return new Vec2(vec.v / value); + Vector128 leftVec = vec.AsVector128Unsafe(); + return Vec2.FromVector128Unsafe(leftVec * value); + } + + public static Vec2 operator /( + Vec2 vec, + T value + ) + { + Vector128 leftVec = vec.AsVector128Unsafe(); + return Vec2.FromVector128Unsafe(leftVec / value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec2 operator +( - Vec2 left, - Vec2 right + public static Vec2 operator +( + Vec2 left, + Vec2 right ) { - return new Vec2(left.v + right.v); + Vector128 leftVec = left.AsVector128Unsafe(); + Vector128 rightVec = right.AsVector128Unsafe(); + return Vec2.FromVector128Unsafe(leftVec + rightVec); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==( - Vec2 left, - Vec2 right + Vec2 left, + Vec2 right ) { - return left.v == right.v; + if (Unsafe.SizeOf() == 4) { + return Unsafe.As, ulong>(ref left) == Unsafe.As, ulong>(ref right); + } + if (Unsafe.SizeOf() == 8) { + return Unsafe.As, Vector128>(ref left) == Unsafe.As, Vector128>(ref right); + } +#pragma warning disable CA1065 + throw new NotSupportedException($"Element type {typeof(T).Name} is not supported."); +#pragma warning restore CA1065 } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static implicit operator Vec2( - (float, float) tuple + public static implicit operator Vec2( + (T, T) tuple ) { - return new Vec2(tuple.Item1, tuple.Item2); + return new Vec2(tuple.Item1, tuple.Item2); } } diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vec3.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vec3.cs index f2fca4c4..ecec6880 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vec3.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vec3.cs @@ -5,264 +5,144 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.HighPerformance.ProcessorAbstraction; -using StgSharp.Mathematics; -using StgSharp.Mathematics.Numeric; using System; -using System.Collections; -using System.Collections.Generic; using System.Numerics; using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { - [CollectionBuilder(typeof(Vec3), nameof(FromSpan))] - [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] - public struct Vec3 : IEquatable, IUnmanagedVector, IEnumerable + public static class Vec3 { - [FieldOffset(0)] internal unsafe fixed float num[3]; - [FieldOffset(0)] internal M128 reg; - - [FieldOffset(0)] internal Vector3 v; - - [FieldOffset(0)] public float X; - [FieldOffset(4)] public float Y; - [FieldOffset(8)] public float Z; - - internal Vec3( - M128 vector - ) - { - Unsafe.SkipInit(out this); - reg = vector; - reg.Member(3) = 0; - } - - internal Vec3( - Vector3 vector - ) - { - v = vector; - } - - public Vec3() - { - Unsafe.SkipInit(out this); - } - - public Vec3( - Vec2 xy, - float z - ) - { - Unsafe.SkipInit(out this); - reg = xy.reg; - Z = z; - } - - public Vec3( - float x, - float y, - float z - ) - { - Unsafe.SkipInit(out this); - v = new Vector3(x, y, z); - } - - public unsafe Vec2 XY - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => new(reg); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => Unsafe.As(ref v) = value.v; - } - - public Vec3 XYZ - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => new(v); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => this = value; - } - - public static Vec3 Zero => new(0, 0, 0); - - public static Vec3 One => new(1, 1, 1); - - public static Vec3 UnitX => new(1, 0, 0); - - public static Vec3 UnitY => new(0, 1, 0); - - public static Vec3 UnitZ => new(0, 0, 1); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 Cross( - Vec3 left, - Vec3 right - ) + public static Vec3 Cross(Vec3 left, Vec3 right) + where T : unmanaged, INumber { - return Linear.Cross(left, right); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public readonly float Dot( - Vec3 right - ) - { - return Vector3.Dot(v, right.v); - } - - public readonly bool Equals( - Vec3 other - ) - { - return reg == other.reg; - } - - public override readonly bool Equals( - object obj - ) - { - return obj is not null && obj is Vec3 vec && this == vec; - } - - public static Vec3 FromSpan( - ReadOnlySpan span - ) - { - Vec3 v = new(); - span.CopyTo(MemoryMarshal.CreateSpan(ref v.X, 3)); - return v; - } - - public unsafe IEnumerator GetEnumerator() - { - for (int i = 0; i < 3; i++) { - yield return reg.Member(i); + if (typeof(T) == typeof(float)) { + Vec3 result = CrossSingle( + Unsafe.As, Vec3>(ref left), + Unsafe.As, Vec3>(ref right)); + return Unsafe.As, Vec3>(ref result); } - } - - public override unsafe int GetHashCode() - { - fixed (float* add = &X) { - return HashCode.Combine(X, Y, Z, (ulong)add); + if (typeof(T) == typeof(double)) { + Vec3 result = CrossDouble( + Unsafe.As, Vec3>(ref left), + Unsafe.As, Vec3>(ref right)); + return Unsafe.As, Vec3>(ref result); } + if (typeof(T) == typeof(int)) { + Vec3 result = CrossInt32( + Unsafe.As, Vec3>(ref left), + Unsafe.As, Vec3>(ref right)); + return Unsafe.As, Vec3>(ref result); + } + if (typeof(T) == typeof(uint)) { + Vec3 result = CrossUInt32( + Unsafe.As, Vec3>(ref left), + Unsafe.As, Vec3>(ref right)); + return Unsafe.As, Vec3>(ref result); + } + + throw new NotSupportedException($"Cross product is not supported for {typeof(T)}."); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public readonly float GetMaxValue() + private static Vec3 CrossSingle(Vec3 left, Vec3 right) { - float ret = X; - ret = ret > Y ? ret : Y; - ret = ret > Z ? ret : Z; - return ret; - } - - public static bool IsParallel( - Vec3 left, - Vec3 right - ) - { - return Cross(left, right) == Zero; - } - - public override readonly string ToString() - { - return $"[{X},{Y},{Z}]"; - } - - public readonly string ToString( - string sample - ) - { - return $"[{X.ToString(sample)},{Y.ToString(sample)},{Z.ToString(sample)}]"; + Vector128 l = left.AsVector128Safe(); + Vector128 r = right.AsVector128Safe(); + Vector128 yzx = Vector128.Create(1, 2, 0, 3); + Vector128 zxy = Vector128.Create(2, 0, 1, 3); + Vector128 result = Vector128.Shuffle(l, yzx) * Vector128.Shuffle(r, zxy) - + Vector128.Shuffle(l, zxy) * Vector128.Shuffle(r, yzx); + return new(result[0], result[1], result[2]); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 operator -( - Vec3 vec - ) + private static Vec3 CrossDouble(Vec3 left, Vec3 right) { - return new Vec3(-vec.v); + Vector256 l = left.AsVector256Safe(); + Vector256 r = right.AsVector256Safe(); + Vector256 yzx = Vector256.Create(1L, 2L, 0L, 3L); + Vector256 zxy = Vector256.Create(2L, 0L, 1L, 3L); + Vector256 result = Vector256.Shuffle(l, yzx) * Vector256.Shuffle(r, zxy) - + Vector256.Shuffle(l, zxy) * Vector256.Shuffle(r, yzx); + return new(result[0], result[1], result[2]); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 operator -( - Vec3 left, - Vec3 right - ) + private static Vec3 CrossInt32(Vec3 left, Vec3 right) { - return new Vec3(left.v - right.v); + Vector128 l = left.AsVector128Safe(); + Vector128 r = right.AsVector128Safe(); + Vector128 yzx = Vector128.Create(1, 2, 0, 3); + Vector128 zxy = Vector128.Create(2, 0, 1, 3); + Vector128 result = Vector128.Shuffle(l, yzx) * Vector128.Shuffle(r, zxy) - + Vector128.Shuffle(l, zxy) * Vector128.Shuffle(r, yzx); + return new(result[0], result[1], result[2]); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=( - Vec3 left, - Vec3 right - ) + private static Vec3 CrossUInt32(Vec3 left, Vec3 right) { - return left.v != right.v; + Vector128 l = left.AsVector128Safe(); + Vector128 r = right.AsVector128Safe(); + Vector128 yzx = Vector128.Create(1U, 2U, 0U, 3U); + Vector128 zxy = Vector128.Create(2U, 0U, 1U, 3U); + Vector128 result = Vector128.Shuffle(l, yzx) * Vector128.Shuffle(r, zxy) - + Vector128.Shuffle(l, zxy) * Vector128.Shuffle(r, yzx); + return new(result[0], result[1], result[2]); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 operator *( - Vec3 vec, - float value - ) + internal static Vector128 AsVector128Safe(this Vec3 source) + where T : unmanaged, INumber { - return new Vec3(vec.v * value); + Vector128 result = Vector128.Zero; + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float operator *( - Vec3 left, - Vec3 right - ) + internal static Vector256 AsVector256Safe(this Vec3 source) + where T : unmanaged, INumber { - return Vector3.Dot(left.v, right.v); + Vector256 result = Vector256.Zero; + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 operator /( - Vec3 vec, - float value - ) + internal static Vector128 AsVector128Unsafe(this Vec3 source) + where T : unmanaged, INumber { - return new Vec3(vec.v / value); + Unsafe.SkipInit(out Vector128 result); + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec3 operator +( - Vec3 left, - Vec3 right - ) + internal static Vector256 AsVector256Unsafe(this Vec3 source) + where T : unmanaged, INumber { - return new Vec3(left.v + right.v); + Unsafe.SkipInit(out Vector256 result); + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==( - Vec3 left, - Vec3 right - ) + internal static Vec3 FromVector128Unsafe(Vector128 source) + where T : unmanaged, INumber { - return left.v == right.v; + return Unsafe.As, Vec3>(ref source); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe implicit operator Vec3( - (float, float, float) tuple - ) + internal static Vec3 FromVector256Unsafe(Vector256 source) + where T : unmanaged, INumber { - return Unsafe.As<(float,float,float), Vec3>(ref tuple); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); + return Unsafe.As, Vec3>(ref source); } } diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vec3_T.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vec3_T.cs new file mode 100644 index 00000000..658de023 --- /dev/null +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vec3_T.cs @@ -0,0 +1,300 @@ +// ----------------------------------------------------------------------------- +// file="Vec3_T" +// Project: StgSharp +// Copyright (c) Nitload. +// SPDX-License-Identifier: MIT +// ----------------------------------------------------------------------------- + +using StgSharp.Mathematics.Numeric; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; + +namespace StgSharp.Mathematics.Numeric.Graphics +{ + /// + /// A tightly packed three-dimensional numeric vector. + /// + [StructLayout(LayoutKind.Sequential, Pack = 16)] + public struct Vec3 : IUnmanagedVector>, IEquatable>, IEnumerable + where T : unmanaged, INumber + { + + public T X; + public T Y; + public T Z; + + public Vec3( + Vec2 xy, + T z + ) + { + X = xy.X; + Y = xy.Y; + Z = z; + } + + public Vec3( + T x, + T y, + T z + ) + { + X = x; + Y = y; + Z = z; + } + + public Vec2 XY + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => new(X, Y); + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set + { + X = value.X; + Y = value.Y; + } + } + + public Vec3 XYZ + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => this; + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => this = value; + } + + public static Vec3 Zero => new(T.Zero, T.Zero, T.Zero); + + public static Vec3 One => new(T.One, T.One, T.One); + + public static Vec3 UnitX => new(T.One, T.Zero, T.Zero); + + public static Vec3 UnitY => new(T.Zero, T.One, T.Zero); + + public static Vec3 UnitZ => new(T.Zero, T.Zero, T.One); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly T Dot( + Vec3 right + ) + { + if (Unsafe.SizeOf() == 4) + { + Vec4 v = Vec4.FromVector128Unsafe(this.AsVector128Unsafe() * right.AsVector128Unsafe()); + return v.X + v.Y + v.Z; + } + if (Unsafe.SizeOf() == 4) + { + Vec4 v = Vec4.FromVector128Unsafe(this.AsVector128Unsafe() * right.AsVector128Unsafe()); + return v.X + v.Y + v.Z; + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly bool Equals( + Vec3 other + ) + { + return X == other.X && Y == other.Y && Z == other.Z; + } + + public override readonly bool Equals( + object? obj + ) + { + return obj is Vec3 other && Equals(other); + } + + public static Vec3 FromSpan( + ReadOnlySpan span + ) + { + if (span.Length < 3) { + throw new ArgumentException("Span length must be at least 3.", nameof(span)); + } + + return new(span[0], span[1], span[2]); + } + + public readonly IEnumerator GetEnumerator() + { + yield return X; + yield return Y; + yield return Z; + } + + public override readonly int GetHashCode() + { + return HashCode.Combine(X, Y, Z); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly T GetMaxValue() + { + return T.Max(X, T.Max(Y, Z)); + } + + public static bool IsParallel( + Vec3 left, + Vec3 right + ) + { + return Vec3.Cross(left, right) == Zero; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator -( + Vec3 value + ) + { + if (Unsafe.SizeOf() == 4) { + return Vec3.FromVector128Unsafe(Vector128.Zero - value.AsVector128Unsafe()); + } + if (Unsafe.SizeOf() == 8) { + return Vec3.FromVector256Unsafe(Vector256.Zero - value.AsVector256Unsafe()); + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator -( + Vec3 left, + Vec3 right + ) + { + if (Unsafe.SizeOf() == 4) + { + Vector128 left_v128 = left.AsVector128Unsafe(); + Vector128 right_v128 = right.AsVector128Unsafe(); + return Vec3.FromVector128Unsafe(left_v128 - right_v128); + } + if (Unsafe.SizeOf() == 8) + { + Vector256 left_v256 = left.AsVector256Unsafe(); + Vector256 right_v256 = right.AsVector256Unsafe(); + return Vec3.FromVector256Unsafe(left_v256 - right_v256); + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=( + Vec3 left, + Vec3 right + ) + { + return !left.Equals(right); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator *( + Vec3 vector, + T scalar + ) + { + if (Unsafe.SizeOf() == 4) + { + Vector128 vector_v128 = vector.AsVector128Unsafe(); + Vector128 scalar_v128 = Vector128.Create(scalar); + return Vec3.FromVector128Unsafe(vector_v128 * scalar_v128); + } + if (Unsafe.SizeOf() == 8) + { + Vector256 vector_v256 = vector.AsVector256Unsafe(); + Vector256 scalar_v256 = Vector256.Create(scalar); + return Vec3.FromVector256Unsafe(vector_v256 * scalar_v256); + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator *( + T scalar, + Vec3 vector + ) + { + return vector * scalar; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static T operator *( + Vec3 left, + Vec3 right + ) + { + return left.Dot(right); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator /( + Vec3 vector, + T scalar + ) + { + if (Unsafe.SizeOf() == 4) + { + Vector128 vector_v128 = vector.AsVector128Unsafe(); + Vector128 scalar_v128 = Vector128.Create(scalar); + return Vec3.FromVector128Unsafe(vector_v128 / scalar_v128); + } + if (Unsafe.SizeOf() == 8) + { + Vector256 vector_v256 = vector.AsVector256Unsafe(); + Vector256 scalar_v256 = Vector256.Create(scalar); + return Vec3.FromVector256Unsafe(vector_v256 / scalar_v256); + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vec3 operator +( + Vec3 left, + Vec3 right + ) + { + if (Unsafe.SizeOf() == 4) + { + Vector128 left_v128 = left.AsVector128Unsafe(); + Vector128 right_v128 = right.AsVector128Unsafe(); + return Vec3.FromVector128Unsafe(left_v128 + right_v128); + } + if (Unsafe.SizeOf() == 8) + { + Vector256 left_v256 = left.AsVector256Unsafe(); + Vector256 right_v256 = right.AsVector256Unsafe(); + return Vec3.FromVector256Unsafe(left_v256 + right_v256); + } + throw GraphicVector.ThrowUnsupportedTypeException(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==( + Vec3 left, + Vec3 right + ) + { + return left.Equals(right); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator Vec3( + (T X, T Y, T Z) tuple + ) + { + return new(tuple.X, tuple.Y, tuple.Z); + } + + readonly IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vec4.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vec4.cs index 8a9ed013..19171af9 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vec4.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vec4.cs @@ -9,82 +9,96 @@ using StgSharp.HighPerformance.ProcessorAbstraction; using StgSharp.Mathematics; using StgSharp.Mathematics.Internal; using StgSharp.Mathematics.Numeric; +using StgSharp.Mathematics.Numeric.Graphics; using System; using System.Data.Common; using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { - [CollectionBuilder(builderType:typeof(Vec4), methodName: nameof(Vec4.FromSpan))] - [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] - public unsafe struct Vec4 : IEquatable, IUnmanagedVector + public static class Vec4 { - [FieldOffset(0)] internal unsafe fixed float num[4]; - - [FieldOffset(0)] internal M128 reg; - - [FieldOffset(0)] internal Vector4 vec; - [FieldOffset(12)] public float W; - - [FieldOffset(0)] public float X; - [FieldOffset(4)] public float Y; - [FieldOffset(8)] public float Z; - - internal Vec4( - Vector4 v - ) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vector128 AsVector128Unsafe( + this Vec4 source + ) where T : unmanaged, INumber { - Unsafe.SkipInit(out X); - Unsafe.SkipInit(out Y); - Unsafe.SkipInit(out Z); - Unsafe.SkipInit(out W); - Unsafe.SkipInit(out reg); - - vec = v; + Unsafe.SkipInit(out Vector128 result); + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } - internal Vec4( - M128 v - ) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vector256 AsVector256Unsafe( + this Vec4 source + ) where T : unmanaged, INumber { - Unsafe.SkipInit(out X); - Unsafe.SkipInit(out Y); - Unsafe.SkipInit(out Z); - Unsafe.SkipInit(out W); - Unsafe.SkipInit(out vec); - - reg = v; + Unsafe.SkipInit(out Vector256 result); + Unsafe.WriteUnaligned(ref Unsafe.As, byte>(ref result), source); + return result; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vec4 FromVector128Unsafe( + Vector128 source + ) where T : unmanaged, INumber + { + return Unsafe.As, Vec4>(ref source); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static Vec4 FromVector256Unsafe( + Vector256 source + ) where T : unmanaged, INumber + { + return Unsafe.As, Vec4>(ref source); + } + + } + + /// + /// A three dimension vector defined by two elements. Vec3 in World are default used as colum + /// vector. + /// + [StructLayout(LayoutKind.Sequential, Pack = 16)] + public struct Vec4 : IUnmanagedVector> where T : unmanaged, INumber + { + + public T W; + + public T X; + public T Y; + public T Z; + public Vec4( - Vec3 v3, - float w + Vec3 v3, + T w ) { - Unsafe.SkipInit(out X); - Unsafe.SkipInit(out Y); - Unsafe.SkipInit(out Z); - Unsafe.SkipInit(out W); - reg = v3.reg; + XYZ = v3; W = w; } public Vec4( - float x, - float y, - float z, - float w + T x, + T y, + T z, + T w ) { - vec = new Vector4(x, y, z, w); + X = x; + Y = y; + Z = z; + W = w; } - public unsafe Vec2 XY + public unsafe Vec2 XY { - get => new Vec2(reg); + get => Vec2.FromVector128Unsafe(this.AsVector128Unsafe()); set { X = value.X; @@ -92,132 +106,114 @@ namespace StgSharp.Mathematics.Graphics } } - public unsafe Vec3 XYZ + public unsafe Vec3 XYZ { - get => new Vec3(reg); + get => Vec3.FromVector128Unsafe(this.AsVector128Unsafe()); set { - float w = W; - reg = value.reg; + T w = W; + Unsafe.As>(ref X) = value; W = w; } } - public static Vec4 One => new Vec4(1, 1, 1, 1); + public static Vec4 One => new(T.One, T.One, T.One, T.One); - public static Vec4 Zero => new Vec4(0, 0, 0, 0); + public static Vec4 Zero => new(T.Zero, T.Zero, T.Zero, T.Zero); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec4 Add( - Vec4 left, - Vec4 right + public static Vec4 Add( + Vec4 left, + Vec4 right ) { return left + right; } - public ReadOnlySpan AsSpan() + public ReadOnlySpan AsSpan() { - return MemoryMarshal.CreateReadOnlySpan(ref reg.Member(0), 4); + return MemoryMarshal.CreateReadOnlySpan(ref X, 4); } public override bool Equals( object obj ) { - return (obj is Vec4 v) && (v == this); + return (obj is Vec4 v) && (v == this); } - public static Vec4 FromSpan( - ReadOnlySpan span + public static Vec4 FromSpan( + ReadOnlySpan span ) { if (span.Length < 4) { throw new ArgumentException("Span length must be at least 4.", nameof(span)); } - // Read 4 floats as a Vector4 in one operation without per-element copy. - Vector4 v = MemoryMarshal.Read(MemoryMarshal.AsBytes(span)); - return new Vec4(v); + Unsafe.SkipInit(out Vec4 result); + Span target = MemoryMarshal.CreateSpan(ref result.X, 4); + span[..4].CopyTo(target); + return result; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public ReadOnlySpan.Enumerator GetEnumerator() + public ReadOnlySpan.Enumerator GetEnumerator() { return AsSpan().GetEnumerator(); } - public override int GetHashCode() - { - return vec.GetHashCode(); - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec4 Subtract( - Vec4 left, - Vec4 right + public static Vec4 operator -( + Vec4 left, + Vec4 right ) { - return left - right; - } - - public override string ToString() - { - return vec.ToString(); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec4 operator -( - Vec4 left, - Vec4 right - ) - { - return new Vec4(left.vec - right.vec); + if (Unsafe.SizeOf() == 4) { + return Vec4.FromVector128Unsafe(left.AsVector128Unsafe() - right.AsVector128Unsafe()); + } + if (Unsafe.SizeOf() == 8) { + return Vec4.FromVector256Unsafe(left.AsVector256Unsafe() - right.AsVector256Unsafe()); + } + throw GraphicVector.ThrowUnsupportedTypeException(); } public static bool operator !=( - Vec4 left, - Vec4 right + Vec4 left, + Vec4 right ) { return !(left == right); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec4 operator *( - GraphicsMatrix mat, - Vec4 vec + public static Vec4 operator +( + Vec4 left, + Vec4 right ) { - GraphicsMatrix transpose = mat.Transpose; - return new Vec4(Vector4.Dot(transpose.mat.colum0, vec.vec), - Vector4.Dot(transpose.mat.colum1, vec.vec), - Vector4.Dot(transpose.mat.colum2, vec.vec), - Vector4.Dot(transpose.mat.colum3, vec.vec)); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec4 operator +( - Vec4 left, - Vec4 right - ) - { - return new Vec4(left.vec + right.vec); + if (Unsafe.SizeOf() == 4) { + return Vec4.FromVector128Unsafe(left.AsVector128Unsafe() + right.AsVector128Unsafe()); + } + if (Unsafe.SizeOf() == 8) { + return Vec4.FromVector256Unsafe(left.AsVector256Unsafe() + right.AsVector256Unsafe()); + } + throw GraphicVector.ThrowUnsupportedTypeException(); } public static bool operator ==( - Vec4 left, - Vec4 right + Vec4 left, + Vec4 right ) { - return left.vec == right.vec; - } - - bool IEquatable.Equals( - Vec4 other - ) - { - return vec == other.vec; + if (Unsafe.SizeOf() == 4) { + return left.AsVector128Unsafe() == right.AsVector128Unsafe(); + } + if (Unsafe.SizeOf() == 8) { + return left.AsVector256Unsafe() == right.AsVector256Unsafe(); + } +#pragma warning disable CA1065 + throw GraphicVector.ThrowUnsupportedTypeException(); +#pragma warning restore CA1065 } } diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Cross.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Cross.cs deleted file mode 100644 index 448a01aa..00000000 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Cross.cs +++ /dev/null @@ -1,35 +0,0 @@ -// ----------------------------------------------------------------------------- -// file="Vector.Cross" -// Project: StgSharp -// Copyright (c) Nitload. -// SPDX-License-Identifier: MIT -// ----------------------------------------------------------------------------- - -using StgSharp.Mathematics.Graphics; - -namespace StgSharp.Mathematics.Graphics -{ - public static unsafe partial class Linear - { - - public static float Cross( - Vec2 vec1, - Vec2 vec2 - ) - { - return (vec1.X * vec2.Y) - (vec1.Y * vec2.X); - } - - public static Vec3 Cross( - Vec3 vec1, - Vec3 vec2 - ) - { - return new Vec3( - (vec1.Y * vec2.Z) - (vec1.Z * vec2.Y), - (vec1.X * vec2.Z) - (vec1.Z * vec2.X), - (vec1.X * vec2.Y) - (vec1.Y * vec2.X)); - } - - } -} diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetAngle.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetAngle.cs index d7ae26fb..554334f2 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetAngle.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetAngle.cs @@ -5,26 +5,26 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { public static unsafe partial class Linear { - public static float GetAngle( - Vec2 vec1, - Vec2 vec2 - ) + public static T GetAngle( + Vec2 vec1, + Vec2 vec2 + ) where T : unmanaged, INumber { return MathF.Acos( 1 / (vec1.GetLength() * vec2.GetLength())); } - public static float GetAngle( - Vec3 vec1, - Vec3 vec2 - ) + public static T GetAngle( + Vec3 vec1, + Vec3 vec2 + ) where T : unmanaged, INumber { return MathF.Acos(vec1 * vec2 / (vec1.GetLength() * vec2.GetLength())); } diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetLength.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetLength.cs index c2333934..e34c22d9 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetLength.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.GetLength.cs @@ -5,25 +5,25 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { public static unsafe partial class Linear { - public static float GetLength( - this Vec3 vec - ) + public static T GetLength( + this Vec3 vec + ) where T : unmanaged, INumber { - return MathF.Sqrt(vec.Dot(vec)); + return T.Sqrt(vec.Dot(vec)); } - public static float GetLength( - this Vec2 vec - ) + public static T GetLength( + this Vec2 vec + ) where T : unmanaged, INumber { - return MathF.Sqrt(vec.Dot(vec)); + return T.Sqrt(vec.Dot(vec)); } } diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Normalize.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Normalize.cs index 675640b4..9c8d5e9a 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Normalize.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Normalize.cs @@ -5,10 +5,10 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System.Numerics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { public static partial class Linear { diff --git a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Orthogonalize.cs b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Orthogonalize.cs index 8978ed90..6c0ed424 100644 --- a/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Orthogonalize.cs +++ b/src/StgSharp.Mathematics/Numeric/Graphics/Vector.Orthogonalize.cs @@ -5,10 +5,10 @@ // SPDX-License-Identifier: MIT // ----------------------------------------------------------------------------- -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using System.Numerics; -namespace StgSharp.Mathematics.Graphics +namespace StgSharp.Mathematics.Numeric.Graphics { public static partial class Linear { diff --git a/test/README.md b/test/README.md new file mode 100644 index 00000000..fa1aa32c --- /dev/null +++ b/test/README.md @@ -0,0 +1,19 @@ +# Tests and Experiments + +This directory contains automated tests, manual diagnostic programs, and standalone experiments. It is separate from `src` so test-only dependencies and exploratory code are not included in production assemblies. + +## Directory map + +| Directory | Purpose | +| --- | --- | +| `StgSharpDebug` | Executable test harness for manual debugging and stress testing of allocators, matrices, rendering, NGRA, and other subsystems. This is not an automated unit-test suite. | +| `STgSharpTest` | Older MSTest-based tests for the former Script/EXPRESS and related projects. Some references and machine-specific test data are legacy and may require repair before the project can run. | +| `SingleFile` | Standalone source experiments and generated-code samples that are not part of a project or the normal build. | + +Run the active debug harness directly when investigating a subsystem: + +```powershell +dotnet run --project test/StgSharpDebug/StgSharpDebug.csproj +``` + +New repeatable tests should use a test project and avoid machine-specific paths, external mutable data, and dependencies on previous test execution. Keep one-off investigations in `SingleFile` or the manual debug harness until their expected behavior is stable enough for automation. diff --git a/test/StgSharpDebug/RenderStream/Partical.cs b/test/StgSharpDebug/RenderStream/Partical.cs index ca8a7288..a871627a 100644 --- a/test/StgSharpDebug/RenderStream/Partical.cs +++ b/test/StgSharpDebug/RenderStream/Partical.cs @@ -9,7 +9,8 @@ using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; using StgSharp.Mathematics; -using StgSharp.Mathematics.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; +using StgSharp.Mathematics.Numeric.Graphics; using StgSharp.Timing; using System; @@ -202,98 +203,6 @@ namespace StgSharp 0)) * rotation; } - private Shader CreateShaderSet( - ShaderType type, - int count - ) - { - GlHandle[] handles = new GlHandle[count]; - for (int index = 0; index < handles.Length; index++) { - handles[index] = GL.CreateShader((uint)type); - } - return new Shader(handles, type); - } - - private void CompileShaderFromFile( - GlHandle shader, - string path - ) - { - byte[] source = File.ReadAllBytes(path); - if (source.Length == 0) { - throw new InvalidOperationException($"Shader source is empty: {path}"); - } - - GL.ShaderSource(shader, source); - GL.CompileShader(shader); - - Span status = stackalloc int[1]; - GL.GetShaderiv(shader, glConst.COMPILE_STATUS, status); - if (status[0] != 0) { - return; - } - - throw new InvalidOperationException( - $"Failed to compile shader '{path}'.{Environment.NewLine}{GetShaderInfoLog(shader)}"); - } - - private void LinkShaderProgram( - GlHandle program - ) - { - GL.LinkProgram(program); - - Span status = stackalloc int[1]; - GL.GetProgramiv(program, glConst.LINK_STATUS, status); - if (status[0] != 0) { - return; - } - - throw new InvalidOperationException( - $"Failed to link shader program.{Environment.NewLine}{GetProgramInfoLog(program)}"); - } - - private string GetShaderInfoLog( - GlHandle shader - ) - { - Span requiredLength = stackalloc int[1]; - GL.GetShaderiv(shader, glConst.INFO_LOG_LENGTH, requiredLength); - if (requiredLength[0] <= 1) { - return "OpenGL did not provide a shader info log."; - } - - byte[] bytes = new byte[requiredLength[0]]; - GL.GetShaderInfoLog(shader, out int written, bytes); - return Encoding.UTF8.GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) - .TrimEnd('\0'); - } - - private string GetProgramInfoLog( - GlHandle program - ) - { - Span requiredLength = stackalloc int[1]; - GL.GetProgramiv(program, glConst.INFO_LOG_LENGTH, requiredLength); - if (requiredLength[0] <= 1) { - return "OpenGL did not provide a program info log."; - } - - byte[] bytes = new byte[requiredLength[0]]; - GL.GetProgramInfoLog(program, out int written, bytes); - return Encoding.UTF8.GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) - .TrimEnd('\0'); - } - - private void DeleteShaderSet( - Shader shaderSet - ) - { - for (int index = 0; index < shaderSet.Count; index++) { - GL.DeleteShader(shaderSet[index]); - } - } - protected override void CustomizeDeinit() { GL.DeleteProgram(s.Handle); @@ -521,5 +430,99 @@ namespace StgSharp GL.Assert(true); } + private void CompileShaderFromFile( + GlHandle shader, + string path + ) + { + byte[] source = File.ReadAllBytes(path); + if (source.Length == 0) { + throw new InvalidOperationException($"Shader source is empty: {path}"); + } + + GL.ShaderSource(shader, source); + GL.CompileShader(shader); + + Span status = stackalloc int[1]; + GL.GetShaderiv(shader, glConst.COMPILE_STATUS, status); + if (status[0] != 0) { + return; + } + + throw new InvalidOperationException( + $"Failed to compile shader '{path}'.{Environment.NewLine}{GetShaderInfoLog(shader)}"); + } + + private Shader CreateShaderSet( + ShaderType type, + int count + ) + { + GlHandle[] handles = new GlHandle[count]; + for (int index = 0; index < handles.Length; index++) { + handles[index] = GL.CreateShader((uint)type); + } + return new Shader(handles, type); + } + + private void DeleteShaderSet( + Shader shaderSet + ) + { + for (int index = 0; index < shaderSet.Count; index++) { + GL.DeleteShader(shaderSet[index]); + } + } + + private string GetProgramInfoLog( + GlHandle program + ) + { + Span requiredLength = stackalloc int[1]; + GL.GetProgramiv(program, glConst.INFO_LOG_LENGTH, requiredLength); + if (requiredLength[0] <= 1) { + return "OpenGL did not provide a program info log."; + } + + byte[] bytes = new byte[requiredLength[0]]; + GL.GetProgramInfoLog(program, out int written, bytes); + return Encoding.UTF8 + .GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) + .TrimEnd('\0'); + } + + private string GetShaderInfoLog( + GlHandle shader + ) + { + Span requiredLength = stackalloc int[1]; + GL.GetShaderiv(shader, glConst.INFO_LOG_LENGTH, requiredLength); + if (requiredLength[0] <= 1) { + return "OpenGL did not provide a shader info log."; + } + + byte[] bytes = new byte[requiredLength[0]]; + GL.GetShaderInfoLog(shader, out int written, bytes); + return Encoding.UTF8 + .GetString(bytes, 0, Math.Clamp(written, 0, bytes.Length)) + .TrimEnd('\0'); + } + + private void LinkShaderProgram( + GlHandle program + ) + { + GL.LinkProgram(program); + + Span status = stackalloc int[1]; + GL.GetProgramiv(program, glConst.LINK_STATUS, status); + if (status[0] != 0) { + return; + } + + throw new InvalidOperationException( + $"Failed to link shader program.{Environment.NewLine}{GetProgramInfoLog(program)}"); + } + } } diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 00000000..c5e5d903 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,17 @@ +# Development Tools + +This directory contains repository-maintenance and source-generation programs. Tools are kept outside `src` because they help build or maintain StgSharp but are not shipped as part of the runtime libraries. + +## Directory map + +| Directory | Purpose | +| --- | --- | +| `StgSharp.GenerateGL` | Reads the Khronos `gl.xml` registry, projects the OpenGL 4.6 Core API, analyzes function families, and generates the managed OpenGL bindings used by `StgSharp.Graphics`. | + +`StgSharp.GenerateGL` has its own `README.md` with its pipeline, naming rules, and interactive commands. The common direct-generation command is: + +```powershell +dotnet run --project tools/StgSharp.GenerateGL/StgSharp.GenerateGL.csproj -- generate src/StgSharp.Graphics/OpenGL/Generated +``` + +Generated files begin with `// ` and should not be edited manually. Change the registry projection, analysis, naming, or generation code here and regenerate the destination instead. diff --git a/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs b/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs index 35b91b2f..94c47ed4 100644 --- a/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs +++ b/tools/StgSharp.GenerateGL/Generation/OpenGlGenerator.cs @@ -80,6 +80,9 @@ namespace StgSharp.GenerateGL.Generation new GeneratedFile( "OpenglContext.g.cs", GenerateContext(commands, typeMapper)), + new GeneratedFile( + "glContextShadow.g.cs", + GenerateContextShadow(commands)), }; for (int index = 0; index < managedGroups.Count; index++) { @@ -329,11 +332,10 @@ namespace StgSharp.GenerateGL.Generation AppendGeneratedHeader(builder, "Desktop OpenGL core function pointer table"); builder.Append("namespace StgSharp.Graphics.OpenGL\n"); builder.Append("{\n"); + builder.Append(" [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]\n"); builder.Append(" public unsafe partial struct OpenglContext\n"); builder.Append(" {\n"); - foreach (GlCommandDefinition command in commands.OrderBy( - value => value.Name, - StringComparer.Ordinal)) + foreach (GlCommandDefinition command in OrderCommands(commands)) { builder.Append(" internal delegate* unmanaged<"); foreach (GlParameterDefinition parameter in command.Parameters) @@ -353,6 +355,38 @@ namespace StgSharp.GenerateGL.Generation return builder.ToString(); } + private static string GenerateContextShadow( + IReadOnlyList commands + ) + { + StringBuilder builder = new StringBuilder(64 * 1024); + AppendGeneratedHeader(builder, "Native-address shadow of the OpenGL function pointer table"); + builder.Append("namespace StgSharp.Graphics.OpenGL\n"); + builder.Append("{\n"); + builder.Append(" [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]\n"); + builder.Append(" internal struct glContextShadow\n"); + builder.Append(" {\n"); + foreach (GlCommandDefinition command in OrderCommands(commands)) + { + builder.Append(" internal nint "); + builder.Append(command.Name); + builder.Append(";\n"); + } + + builder.Append(" }\n"); + builder.Append("}\n"); + return builder.ToString(); + } + + private static IEnumerable OrderCommands( + IReadOnlyList commands + ) + { + return commands.OrderBy( + value => value.Name, + StringComparer.Ordinal); + } + private static string GenerateFunctions( IReadOnlyList methods, string description, diff --git a/tools/StgSharp.GenerateGL/Naming/CSharpIdentifierPolicy.cs b/tools/StgSharp.GenerateGL/Naming/CSharpIdentifierPolicy.cs index 68e30fec..ed1a5815 100644 --- a/tools/StgSharp.GenerateGL/Naming/CSharpIdentifierPolicy.cs +++ b/tools/StgSharp.GenerateGL/Naming/CSharpIdentifierPolicy.cs @@ -86,6 +86,26 @@ namespace StgSharp.GenerateGL.Naming .Replace( "relativeoffset", "relativeOffset", + StringComparison.Ordinal) + .Replace( + "pname", + "pName", + StringComparison.Ordinal) + .Replace( + "xoffset", + "xOffset", + StringComparison.Ordinal) + .Replace( + "yoffset", + "yOffset", + StringComparison.Ordinal) + .Replace( + "zoffset", + "zOffset", + StringComparison.Ordinal) + .Replace( + "vaobj", + "vertexArray", StringComparison.Ordinal); return _attributeParameterWord.Replace(result, "attribute"); } diff --git a/tools/StgSharp.GenerateGL/README.md b/tools/StgSharp.GenerateGL/README.md index 125ba9c7..9cbd999a 100644 --- a/tools/StgSharp.GenerateGL/README.md +++ b/tools/StgSharp.GenerateGL/README.md @@ -60,6 +60,7 @@ Generated files: - `glconst.cs`: core constants; - `OpenglContext.g.cs`: the function-pointer table with native names and ABI types; +- `glContextShadow.g.cs`: an identically ordered `nint` table used while loading native entry points; - `OpenGLFunction.Base.g.cs`: APIs introduced through OpenGL 3.2 and retained in the target profile; - `OpenGLFunction.v3_3.g.cs` through `OpenGLFunction.v4_6.g.cs`: APIs introduced by each later core version. @@ -112,6 +113,9 @@ Safe lexical normalization applies to all public methods: | `attribindex` | `attributeIndex` | | `bindingindex` | `bindingIndex` | | `relativeoffset` | `relativeOffset` | +| `pname` | `pName` | +| `xoffset` / `yoffset` / `zoffset` | `xOffset` / `yOffset` / `zOffset` | +| `vaobj` | `vertexArray` | Families that represent distinct semantics receive explicit names: @@ -154,4 +158,3 @@ The generator does not emit `` or `` elements and does not copy - `Naming/`: C# identifier and semantic-family naming policies; - `XmlCli.cs`, `RegistryCli.cs`, and `FunctionFamilyCli.cs`: interactive inspection; - `GenerateCli.cs`: in-memory preview and protected directory output. -