Compare commits
10
Commits
843eb6b237
...
5d680542a8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d680542a8
|
||
|
|
0b2593a5f6 | ||
|
|
3cba929599 | ||
|
|
648cac9d9b | ||
|
|
5db9f39a46 | ||
|
|
75bf7fc139 | ||
|
|
65041ff8bc | ||
|
|
708a915549 | ||
|
|
f0b6a4038e | ||
|
|
968a6afe1a |
+1
-1
@@ -29,4 +29,4 @@ build.ninja
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
/StgSharp.Native/lib/
|
||||
!/StgSharp.Native/lib/**/CMakeLists.txt
|
||||
!/StgSharp.Native/lib/**/CMakeLists.txt
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
<!-- 这样 F5 调试时 P/Invoke 能找到 native -->
|
||||
<!-- ════════════════════════════════════════════════════════ -->
|
||||
<Target Name="CopyNativeToProjectOutput"
|
||||
AfterTargets="Build">
|
||||
AfterTargets="Build"
|
||||
Condition="'$(DisableNativeCopy)'!='true'">
|
||||
|
||||
<!-- native 库文件 -->
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.36705.20
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenerateGL", "test\StgSharp.GenerateGL\GenerateGL.csproj", "{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Common", "src\StgSharp.Common\StgSharp.Common.csproj", "{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Debug|x64.Build.0 = Debug|x64
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|x64.ActiveCfg = Release|x64
|
||||
{9FD27EE6-E94D-4E64-A13B-5A349DEA215A}.Release|x64.Build.0 = Release|x64
|
||||
{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{5D646C0E-CCF8-B5B4-7DE8-1C37542E7B4D}.Release|x64.ActiveCfg = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {AC71C01F-9867-4E43-85AB-4A8A7896B1BC}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -225,7 +225,7 @@ allocator.Free(handle);
|
||||
|
||||
### Technical Documentation
|
||||
|
||||
- [TLSF Allocator](src/StgSharp.Common/HighPerformance/Memory/InroductionToTLSF.md) - Arena layout, allocation behavior, and benchmark methodology
|
||||
- [TLSF Allocator](doc/InroductionToTLSF.md) - Arena layout, allocation behavior, and benchmark methodology
|
||||
- [Native Library Build](src/StgSharp.Native/README.md) - Native build and source-layout notes
|
||||
- [Native Library Naming](src/StgSharp.Native/naming.md) - Native library file naming conventions
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -6,9 +6,11 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading;
|
||||
|
||||
namespace StgSharp.Collections
|
||||
@@ -137,6 +139,18 @@ namespace StgSharp.Collections
|
||||
return true;
|
||||
}
|
||||
|
||||
internal void FillRange(
|
||||
SpanAction<T, nuint> filling,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
if (filling is not null)
|
||||
{
|
||||
filling(_values.AsSpan()[_index..], buffer);
|
||||
_index = _values.Length;
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal Span<T> GetValueLayout()
|
||||
{
|
||||
@@ -163,4 +177,4 @@ namespace StgSharp.Collections
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,6 @@ namespace StgSharp
|
||||
|
||||
internal const int ssdSegmentLength = 16;
|
||||
|
||||
private static byte[] _currentHash = [];
|
||||
|
||||
private static bool _inited;
|
||||
|
||||
public static byte[] CurrentAssemblyHash
|
||||
@@ -32,12 +30,10 @@ namespace StgSharp
|
||||
if (_currentHash == null)
|
||||
{
|
||||
string route = Assembly.GetExecutingAssembly().Location;
|
||||
string time = DateTime.UtcNow.ToString();
|
||||
using (SHA256 sh = SHA256.Create())
|
||||
{
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(route);
|
||||
_currentHash = sh.ComputeHash(bytes);
|
||||
}
|
||||
|
||||
// string time = DateTime.UtcNow.ToString();
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(route);
|
||||
_currentHash = SHA256.HashData(bytes);
|
||||
}
|
||||
return _currentHash;
|
||||
}
|
||||
@@ -52,6 +48,8 @@ namespace StgSharp
|
||||
internal set => _mainThreadID = value;
|
||||
}
|
||||
|
||||
private static byte[] _currentHash { get; set; } = [];
|
||||
|
||||
private static int _mainThreadID { get; set; } = -1;
|
||||
|
||||
public static class GlobalSetting
|
||||
@@ -62,12 +60,10 @@ namespace StgSharp
|
||||
public static bool VSyncActivated
|
||||
{
|
||||
get => vsyncActivated;
|
||||
set =>
|
||||
// GraphicFramework.glfwSwapInterval(value ? 1 : 0);
|
||||
vsyncActivated = value;
|
||||
set => vsyncActivated = value; // GraphicFramework.glfwSwapInterval(value ? 1 : 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}//-------------------------------------- End of Class ---------------------------------------//
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,11 +27,11 @@ namespace StgSharp
|
||||
/// Performs all initialization work for this module using the provided profile.
|
||||
/// </summary>
|
||||
/// <param name="profile">
|
||||
/// The configuration profile supplied at registration time. Use <see
|
||||
/// cref="IModuleInitializeProfile.Empty" /> if no configuration is required.
|
||||
/// The configuration profile supplied at registration time. Use <see ///
|
||||
/// cref="IModuleInitializeConfiguration.Empty" /> if no configuration is required.
|
||||
/// </param>
|
||||
void InitializeModule(
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration profile
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -46,15 +46,15 @@ namespace StgSharp
|
||||
/// Marker interface for module initialization configuration. Implementations are plain data
|
||||
/// carriers; no static factory is required.
|
||||
/// </summary>
|
||||
public interface IModuleInitializeProfile
|
||||
public interface IModuleInitializeConfiguration
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// A shared, allocation-free empty profile for modules that require no configuration.
|
||||
/// </summary>
|
||||
static readonly IModuleInitializeProfile Empty = EmptyModuleInitializeProfile.Instance;
|
||||
static readonly IModuleInitializeConfiguration Empty = EmptyModuleInitializeProfile.Instance;
|
||||
|
||||
private sealed class EmptyModuleInitializeProfile : IModuleInitializeProfile
|
||||
private sealed class EmptyModuleInitializeProfile : IModuleInitializeConfiguration
|
||||
{
|
||||
|
||||
public static readonly EmptyModuleInitializeProfile Instance = new();
|
||||
@@ -66,8 +66,8 @@ namespace StgSharp
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pairs an <see cref="IStaticModule" /> with its <see cref="IModuleInitializeProfile" />,
|
||||
/// ensuring the two are never stored or iterated independently.
|
||||
/// Pairs an <see cref="IStaticModule" /> with its <see cref="IModuleInitializeConfiguration"
|
||||
/// />, ensuring the two are never stored or iterated independently.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Using a <see langword="readonly struct" /> avoids the boxing overhead that would occur if
|
||||
@@ -77,20 +77,20 @@ namespace StgSharp
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new <see cref="ModuleDescriptor" /> using <see
|
||||
/// cref="IModuleInitializeProfile.Empty" /> as the profile.
|
||||
/// Initializes a new <see cref="ModuleDescriptor" /> using <see ///
|
||||
/// cref="IModuleInitializeConfiguration.Empty" /> as the profile.
|
||||
/// </summary>
|
||||
public ModuleDescriptor(
|
||||
IStaticModule module
|
||||
)
|
||||
: this(module, IModuleInitializeProfile.Empty) { }
|
||||
: this(module, IModuleInitializeConfiguration.Empty) { }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new <see cref="ModuleDescriptor" /> with an explicit profile.
|
||||
/// </summary>
|
||||
public ModuleDescriptor(
|
||||
IStaticModule module,
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration profile
|
||||
)
|
||||
{
|
||||
Module = module;
|
||||
@@ -100,7 +100,7 @@ namespace StgSharp
|
||||
/// <summary>
|
||||
/// Gets the configuration profile associated with the module.
|
||||
/// </summary>
|
||||
public IModuleInitializeProfile Profile { get; }
|
||||
public IModuleInitializeConfiguration Profile { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the module to be initialized.
|
||||
@@ -127,8 +127,8 @@ namespace StgSharp
|
||||
|
||||
/// <summary>
|
||||
/// An ordered collection of modules to be initialized during application startup and
|
||||
/// uninitialized on shutdown. Supports three registration strategies so that the <c> new()
|
||||
/// </c> generic constraint is never a hard requirement.
|
||||
/// uninitialized on shutdown. Supports three registration strategies so that the <c>new()
|
||||
/// ///</c> generic constraint is never a hard requirement.
|
||||
/// </summary>
|
||||
public sealed class ModuleToInitializeCollection : IEnumerable<IStaticModule>, IStaticModule
|
||||
{
|
||||
@@ -136,10 +136,11 @@ namespace StgSharp
|
||||
private readonly List<ModuleDescriptor> _descriptors = [];
|
||||
|
||||
internal ModuleToInitializeCollection(
|
||||
World.Initializer i
|
||||
World.Initializer init,
|
||||
World.InitializeConfiguration config
|
||||
)
|
||||
{
|
||||
_descriptors.Add(new ModuleDescriptor(i));
|
||||
_descriptors.Add(new ModuleDescriptor(init, config));
|
||||
}
|
||||
|
||||
// ── IEnumerable<IStaticModule> ───────────────────────────────────────────
|
||||
@@ -189,11 +190,11 @@ namespace StgSharp
|
||||
/// public parameterless constructor.
|
||||
/// </typeparam>
|
||||
/// <param name="profile">
|
||||
/// Optional initialization profile. Defaults to <see
|
||||
/// cref="IModuleInitializeProfile.Empty" /> when <see langword="null" />.
|
||||
/// Optional initialization profile. Defaults to <see ///
|
||||
/// cref="IModuleInitializeConfiguration.Empty" /> when <see langword="null" />.
|
||||
/// </param>
|
||||
public ModuleToInitializeCollection UseModule<T>(
|
||||
IModuleInitializeProfile? profile = null
|
||||
IModuleInitializeConfiguration? profile = null
|
||||
) where T : IStaticModule, new()
|
||||
{
|
||||
return UseModule(static() => new T(), profile);
|
||||
@@ -206,17 +207,17 @@ namespace StgSharp
|
||||
/// </summary>
|
||||
/// <param name="factory">
|
||||
/// A delegate that constructs and returns the module instance. The delegate is invoked
|
||||
/// once, immediately at registration time. If <paramref name="factory" /> is <see
|
||||
/// once, immediately at registration time. If <paramref name="factory" /> is <see ///
|
||||
/// langword="null" /> or returns <see langword="null" />, the call is silently ignored
|
||||
/// and the collection is returned unchanged.
|
||||
/// </param>
|
||||
/// <param name="profile">
|
||||
/// Optional initialization profile. Defaults to <see
|
||||
/// cref="IModuleInitializeProfile.Empty" /> when <see langword="null" />.
|
||||
/// Optional initialization profile. Defaults to <see ///
|
||||
/// cref="IModuleInitializeConfiguration.Empty" /> when <see langword="null" />.
|
||||
/// </param>
|
||||
public ModuleToInitializeCollection UseModule(
|
||||
Func<IStaticModule> factory,
|
||||
IModuleInitializeProfile? profile = null
|
||||
IModuleInitializeConfiguration? profile = null
|
||||
)
|
||||
{
|
||||
if (factory is null) {
|
||||
@@ -228,7 +229,7 @@ namespace StgSharp
|
||||
}
|
||||
_descriptors.Add(new ModuleDescriptor(
|
||||
mod,
|
||||
profile ?? IModuleInitializeProfile.Empty));
|
||||
profile ?? IModuleInitializeConfiguration.Empty));
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -240,17 +241,17 @@ namespace StgSharp
|
||||
/// The module instance to register.
|
||||
/// </param>
|
||||
/// <param name="profile">
|
||||
/// Optional initialization profile. Defaults to <see
|
||||
/// cref="IModuleInitializeProfile.Empty" /> when <see langword="null" />.
|
||||
/// Optional initialization profile. Defaults to <see ///
|
||||
/// cref="IModuleInitializeConfiguration.Empty" /> when <see langword="null" />.
|
||||
/// </param>
|
||||
public ModuleToInitializeCollection UseModule(
|
||||
IStaticModule module,
|
||||
IModuleInitializeProfile? profile = null
|
||||
IModuleInitializeConfiguration? profile = null
|
||||
)
|
||||
{
|
||||
_descriptors.Add(new ModuleDescriptor(
|
||||
module,
|
||||
profile ?? IModuleInitializeProfile.Empty));
|
||||
profile ?? IModuleInitializeConfiguration.Empty));
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -263,12 +264,12 @@ namespace StgSharp
|
||||
// ── IStaticModule explicit implementation ────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// Explicit <see cref="IStaticModule" /> implementation. Delegates to <see
|
||||
/// Explicit <see cref="IStaticModule" /> implementation. Delegates to <see ///
|
||||
/// cref="InitializeModule()" />, ignoring the supplied profile because each contained module uses
|
||||
/// its own registered profile.
|
||||
/// </summary>
|
||||
void IStaticModule.InitializeModule(
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration profile
|
||||
)
|
||||
{
|
||||
InitializeModule();
|
||||
@@ -278,4 +279,4 @@ namespace StgSharp
|
||||
string IStaticModule.ModuleName => "Module Initializer";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
using StgSharp.HighPerformance;
|
||||
using StgSharp.HighPerformance.ProcessorAbstraction;
|
||||
using StgSharp.Timing;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
@@ -36,9 +37,11 @@ namespace StgSharp
|
||||
private static uint markCount = 0;
|
||||
internal static GraphicAPI API = default;
|
||||
|
||||
public static ModuleToInitializeCollection Initialize()
|
||||
public static ModuleToInitializeCollection Initialize(
|
||||
InitializeConfiguration config
|
||||
)
|
||||
{
|
||||
return new ModuleToInitializeCollection(new Initializer());
|
||||
return new ModuleToInitializeCollection(new Initializer(), config);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
@@ -177,10 +180,12 @@ namespace StgSharp
|
||||
}
|
||||
}
|
||||
|
||||
internal static unsafe void InternalInitialize()
|
||||
internal static unsafe void InternalInitialize(
|
||||
InitializeConfiguration config
|
||||
)
|
||||
{
|
||||
// Initialize time provider and start providing time
|
||||
MainTimeProvider.StartProvidingTime();
|
||||
MainTimeProvider.StartProvidingTime(config.TimingConfig);
|
||||
DefaultLog.InternalAppendLog("\n\n\n");
|
||||
DefaultLog.InternalWriteLog(
|
||||
$"Program {Assembly.GetEntryAssembly()!.FullName} on {Environment.MachineName} Started.", LogType.Info);
|
||||
@@ -197,16 +202,26 @@ namespace StgSharp
|
||||
/**/
|
||||
}
|
||||
|
||||
public class InitializeConfiguration : IModuleInitializeConfiguration
|
||||
{
|
||||
|
||||
public TimeSourceStartupConfiguration TimingConfig { get; set; }
|
||||
|
||||
}
|
||||
|
||||
internal class Initializer : IStaticModule
|
||||
{
|
||||
|
||||
public string ModuleName => "StgSharpCore";
|
||||
|
||||
public void InitializeModule(
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration config
|
||||
)
|
||||
{
|
||||
World.InternalInitialize();
|
||||
if (config is not InitializeConfiguration world_init) {
|
||||
throw new InvalidCastException();
|
||||
}
|
||||
World.InternalInitialize(world_init);
|
||||
}
|
||||
|
||||
public void UninitializeModule()
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
@@ -92,6 +93,50 @@ namespace StgSharp.HighPerformance.Memory
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fills the stack in place via a caller-supplied callback, mirroring
|
||||
/// <c>CapacityFixedStack<T>.FillRange</c>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Preferred over building a temporary span and handing it to
|
||||
/// <see cref="BufferStackBuilder.Create{T}(ReadOnlySpan{T})"/>:
|
||||
/// <list type="bullet">
|
||||
/// <item>The caller no longer needs a scratch buffer at all — the
|
||||
/// callback writes straight into this stack's native storage, so there
|
||||
/// is no <c>stackalloc</c> to size and no copy afterwards.</item>
|
||||
/// <item><c>Span<T></c> does not implicitly convert to
|
||||
/// <c>ReadOnlySpan<T></c> in a way that participates in generic
|
||||
/// type inference before C# 14, so <c>Create(span)</c> fails with
|
||||
/// CS0411 on older compilers. Passing the element type through the
|
||||
/// enclosing instance sidesteps inference entirely.</item>
|
||||
/// </list>
|
||||
/// </remarks>
|
||||
internal unsafe void FillRange(
|
||||
SpanAction<T, nuint> filling,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
if (filling is null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Header* header = (Header*)_buffer;
|
||||
T* dataStart = (T*)(_buffer + sizeof(Header));
|
||||
|
||||
// Hand out only the unused tail, matching CapacityFixedStack:
|
||||
// filling is an append, not a rewrite of live entries.
|
||||
int start = (int)header->Top;
|
||||
int room = (int)header->Capacity - start;
|
||||
if (room <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
filling(new Span<T>(dataStart + start, room), buffer);
|
||||
|
||||
header->Top = header->Capacity;
|
||||
_count = header->Capacity;
|
||||
}
|
||||
|
||||
// Internal method for efficient bulk initialization
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal unsafe void InitializeFromSpan(
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
using StgSharp.Threading;
|
||||
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -253,6 +254,49 @@ namespace StgSharp.HighPerformance.Memory
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fills the stack in place via a caller-supplied callback, mirroring
|
||||
/// <c>CapacityFixedStack<T>.FillRange</c>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Intended for construction only, and therefore takes no lock — the
|
||||
/// instance is not yet published to other threads at that point. Do not
|
||||
/// call it on a stack that is already in concurrent use.
|
||||
/// <para>
|
||||
/// Preferred over building a temporary span and handing it to
|
||||
/// <see cref="BufferStackBuilder.CreateConcurrent{T}(ReadOnlySpan{T})"/>
|
||||
/// for the same two reasons as the non-concurrent variant: the callback
|
||||
/// writes straight into native storage (no scratch buffer, no copy),
|
||||
/// and passing the element type through the enclosing instance avoids
|
||||
/// the <c>Span</c>-to-<c>ReadOnlySpan</c> inference gap that yields
|
||||
/// CS0411 before C# 14.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
internal unsafe void FillRange(
|
||||
SpanAction<T, nuint> filling,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
if (filling is null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Header* header = (Header*)_buffer;
|
||||
T* dataStart = (T*)(_buffer + sizeof(Header));
|
||||
|
||||
// Append into the unused tail only, matching CapacityFixedStack.
|
||||
int start = header->Top;
|
||||
int room = header->Capacity - start;
|
||||
if (room <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
filling(new Span<T>(dataStart + start, room), buffer);
|
||||
|
||||
header->Top = header->Capacity;
|
||||
Volatile.Write(ref _count, header->Capacity);
|
||||
}
|
||||
|
||||
// Internal method for efficient bulk initialization
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal unsafe void InitializeFromSpan(
|
||||
|
||||
@@ -40,15 +40,28 @@ namespace StgSharp.HighPerformance.Memory
|
||||
> 64 => 64,
|
||||
_ => (int)count
|
||||
};
|
||||
Span<nuint> span = stackalloc nuint[initCount];
|
||||
for (int i = 0; i < initCount; i++) {
|
||||
span[i] = _currentBuffer + ((nuint)(i * _elementSize));
|
||||
}
|
||||
_buffers = new(4);
|
||||
_buffers.Push(_currentBuffer);
|
||||
_recycle = BufferStackBuilder.Create(span);
|
||||
|
||||
// Fill through a callback rather than building a scratch span and
|
||||
// passing it to BufferStackBuilder.Create: no stackalloc, no copy,
|
||||
// and no reliance on Span-to-ReadOnlySpan inference (CS0411 before
|
||||
// C# 14). Same shape as FixedSlabAllocator.
|
||||
int elementSize = _elementSize;
|
||||
_recycle = new(initCount);
|
||||
_recycle.FillRange(init, _currentBuffer);
|
||||
_currentCapacity = count;
|
||||
_currentIndex = (nuint)initCount;
|
||||
|
||||
void init(
|
||||
Span<nuint> arr,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < arr.Length; i++) {
|
||||
arr[i] = buffer + ((nuint)(i * elementSize));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override nuint Allocate()
|
||||
|
||||
@@ -44,14 +44,26 @@ namespace StgSharp.HighPerformance.Memory
|
||||
> 64 => 64,
|
||||
_ => (int)count
|
||||
};
|
||||
Span<nuint> span = stackalloc nuint[initCount];
|
||||
for (int i = 0; i < initCount; i++) {
|
||||
span[i] = _currentBuffer + (nuint)(i * _elementSize);
|
||||
}
|
||||
_buffers = new(4);
|
||||
_recycle = BufferStackBuilder.CreateConcurrent(span);
|
||||
|
||||
// Callback fill instead of scratch span + CreateConcurrent: avoids
|
||||
// the stackalloc and the copy, and sidesteps the CS0411 inference
|
||||
// gap. Safe without locking — not yet published to other threads.
|
||||
int elementSize = _elementSize;
|
||||
_recycle = new(initCount);
|
||||
_recycle.FillRange(init, _currentBuffer);
|
||||
_currentCapacity = count;
|
||||
_currentIndex = (nuint)initCount;
|
||||
|
||||
void init(
|
||||
Span<nuint> arr,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < arr.Length; i++) {
|
||||
arr[i] = buffer + (nuint)(i * elementSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override nuint Allocate()
|
||||
|
||||
@@ -40,19 +40,19 @@ namespace StgSharp.HighPerformance.Memory
|
||||
_buffer = buffer;
|
||||
|
||||
_Capacity = count;
|
||||
int initCount = count switch
|
||||
_recycle = new((int)_Capacity);
|
||||
_recycle.FillRange(init, buffer);
|
||||
_currentIndex = _Capacity;
|
||||
|
||||
static void init(
|
||||
Span<nuint> arr,
|
||||
nuint buffer
|
||||
)
|
||||
{
|
||||
<= 4 => 4,
|
||||
> 64 => 64,
|
||||
_ => (int)count
|
||||
};
|
||||
Span<nuint> span = stackalloc nuint[initCount];
|
||||
for (int i = 0; i < initCount; i++) {
|
||||
span[i] = _buffer + ((nuint)(i * _elementSize));
|
||||
for (int i = 0; i < arr.Length; i++) {
|
||||
arr[i] = buffer + ((nuint)i * (nuint)Unsafe.SizeOf<T>());
|
||||
}
|
||||
}
|
||||
_recycle = CapacityFixedStackBuilder.Create(span);
|
||||
_Capacity = count;
|
||||
_currentIndex = (nuint)initCount;
|
||||
}
|
||||
|
||||
public override nuint Allocate()
|
||||
|
||||
@@ -43,12 +43,26 @@ namespace StgSharp.HighPerformance.Memory
|
||||
> 64 => 64,
|
||||
_ => ((int)_capacity) / 4
|
||||
};
|
||||
Span<nuint> span = stackalloc nuint[initCount];
|
||||
for (int i = 0; i < initCount; i++) {
|
||||
span[i] = (nuint)i;
|
||||
}
|
||||
_stack = BufferStackBuilder.CreateConcurrent(span);
|
||||
// Callback fill instead of scratch span + CreateConcurrent: avoids
|
||||
// the stackalloc and the copy, and sidesteps the CS0411 inference
|
||||
// gap. Safe without locking — not yet published to other threads.
|
||||
//
|
||||
// Note this variant stores *indices*, not addresses, so the buffer
|
||||
// argument is unused here; it is kept to match the shared
|
||||
// SpanAction<T, nuint> shape.
|
||||
_stack = new(initCount);
|
||||
_stack.FillRange(init, 0);
|
||||
_highestAllocated += (nuint)initCount;
|
||||
|
||||
static void init(
|
||||
Span<nuint> arr,
|
||||
nuint _
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < arr.Length; i++) {
|
||||
arr[i] = (nuint)i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal T* BasePointer => _buffer;
|
||||
|
||||
@@ -123,7 +123,8 @@ namespace StgSharp.HighPerformance.ProcessorAbstraction
|
||||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
[DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory)]
|
||||
internal static partial void SetThreadAffinity(
|
||||
int coreId
|
||||
int coreId,
|
||||
int numaId
|
||||
);
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Collections;
|
||||
using StgSharp.HighPerformance.ProcessorAbstraction;
|
||||
using StgSharp.Timing;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
@@ -39,7 +40,9 @@ namespace StgSharp
|
||||
return mainProvider.ElapsedTicks;
|
||||
}
|
||||
|
||||
public sealed override void StartProvidingTime()
|
||||
public sealed override void StartProvidingTime(
|
||||
TimeSourceStartupConfiguration threadConfig
|
||||
)
|
||||
{
|
||||
if (mainProvider.IsRunning) {
|
||||
return;
|
||||
@@ -49,9 +52,10 @@ namespace StgSharp
|
||||
timeProvideThread = new Thread(ProvideTime)
|
||||
{
|
||||
IsBackground = true,
|
||||
Name = "StgSharpTime"
|
||||
Name = "StgSharpTime",
|
||||
Priority = threadConfig.Priority,
|
||||
};
|
||||
timeProvideThread.Start();
|
||||
timeProvideThread.Start(threadConfig);
|
||||
}
|
||||
|
||||
public override void StopProvidingTime()
|
||||
@@ -82,13 +86,18 @@ namespace StgSharp
|
||||
_subscribers.Remove(subscriber);
|
||||
}
|
||||
|
||||
private void ProvideTime()
|
||||
private void ProvideTime(
|
||||
object? param
|
||||
)
|
||||
{
|
||||
TimeSourceStartupConfiguration threadConfig = (TimeSourceStartupConfiguration)param!;
|
||||
long internalFrequency = Stopwatch.Frequency; // ticks per second
|
||||
lock (mainProvider) {
|
||||
mainProvider.Restart();
|
||||
}
|
||||
|
||||
Thread.Sleep(10);
|
||||
Numa.SetThreadAffinity((int)threadConfig.BindedCoreIndex, (int)threadConfig.BindedNumaNode);
|
||||
while (mainProvider.IsRunning)
|
||||
{
|
||||
long elapsedTicks;
|
||||
|
||||
@@ -6,13 +6,28 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp;
|
||||
|
||||
using StgSharp.HighPerformance.ProcessorAbstraction;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
namespace StgSharp.Timing
|
||||
{
|
||||
public class TimeSourceStartupConfiguration(
|
||||
nuint bindedNumaNode = 0,
|
||||
nuint bindedCoreIndex = 0,
|
||||
ThreadPriority threadPriority = ThreadPriority.Highest
|
||||
)
|
||||
{
|
||||
|
||||
public nuint BindedNumaNode { get; } = bindedNumaNode;
|
||||
|
||||
public nuint BindedCoreIndex { get; } = bindedCoreIndex;
|
||||
|
||||
public ThreadPriority Priority { get; } = threadPriority;
|
||||
|
||||
}
|
||||
|
||||
public abstract class TimeSourceProviderBase
|
||||
{
|
||||
|
||||
@@ -40,7 +55,9 @@ namespace StgSharp.Timing
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void StartProvidingTime();
|
||||
public abstract void StartProvidingTime(
|
||||
TimeSourceStartupConfiguration threadConfig
|
||||
);
|
||||
|
||||
public abstract void StopProvidingTime();
|
||||
|
||||
|
||||
@@ -25,8 +25,6 @@ namespace StgSharp.Timing
|
||||
private EventHandler? _refreshHandler, _missHandler;
|
||||
private int _size, _id;
|
||||
private long _pendingSpans; // Number of unconsumed span ticks since last Wait.
|
||||
|
||||
private readonly ManualResetEventSlim _event = new();
|
||||
private readonly object _participantObject = new();
|
||||
|
||||
public event EventHandler MissTimeSpanRefreshed
|
||||
@@ -57,15 +55,17 @@ namespace StgSharp.Timing
|
||||
/// </summary>
|
||||
public long PendingSpanCount => Volatile.Read(ref _pendingSpans);
|
||||
|
||||
internal ManualResetEventSlim AwaitingEvent => _event;
|
||||
internal ManualResetEventSlim ResetEvent { get; } = new();
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
#pragma warning disable CA1816
|
||||
// mark provider as ended so external users can observe terminal state
|
||||
Volatile.Write(ref _endedFlag, 1);
|
||||
s_unusedID.Push(TokenID);
|
||||
_event.Set();
|
||||
ResetEvent.Set();
|
||||
GC.SuppressFinalize(this);
|
||||
#pragma warning restore CA1816
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
@@ -84,7 +84,7 @@ namespace StgSharp.Timing
|
||||
|
||||
public void WaitNextSpan()
|
||||
{
|
||||
_event.Wait();
|
||||
ResetEvent.Wait();
|
||||
|
||||
// Consume one span slot (clamp at 0 so multiple subscribers won't make it negative).
|
||||
while (true)
|
||||
@@ -99,7 +99,7 @@ namespace StgSharp.Timing
|
||||
if (cur - 1 == 0)
|
||||
{
|
||||
// Last consumer resets the gate for the next tick.
|
||||
_event.Reset();
|
||||
ResetEvent.Reset();
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -108,7 +108,7 @@ namespace StgSharp.Timing
|
||||
|
||||
public async Task WaitNextSpanAsync()
|
||||
{
|
||||
await Task.Run(() => _event.Wait()).ConfigureAwait(false);
|
||||
await Task.Run(ResetEvent.Wait).ConfigureAwait(false);
|
||||
while (true)
|
||||
{
|
||||
long cur = Volatile.Read(ref _pendingSpans);
|
||||
@@ -120,7 +120,7 @@ namespace StgSharp.Timing
|
||||
if (Interlocked.CompareExchange(ref _pendingSpans, cur - 1, cur) == cur)
|
||||
{
|
||||
if (cur - 1 == 0) {
|
||||
_event.Reset();
|
||||
ResetEvent.Reset();
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -138,7 +138,7 @@ namespace StgSharp.Timing
|
||||
)
|
||||
{
|
||||
// Block the current thread until the event is signaled or cancellation requested.
|
||||
_event.Wait(ct);
|
||||
ResetEvent.Wait(ct);
|
||||
|
||||
// consume one pending span (same logic as non-cancellable variant)
|
||||
while (true)
|
||||
@@ -152,7 +152,7 @@ namespace StgSharp.Timing
|
||||
if (Interlocked.CompareExchange(ref _pendingSpans, cur - 1, cur) == cur)
|
||||
{
|
||||
if (cur - 1 == 0) {
|
||||
_event.Reset();
|
||||
ResetEvent.Reset();
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -203,7 +203,7 @@ namespace StgSharp.Timing
|
||||
if (Interlocked.CompareExchange(ref _pendingSpans, toIssue, 0) == 0)
|
||||
{
|
||||
// Open the gate for all current waiters (up to `_size`).
|
||||
_event.Set();
|
||||
ResetEvent.Set();
|
||||
_refreshHandler?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
} else
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace StgSharp.Timing
|
||||
}
|
||||
TokenID = id;
|
||||
_size = maxWaitCount > 0 ? maxWaitCount : 1;
|
||||
_event = new ManualResetEventSlim(initialState:false, spinCount:0);
|
||||
ResetEvent = new ManualResetEventSlim(initialState:false, spinCount:0);
|
||||
_pendingSpans = 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ namespace StgSharp.Graphics
|
||||
public string ModuleName => "Graphics";
|
||||
|
||||
public void InitializeModule(
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration profile
|
||||
)
|
||||
{
|
||||
GraphicFramework.LoadGlfw();
|
||||
@@ -0,0 +1,36 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="Image.Native"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Internal;
|
||||
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
internal static unsafe partial class GraphicFramework
|
||||
{
|
||||
|
||||
[LibraryImport(
|
||||
Native.LibName,
|
||||
EntryPoint = "loadImageData",
|
||||
StringMarshalling = StringMarshalling.Utf8)]
|
||||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
internal static partial void InternalLoadImage(
|
||||
string fileName,
|
||||
ImageInfo* output,
|
||||
ImageLoader loader
|
||||
);
|
||||
|
||||
[LibraryImport(Native.LibName, EntryPoint = "unloadImageData")]
|
||||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
internal static partial void InternalUnloadImage(
|
||||
ImageInfo* output
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="Image"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
public class Image : IImageProvider
|
||||
{
|
||||
|
||||
private byte[] _data;
|
||||
private ImageInfo _rawInfo;
|
||||
private int _pixelUpdateCount = 0;
|
||||
|
||||
internal unsafe Image()
|
||||
{
|
||||
_rawInfo = new ImageInfo();
|
||||
}
|
||||
|
||||
internal Image(
|
||||
ImageInfo information
|
||||
)
|
||||
{
|
||||
_rawInfo = information;
|
||||
_data = [];
|
||||
|
||||
// int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel;
|
||||
}
|
||||
|
||||
public (int width, int height) Size => (_rawInfo.Width, _rawInfo.Height);
|
||||
|
||||
public byte[] PixelBuffer
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((_data.Length == 0) || (_data == null))
|
||||
{
|
||||
GetBytes();
|
||||
return _data!;
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
}
|
||||
|
||||
public ImageChannel Channel => _rawInfo.Channel;
|
||||
|
||||
/// <summary>
|
||||
/// Hash code of time pixels updated last time.
|
||||
/// </summary>
|
||||
public int PixelUpdateCount
|
||||
{
|
||||
get => _pixelUpdateCount;
|
||||
internal set => _pixelUpdateCount = value;
|
||||
}
|
||||
|
||||
public int ChannelCount => _rawInfo.ChannelCount;
|
||||
|
||||
public int Height
|
||||
{
|
||||
get => _rawInfo.Height;
|
||||
internal set => _rawInfo.Height = value;
|
||||
}
|
||||
|
||||
public int Width
|
||||
{
|
||||
get => _rawInfo.Width;
|
||||
internal set => _rawInfo.Width = value;
|
||||
}
|
||||
|
||||
public int PixelSize => ImageInfo.GetPixelSize(_rawInfo.pixelLayout, _rawInfo.Channel);
|
||||
|
||||
public PixelChannelLayout PixelLayout
|
||||
{
|
||||
get => _rawInfo.pixelLayout;
|
||||
private set => _rawInfo.pixelLayout = value;
|
||||
}
|
||||
|
||||
internal ref byte[] Data => ref _data;
|
||||
|
||||
public void FromBytes(
|
||||
byte[] stream
|
||||
) { }
|
||||
|
||||
public static unsafe Image FromFile(
|
||||
string route,
|
||||
ImageLoader loader
|
||||
)
|
||||
{
|
||||
Image ret = new Image();
|
||||
fixed (ImageInfo* iptr = &ret._rawInfo) {
|
||||
GraphicFramework.InternalLoadImage(route, iptr, loader);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static Image FromMemory(
|
||||
(int width, int height) size,
|
||||
ImageChannel channel,
|
||||
byte[] stream
|
||||
)
|
||||
{
|
||||
ImageInfo _info = new ImageInfo
|
||||
{
|
||||
Height = size.height,
|
||||
Width = size.width,
|
||||
Channel = channel,
|
||||
StreamPtr = IntPtr.Zero
|
||||
};
|
||||
Image ret = new Image(_info);
|
||||
ret.PixelLayout = PixelChannelLayout.Byte;
|
||||
ret._data = stream;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static Image FromMemory(
|
||||
(int width, int height) size,
|
||||
ImageChannel channel,
|
||||
PixelChannelLayout layout,
|
||||
byte[] stream
|
||||
)
|
||||
{
|
||||
ImageInfo _info = new ImageInfo
|
||||
{
|
||||
Height = size.height,
|
||||
Width = size.width,
|
||||
Channel = channel,
|
||||
StreamPtr = IntPtr.Zero
|
||||
};
|
||||
Image ret = new Image(_info);
|
||||
ret.PixelLayout = layout;
|
||||
ret._data = stream;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public unsafe byte[] GetBytes()
|
||||
{
|
||||
if (_data.Length == 0)
|
||||
{
|
||||
int size = Width * Height * ImageInfo.GetPixelSize(PixelLayout, Channel);
|
||||
_data = new Span<byte>((byte*)_rawInfo.StreamPtr, size).ToArray();
|
||||
fixed (ImageInfo* pptr = &_rawInfo) {
|
||||
GraphicFramework.InternalUnloadImage(pptr);
|
||||
}
|
||||
_rawInfo.StreamPtr = IntPtr.Zero;
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
|
||||
public Image ProvideImage()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
internal static Image FromMemory(
|
||||
ImageInfo info,
|
||||
byte[] data,
|
||||
int operationCount
|
||||
)
|
||||
{
|
||||
return new Image
|
||||
{
|
||||
_rawInfo = info,
|
||||
_data = data,
|
||||
_pixelUpdateCount = operationCount
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -111,4 +111,4 @@ namespace StgSharp.Graphics.OpenGL
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
# StgSharp.Graphics retired sources
|
||||
|
||||
This directory contains source snapshots retired during the Graphics/OpenGL
|
||||
reorganization on 2026-08-26. Files use the `.cs.old` suffix so that SDK-style
|
||||
project globbing does not compile them.
|
||||
|
||||
## Retired without an active replacement
|
||||
|
||||
- `framework.cs.old`: unused GL/debug delegate declarations.
|
||||
- `Vulkan.*.cs.old`: unreferenced Vulkan placeholders.
|
||||
- `OpenGL.glRenderStream.ThreadSecurity.cs.old`: unused thread/context fields.
|
||||
- `OpenGL.Generated.GlCommandHistory.g.cs.old`: generator report data that does
|
||||
not belong in the runtime assembly.
|
||||
|
||||
## Split before retirement
|
||||
|
||||
- `gl.cs.old`: image P/Invokes were temporarily split out and later retired;
|
||||
legacy OpenGL native helpers were replaced with direct calls through the
|
||||
OpenGL function table.
|
||||
- `glfw.dtruct.cs.old`: reduced to the four opaque GLFW types currently used by
|
||||
the wrapper in `glfw.struct.cs`.
|
||||
- `OpenGL.glType.cs.old`: only `glSync` remains active in `OpenGL/glSync.cs`.
|
||||
- `ShaderEdit.ShaderGenerator.cs.old`: only the temporary
|
||||
`InternalShaderType` compatibility enum remains active.
|
||||
- `GraphicInitializer.cs.old`: merged into the correctly named `GraphicModule`
|
||||
in `glfw.cs`.
|
||||
- `OpenGL.glApiManager.cs.old` and `OpenGL.glApiManager.Const.cs.old`: the active
|
||||
compatibility loader retains only core-version loading; the unused extension
|
||||
classification table and 619 write-only flags were retired.
|
||||
|
||||
## Retired during the image simplification
|
||||
|
||||
- `Image.cs.old`: the former image/decoder/OpenGL-format aggregate.
|
||||
- `ImageInfo.cs.old` and `Image.Native.cs.old`: the mismatched native decoder
|
||||
state and its P/Invoke bridge.
|
||||
- `Pixels.cs.old`: the unused and incorrectly sized legacy pixel abstraction.
|
||||
- `CPUanimation.ImageHelper.cs.old`: incomplete resizing and movement logic;
|
||||
image transformations now belong to a caller-selected codec or image library.
|
||||
- `CPUanimation.IImageProvider.cs.old`: the redundant image-returns-itself
|
||||
provider contract.
|
||||
- `TexturePipeline.cs.old`: an unused pipeline payload tied to the retired
|
||||
non-generic image type.
|
||||
- `OpenGL.Buffer.AutoTexture.cs.old`: the unused texture cache depended on image
|
||||
mutation counters and also contained incorrect slot/recycling bookkeeping.
|
||||
|
||||
## Retired during the data-only OpenGL resource migration
|
||||
|
||||
- `Define.BufferObjectBase.cs.old` and
|
||||
`OpenGL.Buffer.GLBufferObjectBase.cs.old`: the former resource base classes
|
||||
injected `glRender`/`OpenGLFunction` and attempted context-bound disposal from
|
||||
resource objects and finalizers.
|
||||
- `OpenGL.glRenderObjectGenrator.cs.old`: the former factories implicitly
|
||||
created resources through a render-stream instance.
|
||||
- `OpenGL.ShaderEdit.IglConvertable.cs.old`, `ShaderEdit.ShaderStruct.cs.old`,
|
||||
and `ShaderEdit.InternalShaderType.cs.old`: the obsolete shader conversion
|
||||
layer submitted uniforms through the global `CurrentGL` context.
|
||||
|
||||
Active OpenGL resource and shader types are passive handle records. Creation,
|
||||
binding, upload, compilation, use, and deletion are explicitly submitted to an
|
||||
`OpenGLFunction` instance.
|
||||
|
||||
The active `Image<TPixel>` is only a tightly packed managed bitmap buffer. It
|
||||
does not load files, convert formats, resize pixels, or retain native memory.
|
||||
|
||||
These files are historical references, not candidates for restoration as a
|
||||
group. Restore individual behavior only after checking it against the new
|
||||
Graphics and OpenGL architecture.
|
||||
@@ -0,0 +1,37 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="InternalShaderType"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
namespace StgSharp.Graphics.ShaderEdit
|
||||
{
|
||||
// Temporary compatibility type for ShaderStruct. The new shader model will replace it.
|
||||
public enum InternalShaderType
|
||||
{
|
||||
#pragma warning disable CS1591
|
||||
Struct,
|
||||
Void,
|
||||
Int,
|
||||
UInt,
|
||||
Float,
|
||||
Double,
|
||||
Vector2,
|
||||
Vector3,
|
||||
Vector4,
|
||||
VectorD2,
|
||||
VectorD3,
|
||||
VectorD4,
|
||||
Matrix2x2,
|
||||
Matrix2x3,
|
||||
Matrix2x4,
|
||||
Matrix3x2,
|
||||
Matrix3x3,
|
||||
Matrix3x4,
|
||||
Matrix4x2,
|
||||
Matrix4x3,
|
||||
Matrix4x4,
|
||||
#pragma warning restore CS1591
|
||||
}
|
||||
}
|
||||
@@ -5,14 +5,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using StgSharp.Graphics.ShaderEdit;
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using System;
|
||||
|
||||
namespace StgSharp.Mathematics.Graphics
|
||||
namespace StgSharp.Mathematics.Numeric.Graphics
|
||||
{
|
||||
public sealed class Camera : IglConvertable
|
||||
public sealed class Camera
|
||||
{
|
||||
|
||||
private bool _isLookAtAvailable;
|
||||
@@ -24,7 +22,6 @@ namespace StgSharp.Mathematics.Graphics
|
||||
internal Radius _pitch;
|
||||
internal Radius _row;
|
||||
internal Radius _yaw;
|
||||
internal Uniform<GraphicsMatrix> convertedUniform;
|
||||
internal Vec3 _target, up;
|
||||
|
||||
public Camera()
|
||||
@@ -75,36 +72,6 @@ namespace StgSharp.Mathematics.Graphics
|
||||
return Projection * View;
|
||||
}
|
||||
|
||||
public void DisplayGLtypeDefinition()
|
||||
{
|
||||
Console.WriteLine("uniform matrix4x4 cameraName;");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get all uniform related to this <see cref="Camera" />.
|
||||
/// </summary>
|
||||
/// <param _label="source">
|
||||
/// Shader program requires this camera.
|
||||
/// </param>
|
||||
/// <param _label="uniformName">
|
||||
/// ContextName of all related uniforms. If you fallow form from <see ///
|
||||
/// cref="IglConvertable.DisplayGLtypeDefinition" />
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentException">
|
||||
///
|
||||
/// </exception>
|
||||
public unsafe void GainAllUniforms(
|
||||
ShaderProgram source,
|
||||
params string[] uniformName
|
||||
)
|
||||
{
|
||||
if ((uniformName is null) || (uniformName.Length != 1)) {
|
||||
throw new ArgumentException(
|
||||
"Camera needs exactly one uniform.", nameof(uniformName));
|
||||
}
|
||||
convertedUniform = source.GetUniform<GraphicsMatrix>(uniformName[0]);
|
||||
}
|
||||
|
||||
public void MoveNear(
|
||||
float distance
|
||||
)
|
||||
@@ -129,12 +96,6 @@ namespace StgSharp.Mathematics.Graphics
|
||||
_isLookAtAvailable = false;
|
||||
}
|
||||
|
||||
public unsafe void SetAllUniforms()
|
||||
{
|
||||
// Console.WriteLine(Projection * ViewBase);
|
||||
OpenGLFunction.CurrentGL.SetUniformValue(convertedUniform, Projection * View);
|
||||
}
|
||||
|
||||
public void SetViewDirection(
|
||||
Vec3 position,
|
||||
Vec3 target,
|
||||
@@ -212,13 +173,6 @@ namespace StgSharp.Mathematics.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
ShaderStruct IglConvertable.GetConvertedGLtype()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
~Camera() { }
|
||||
|
||||
#region rotation
|
||||
|
||||
public void Yaw(
|
||||
|
||||
+73
-143
@@ -5,172 +5,102 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
public class Image : IImageProvider
|
||||
/// <summary>
|
||||
/// Owns a tightly packed, two-dimensional managed pixel buffer.
|
||||
/// </summary>
|
||||
/// <typeparam name="TPixel">
|
||||
/// Unmanaged storage layout of one pixel.
|
||||
/// </typeparam>
|
||||
public sealed class Image<TPixel> where TPixel : unmanaged
|
||||
{
|
||||
|
||||
private byte[] _data;
|
||||
private ImageInfo _rawInfo;
|
||||
private int _pixelUpdateCount = 0;
|
||||
private readonly TPixel[] _pixels;
|
||||
|
||||
internal unsafe Image()
|
||||
{
|
||||
_rawInfo = new ImageInfo();
|
||||
}
|
||||
public Image(
|
||||
int width,
|
||||
int height
|
||||
) : this(width, height, new TPixel[GetRequiredPixelCount(width, height)]) { }
|
||||
|
||||
internal Image(
|
||||
ImageInfo information
|
||||
)
|
||||
{
|
||||
_rawInfo = information;
|
||||
_data = [];
|
||||
|
||||
// int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel;
|
||||
}
|
||||
|
||||
public (int width, int height) Size => (_rawInfo.Width, _rawInfo.Height);
|
||||
|
||||
public byte[] PixelBuffer
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((_data.Length == 0) || (_data == null))
|
||||
{
|
||||
GetBytes();
|
||||
return _data!;
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
}
|
||||
|
||||
public ImageChannel Channel => _rawInfo.Channel;
|
||||
public Image(
|
||||
(int width, int height) size
|
||||
) : this(size.width, size.height) { }
|
||||
|
||||
/// <summary>
|
||||
/// Hash code of time pixels updated last time.
|
||||
/// Wraps <paramref name="pixels" /> without copying it.
|
||||
/// </summary>
|
||||
public int PixelUpdateCount
|
||||
{
|
||||
get => _pixelUpdateCount;
|
||||
internal set => _pixelUpdateCount = value;
|
||||
}
|
||||
|
||||
public int ChannelCount => _rawInfo.ChannelCount;
|
||||
|
||||
public int Height
|
||||
{
|
||||
get => _rawInfo.Height;
|
||||
internal set => _rawInfo.Height = value;
|
||||
}
|
||||
|
||||
public int Width
|
||||
{
|
||||
get => _rawInfo.Width;
|
||||
internal set => _rawInfo.Width = value;
|
||||
}
|
||||
|
||||
public int PixelSize => ImageInfo.GetPixelSize(_rawInfo.pixelLayout, _rawInfo.Channel);
|
||||
|
||||
public PixelChannelLayout PixelLayout
|
||||
{
|
||||
get => _rawInfo.pixelLayout;
|
||||
private set => _rawInfo.pixelLayout = value;
|
||||
}
|
||||
|
||||
internal ref byte[] Data => ref _data;
|
||||
|
||||
public void FromBytes(
|
||||
byte[] stream
|
||||
) { }
|
||||
|
||||
public static unsafe Image FromFile(
|
||||
string route,
|
||||
ImageLoader loader
|
||||
public Image(
|
||||
int width,
|
||||
int height,
|
||||
TPixel[] pixels
|
||||
)
|
||||
{
|
||||
Image ret = new Image();
|
||||
fixed (ImageInfo* iptr = &ret._rawInfo) {
|
||||
GraphicFramework.InternalLoadImage(route, iptr, loader);
|
||||
ArgumentNullException.ThrowIfNull(pixels);
|
||||
|
||||
int requiredLength = GetRequiredPixelCount(width, height);
|
||||
if (pixels.Length != requiredLength)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
$"Pixel buffer length must be exactly {requiredLength}, but was {pixels.Length}.",
|
||||
nameof(pixels));
|
||||
}
|
||||
return ret;
|
||||
|
||||
Width = width;
|
||||
Height = height;
|
||||
_pixels = pixels;
|
||||
}
|
||||
|
||||
public static Image FromMemory(
|
||||
(int width, int height) size,
|
||||
ImageChannel channel,
|
||||
byte[] stream
|
||||
public Image(
|
||||
(int width, int height) size,
|
||||
TPixel[] pixels
|
||||
) : this(size.width, size.height, pixels) { }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a writable byte view over the pixel buffer without copying it.
|
||||
/// </summary>
|
||||
public Span<byte> Bytes => MemoryMarshal.AsBytes(_pixels.AsSpan());
|
||||
|
||||
public int ByteLength => Bytes.Length;
|
||||
|
||||
public int Height { get; }
|
||||
|
||||
public int PixelCount => _pixels.Length;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a writable typed view over the pixel buffer without copying it.
|
||||
/// </summary>
|
||||
public Span<TPixel> Pixels => _pixels;
|
||||
|
||||
public ReadOnlySpan<byte> ReadOnlyBytes => MemoryMarshal.AsBytes(_pixels.AsSpan());
|
||||
|
||||
public ReadOnlySpan<TPixel> ReadOnlyPixels => _pixels;
|
||||
|
||||
public (int width, int height) Size => (Width, Height);
|
||||
|
||||
public int Width { get; }
|
||||
|
||||
public static explicit operator Span<byte>(
|
||||
Image<TPixel> image
|
||||
)
|
||||
{
|
||||
ImageInfo _info = new ImageInfo
|
||||
{
|
||||
Height = size.height,
|
||||
Width = size.width,
|
||||
Channel = channel,
|
||||
StreamPtr = IntPtr.Zero
|
||||
};
|
||||
Image ret = new Image(_info);
|
||||
ret.PixelLayout = PixelChannelLayout.Byte;
|
||||
ret._data = stream;
|
||||
return ret;
|
||||
ArgumentNullException.ThrowIfNull(image);
|
||||
return image.Bytes;
|
||||
}
|
||||
|
||||
public static Image FromMemory(
|
||||
(int width, int height) size,
|
||||
ImageChannel channel,
|
||||
PixelChannelLayout layout,
|
||||
byte[] stream
|
||||
private static int GetRequiredPixelCount(
|
||||
int width,
|
||||
int height
|
||||
)
|
||||
{
|
||||
ImageInfo _info = new ImageInfo
|
||||
{
|
||||
Height = size.height,
|
||||
Width = size.width,
|
||||
Channel = channel,
|
||||
StreamPtr = IntPtr.Zero
|
||||
};
|
||||
Image ret = new Image(_info);
|
||||
ret.PixelLayout = layout;
|
||||
ret._data = stream;
|
||||
return ret;
|
||||
}
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(width);
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(height);
|
||||
|
||||
public unsafe byte[] GetBytes()
|
||||
{
|
||||
if (_data.Length == 0)
|
||||
{
|
||||
int size = Width * Height * ImageInfo.GetPixelSize(PixelLayout, Channel);
|
||||
_data = new Span<byte>((byte*)_rawInfo.StreamPtr, size).ToArray();
|
||||
fixed (ImageInfo* pptr = &_rawInfo) {
|
||||
GraphicFramework.InternalUnloadImage(pptr);
|
||||
}
|
||||
_rawInfo.StreamPtr = IntPtr.Zero;
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
|
||||
public Image ProvideImage()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
internal static Image FromMemory(
|
||||
ImageInfo info,
|
||||
byte[] data,
|
||||
int operationCount
|
||||
)
|
||||
{
|
||||
return new Image
|
||||
{
|
||||
_rawInfo = info,
|
||||
_data = data,
|
||||
_pixelUpdateCount = operationCount
|
||||
};
|
||||
return checked(width * height);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="OpenGLFunction.Context"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
private static readonly Dictionary<IntPtr, OpenGLFunction> contextToGLMap = [];
|
||||
private static readonly ThreadLocal<OpenGLFunction> _currentGL = new();
|
||||
private OpenglContext* _context;
|
||||
|
||||
private readonly Lazy<int> _attachmentColorRange;
|
||||
|
||||
private OpenGLFunction()
|
||||
{
|
||||
// textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS;
|
||||
// UnusedTextureImageUint = [];
|
||||
_attachmentColorRange = new Lazy<int>(
|
||||
() => GetMaskInteger(glConst.MAX_COLOR_ATTACHMENTS));
|
||||
}
|
||||
|
||||
public int AttachmentColorRange => _attachmentColorRange.Value;
|
||||
|
||||
public static OpenGLFunction CurrentGL
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
get => _currentGL.Value!;
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal set => _currentGL.Value = value;
|
||||
}
|
||||
|
||||
internal IntPtr ContextHandle => (IntPtr)_context;
|
||||
|
||||
protected ref OpenglContext Context
|
||||
{
|
||||
get
|
||||
{
|
||||
#if DEBUG
|
||||
ArgumentNullException.ThrowIfNull(_context, nameof(_context));
|
||||
#endif
|
||||
return ref (*_context);
|
||||
}
|
||||
}
|
||||
|
||||
internal static OpenGLFunction BuildGlFunctionPackage(
|
||||
IntPtr handle
|
||||
)
|
||||
{
|
||||
if (contextToGLMap.TryGetValue(handle, out OpenGLFunction pack)) {
|
||||
return pack;
|
||||
}
|
||||
pack = new OpenGLFunction
|
||||
{
|
||||
_context = (OpenglContext*)handle
|
||||
};
|
||||
contextToGLMap.Add(handle, pack);
|
||||
return pack;
|
||||
}
|
||||
|
||||
~OpenGLFunction()
|
||||
{
|
||||
_ = contextToGLMap.Remove(ContextHandle);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="OpenGLFunction.Diagnostics"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[Conditional("DEBUG")]
|
||||
public void Assert(
|
||||
bool shouldReportWhenNormal
|
||||
)
|
||||
{
|
||||
uint code = _context->glGetError();
|
||||
if (code != glConst.NO_ERROR) {
|
||||
throw new GlExecutionException(code);
|
||||
}
|
||||
if (shouldReportWhenNormal) {
|
||||
Console.WriteLine("OpenGL runs normally");
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearError()
|
||||
{
|
||||
uint code = 0;
|
||||
for (int i = 0; i < 1024; i++)
|
||||
{
|
||||
code = _context->glGetError();
|
||||
if (code == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Console.WriteLine(code);
|
||||
}
|
||||
foreach (ProcessThread thread in Process.GetCurrentProcess().Threads) {
|
||||
Debugger.Break();
|
||||
}
|
||||
throw new GlErrorOverflowException(1024, code);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void ClearGraphicError()
|
||||
{
|
||||
while (_context->glGetError() != 0) { }
|
||||
}
|
||||
|
||||
public unsafe int GetMaskInteger(
|
||||
uint statusCode
|
||||
)
|
||||
{
|
||||
int ret = 0;
|
||||
_context->glGetIntegerv(statusCode, &ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void WaitAccomplishment()
|
||||
{
|
||||
_context->glFinish();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="OpenGLFunction.Shader"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public GlHandle CreateGraphicProgram()
|
||||
{
|
||||
return CreateProgram();
|
||||
}
|
||||
|
||||
public GlHandle[] CreateProgram(
|
||||
int count
|
||||
)
|
||||
{
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(count);
|
||||
|
||||
GlHandle[] handles = new GlHandle[count];
|
||||
for (int i = 0; i < handles.Length; i++) {
|
||||
handles[i] = CreateProgram();
|
||||
}
|
||||
return handles;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public GlHandle CreateShader(
|
||||
ShaderType type
|
||||
)
|
||||
{
|
||||
GlHandle handle = CreateShader((uint)type);
|
||||
if (handle.Value == 0)
|
||||
{
|
||||
uint error = _context->glGetError();
|
||||
throw new InvalidOperationException($"Failed in creating shader: {error}");
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
public GlHandle[] CreateShaderSet(
|
||||
int count,
|
||||
ShaderType type
|
||||
)
|
||||
{
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(count);
|
||||
|
||||
GlHandle[] handles = new GlHandle[count];
|
||||
for (int i = 0; i < handles.Length; i++) {
|
||||
handles[i] = CreateShader(type);
|
||||
}
|
||||
return handles;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public string GetShaderStatus(
|
||||
GlHandle shader,
|
||||
ShaderStatus status
|
||||
)
|
||||
{
|
||||
return GetShaderStatus(shader, (uint)status);
|
||||
}
|
||||
|
||||
public string GetShaderStatus(
|
||||
GlHandle shader,
|
||||
uint statusName
|
||||
)
|
||||
{
|
||||
int status;
|
||||
_context->glGetShaderiv(shader.Value, statusName, &status);
|
||||
if (status != 0) {
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
int logLength;
|
||||
_context->glGetShaderiv(shader.Value, glConst.INFO_LOG_LENGTH, &logLength);
|
||||
if (logLength <= 1) {
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
byte[] log = new byte[logLength];
|
||||
fixed (byte* logPtr = log)
|
||||
{
|
||||
int written;
|
||||
_context->glGetShaderInfoLog(shader.Value, log.Length, &written, logPtr);
|
||||
return Encoding.UTF8.GetString(log, 0, Math.Clamp(written, 0, log.Length));
|
||||
}
|
||||
}
|
||||
|
||||
public GlHandle GetUniformLocation(
|
||||
GlHandle program,
|
||||
string name
|
||||
)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(name);
|
||||
|
||||
int byteCount = Encoding.UTF8.GetByteCount(name);
|
||||
Span<byte> utf8Name = byteCount < 256
|
||||
? stackalloc byte[byteCount + 1]
|
||||
: new byte[byteCount + 1];
|
||||
int written = Encoding.UTF8.GetBytes(name.AsSpan(), utf8Name);
|
||||
utf8Name[written] = 0;
|
||||
|
||||
int location;
|
||||
fixed (byte* namePtr = utf8Name) {
|
||||
location = _context->glGetUniformLocation(program.Value, namePtr);
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
if (location == -1) {
|
||||
throw new UniformEmptyReferenceException(nameof(program), name);
|
||||
}
|
||||
#endif
|
||||
|
||||
return GlHandle.CreateSigned(location);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public Uniform<T> GetUniform<T>(
|
||||
GlHandle program,
|
||||
string name
|
||||
) where T : unmanaged
|
||||
{
|
||||
return new Uniform<T>(GetUniformLocation(program, name));
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public Uniform<T, U> GetUniform<T, U>(
|
||||
GlHandle program,
|
||||
string name
|
||||
) where T : unmanaged where U : struct
|
||||
{
|
||||
return new Uniform<T, U>(GetUniformLocation(program, name));
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public Uniform<T, U, V> GetUniform<T, U, V>(
|
||||
GlHandle program,
|
||||
string name
|
||||
) where T : unmanaged where U : struct where V : struct
|
||||
{
|
||||
return new Uniform<T, U, V>(GetUniformLocation(program, name));
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public Uniform<T, U, V, W> GetUniform<T, U, V, W>(
|
||||
GlHandle program,
|
||||
string name
|
||||
) where T : unmanaged where U : struct where V : struct where W : struct
|
||||
{
|
||||
return new Uniform<T, U, V, W>(GetUniformLocation(program, name));
|
||||
}
|
||||
|
||||
public void ShaderSource(
|
||||
GlHandle shader,
|
||||
ReadOnlySpan<byte> source
|
||||
)
|
||||
{
|
||||
int length = source.Length;
|
||||
fixed (byte* sourcePtr = source)
|
||||
{
|
||||
byte emptySource = 0;
|
||||
byte* sourceAddress = sourcePtr == null ? &emptySource : sourcePtr;
|
||||
_context->glShaderSource(shader.Value, 1, &sourceAddress, &length);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShaderSource(
|
||||
GlHandle shader,
|
||||
string source
|
||||
)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(source);
|
||||
|
||||
int byteCount = Encoding.UTF8.GetByteCount(source);
|
||||
Span<byte> utf8Source = byteCount < 1024
|
||||
? stackalloc byte[byteCount]
|
||||
: new byte[byteCount];
|
||||
int written = Encoding.UTF8.GetBytes(source.AsSpan(), utf8Source);
|
||||
ShaderSource(shader, utf8Source[..written]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -5,72 +5,17 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
|
||||
using StgSharp.Mathematics;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
/// <summary>
|
||||
/// A collection of handle to Element BufferHandle Object in OpenglFunc. Each <see ///
|
||||
/// langword="uint" /> value indexed from instance of this class this is the only handle to
|
||||
/// one Element BufferHandle Object.
|
||||
/// </summary>
|
||||
public sealed unsafe class ElementBuffer : GlBufferObjectBase
|
||||
/// <summary>A set of OpenGL element-buffer handles.</summary>
|
||||
public sealed record class ElementBuffer(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
internal ElementBuffer(
|
||||
int n,
|
||||
glRender binding
|
||||
)
|
||||
: base(binding)
|
||||
{
|
||||
_bufferHandle = GL.GenBuffers(n);
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
public sealed override void Bind(
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]);
|
||||
}
|
||||
|
||||
public void SetValue<T>(
|
||||
int index,
|
||||
T[] bufferArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferData<T>(BufferType.ElementArrayBuffer, bufferArray, usage);
|
||||
}
|
||||
|
||||
public void SetValue<T>(
|
||||
int index,
|
||||
ReadOnlySpan<T> bufferSpan,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferData<T>(BufferType.ElementArrayBuffer, bufferSpan, usage);
|
||||
}
|
||||
|
||||
protected sealed override void Dispose(
|
||||
bool disposing
|
||||
)
|
||||
{
|
||||
if (disposing) {
|
||||
GL.DeleteBuffers(_bufferHandle);
|
||||
}
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,22 +5,13 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
#pragma warning disable CA1008
|
||||
#pragma warning disable CA1028
|
||||
#pragma warning disable CA1008
|
||||
#pragma warning disable CA1028
|
||||
public enum FrameBufferTarget : uint
|
||||
#pragma warning restore CA1028
|
||||
#pragma warning restore CA1008
|
||||
#pragma warning restore CA1028
|
||||
#pragma warning restore CA1008
|
||||
{
|
||||
|
||||
Read = glConst.READ_FRAMEBUFFER,
|
||||
@@ -29,67 +20,15 @@ namespace StgSharp.Graphics.OpenGL
|
||||
|
||||
}
|
||||
|
||||
public sealed class FrameBuffer : GlBufferObjectBase
|
||||
/// <summary>A set of OpenGL framebuffer handles.</summary>
|
||||
public sealed record class FrameBuffer(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
internal unsafe FrameBuffer(
|
||||
int count,
|
||||
glRender binding
|
||||
)
|
||||
: base(binding)
|
||||
{
|
||||
_bufferHandle = new GlHandle[count];
|
||||
GL.GenFrameBuffers(_bufferHandle);
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
/// <summary>
|
||||
/// Bind the frame BufferHandle object with _label frame BufferHandle to the frame
|
||||
/// BufferHandle target specified by target. <see langword="FrameBufferTarget.All" /> will
|
||||
/// be set as default target.
|
||||
/// </summary>
|
||||
/// <param _label="index">
|
||||
/// Index of object to be binded in handle set
|
||||
/// </param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public override unsafe void Bind(
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindFrameBuffer(FrameBufferTarget.All, _bufferHandle[index]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bind the frame BufferHandle object with _label frame BufferHandle to the frame
|
||||
/// BufferHandle target specified by target. Target of this frame BufferHandle should be
|
||||
/// set manually.
|
||||
/// </summary>
|
||||
/// <param _label="target">
|
||||
/// The frame BufferHandle target of the binding operation.
|
||||
/// </param>
|
||||
/// <param _label="index">
|
||||
/// Index of object to be binded in handle set
|
||||
/// </param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void Bind(
|
||||
FrameBufferTarget target,
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindFrameBuffer(target, _bufferHandle[index]);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void BindNull()
|
||||
{
|
||||
OpenGLFunction.CurrentGL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero);
|
||||
}
|
||||
|
||||
protected override void Dispose(
|
||||
bool disposing
|
||||
)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,53 +5,17 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Principal;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public sealed class RenderBuffer : GlBufferObjectBase
|
||||
/// <summary>A set of OpenGL renderbuffer handles.</summary>
|
||||
public sealed record class RenderBuffer(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
public RenderBuffer(
|
||||
int count,
|
||||
glRender binding
|
||||
)
|
||||
: base(binding)
|
||||
{
|
||||
_bufferHandle = GL.GenRenderBuffer(count);
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
public override void Bind(
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindRenderBuffer(this[index]);
|
||||
}
|
||||
|
||||
public void Store(
|
||||
RenderBufferInternalFormat format,
|
||||
(int width, int height) size
|
||||
)
|
||||
{
|
||||
if ((size.width > binding.Width) || (size.height > binding.Height)) {
|
||||
World.LogWarning("FrameBuffer is larger than current canvas binding");
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose(
|
||||
bool disposing
|
||||
)
|
||||
{
|
||||
foreach (GlHandle item in _bufferHandle)
|
||||
{
|
||||
Console.WriteLine("removing a render buffer");
|
||||
GL.DeleteRenderBuffer(item);
|
||||
}
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,235 +5,27 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.HighPerformance.ProcessorAbstraction;
|
||||
using StgSharp.Mathematics;
|
||||
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public sealed unsafe class TextureGL
|
||||
/// <summary>A set of OpenGL texture handles.</summary>
|
||||
public sealed record class TextureGL(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
private int currentEditingTextureIndex;
|
||||
public int Count => Handles.Length;
|
||||
|
||||
private OpenGLFunction _gl;
|
||||
internal GlHandle[] _textureHandle;
|
||||
|
||||
internal TextureGL(
|
||||
int count,
|
||||
glRender binding
|
||||
)
|
||||
{
|
||||
// sourceList = new Image[count];
|
||||
this._gl = binding.GL;
|
||||
_textureHandle = _gl.GenTextures(count);
|
||||
}
|
||||
|
||||
public GlHandle this[
|
||||
int index
|
||||
]
|
||||
{
|
||||
get => _textureHandle[index];
|
||||
}
|
||||
|
||||
public int Count => _textureHandle.Length;
|
||||
|
||||
// internal Image[] sourceList;
|
||||
|
||||
public int IndexOfCurrentTexture => currentEditingTextureIndex;
|
||||
|
||||
internal OpenGLFunction GL => _gl;
|
||||
|
||||
public void ActivateAs(
|
||||
TextureUnit unit
|
||||
)
|
||||
{
|
||||
_gl.ActiveTextureUnit((uint)unit);
|
||||
}
|
||||
|
||||
public void Bind2D(
|
||||
int index
|
||||
)
|
||||
{
|
||||
currentEditingTextureIndex = index;
|
||||
_gl.BindTexture(glConst.TEXTURE_2D, _textureHandle[index]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load an <see cref="Image" /> to certain texture.
|
||||
/// </summary>
|
||||
/// <param _label="index">
|
||||
///
|
||||
/// </param>
|
||||
/// <param _label="i">
|
||||
///
|
||||
/// </param>
|
||||
public unsafe void LoadTexture(
|
||||
int index,
|
||||
Image i
|
||||
)
|
||||
{
|
||||
byte[] handle = i.PixelBuffer;
|
||||
_gl.TextureImage2d(Texture2DTarget.Texture2D, 0, i.Channel, i.Width, i.Height,
|
||||
i.Channel, i.PixelLayout, pixels:handle);
|
||||
_gl.GenerateMipmap(Texture2DTarget.Texture2D);
|
||||
}
|
||||
|
||||
#region texture setting
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Set2dFilterProperty(
|
||||
int index,
|
||||
TextureFilter onMinify,
|
||||
TextureFilter onMagnify
|
||||
)
|
||||
{
|
||||
#if DEBUG
|
||||
if (index != currentEditingTextureIndex)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Texture to be editted is not the one being activated.");
|
||||
}
|
||||
#endif
|
||||
_gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, (int)onMinify);
|
||||
_gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER,
|
||||
(int)onMagnify);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Set2dWrapProperty(
|
||||
int index,
|
||||
TextureWrap onHorizontial,
|
||||
TextureWrap onVertical
|
||||
)
|
||||
{
|
||||
#if DEBUG
|
||||
if (index != currentEditingTextureIndex)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Texture to be editted is not the one being activated.");
|
||||
}
|
||||
#endif
|
||||
_gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S,
|
||||
(int)onHorizontial);
|
||||
_gl.TextureParameter(glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, (int)onVertical);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Set2dProperty(
|
||||
int index,
|
||||
TextureProperty property
|
||||
)
|
||||
{
|
||||
Set2dFilterProperty(index, property.FilterOnMinify, property.FilterOnMagnify);
|
||||
Set2dWrapProperty(index, property.WrapOnHorizontial, property.WrapOnVertical);
|
||||
}
|
||||
|
||||
#endregion texture setting
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct TextureProperty
|
||||
{
|
||||
|
||||
[FieldOffset(0)] private M128 mask;
|
||||
[FieldOffset(0)] private TextureFilter mag;
|
||||
[FieldOffset(4)] private TextureFilter min;
|
||||
|
||||
[FieldOffset(8)] private TextureWrap hori;
|
||||
[FieldOffset(12)] private TextureWrap vert;
|
||||
|
||||
public TextureProperty(
|
||||
TextureFilter onMagnify,
|
||||
TextureFilter onMinify,
|
||||
TextureWrap onHorizontal,
|
||||
TextureWrap onVertical
|
||||
)
|
||||
{
|
||||
FilterOnMagnify = onMagnify;
|
||||
FilterOnMinify = onMinify;
|
||||
WrapOnHorizontial = onHorizontal;
|
||||
WrapOnVertical = onVertical;
|
||||
}
|
||||
|
||||
public TextureFilter FilterOnMagnify
|
||||
{
|
||||
get => mag;
|
||||
set => mag = value;
|
||||
}
|
||||
|
||||
public TextureFilter FilterOnMinify
|
||||
{
|
||||
get => min;
|
||||
set => min = value;
|
||||
}
|
||||
|
||||
public TextureWrap WrapOnHorizontial
|
||||
{
|
||||
get => hori;
|
||||
set => hori = value;
|
||||
}
|
||||
|
||||
public TextureWrap WrapOnVertical
|
||||
{
|
||||
get => vert;
|
||||
set => vert = value;
|
||||
}
|
||||
|
||||
public override bool Equals(
|
||||
[NotNullWhen(true)] object obj
|
||||
)
|
||||
{
|
||||
return base.Equals(obj);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial,
|
||||
WrapOnVertical);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}";
|
||||
}
|
||||
|
||||
public static bool operator !=(
|
||||
TextureProperty left,
|
||||
TextureProperty right
|
||||
)
|
||||
{
|
||||
return left.mask != right.mask;
|
||||
}
|
||||
|
||||
public static bool operator ==(
|
||||
TextureProperty left,
|
||||
TextureProperty right
|
||||
)
|
||||
{
|
||||
return left.mask == right.mask;
|
||||
}
|
||||
|
||||
public static implicit operator TextureProperty(
|
||||
(
|
||||
TextureFilter onMagnify, TextureFilter onMinify,
|
||||
TextureWrap onHorizontial, TextureWrap onVertical
|
||||
) propertyValueTuple
|
||||
)
|
||||
{
|
||||
return new TextureProperty(propertyValueTuple.onMagnify, propertyValueTuple.onMinify,
|
||||
propertyValueTuple.onHorizontial,
|
||||
propertyValueTuple.onVertical);
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
|
||||
public readonly record struct TextureProperty(
|
||||
TextureFilter FilterOnMagnify,
|
||||
TextureFilter FilterOnMinify,
|
||||
TextureWrap WrapOnHorizontal,
|
||||
TextureWrap WrapOnVertical
|
||||
);
|
||||
|
||||
#pragma warning disable CA1008
|
||||
public enum TextureFilter
|
||||
#pragma warning restore CA1008
|
||||
@@ -272,9 +64,9 @@ namespace StgSharp.Graphics.OpenGL
|
||||
|
||||
}
|
||||
|
||||
#pragma warning disable CA1008
|
||||
#pragma warning disable CA1008
|
||||
public enum TextureWrap
|
||||
#pragma warning restore CA1008
|
||||
#pragma warning restore CA1008
|
||||
{
|
||||
|
||||
Repeat = glConst.REPEAT,
|
||||
|
||||
@@ -5,62 +5,17 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public sealed unsafe class VertexArray : GlBufferObjectBase
|
||||
/// <summary>A set of OpenGL vertex-array handles.</summary>
|
||||
public sealed record class VertexArray(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
internal VertexArray(
|
||||
int n,
|
||||
glRender binding
|
||||
)
|
||||
: base(binding)
|
||||
{
|
||||
_bufferHandle = GL.GenVertexArrays(n);
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public sealed override void Bind(
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindVertexArray(_bufferHandle[index]);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void BindNull()
|
||||
{
|
||||
OpenGLFunction.CurrentGL.BindVertexArray(GlHandle.Zero);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetVertexAttribute(
|
||||
uint attributeIndex,
|
||||
int vertexLength,
|
||||
TypeCode dataType,
|
||||
bool isNomalized,
|
||||
int stride,
|
||||
int pointer
|
||||
)
|
||||
{
|
||||
GL.SetVertexAttribute(attributeIndex, vertexLength, dataType, isNomalized, stride,
|
||||
pointer);
|
||||
}
|
||||
|
||||
protected sealed override void Dispose(
|
||||
bool disposing
|
||||
)
|
||||
{
|
||||
if (disposing) {
|
||||
GL.DeleteVertexArrays(_bufferHandle);
|
||||
}
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,157 +5,17 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Mathematics;
|
||||
using StgSharp.Mathematics.Numeric;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Security;
|
||||
using System.Numerics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public sealed unsafe class VertexBuffer : GlBufferObjectBase
|
||||
/// <summary>A set of OpenGL vertex-buffer handles.</summary>
|
||||
public sealed record class VertexBuffer(
|
||||
GlHandle[] Handles
|
||||
)
|
||||
{
|
||||
|
||||
internal VertexBuffer(
|
||||
int n,
|
||||
glRender binding
|
||||
)
|
||||
: base(binding)
|
||||
{
|
||||
_bufferHandle = GL.GenBuffers(n);
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
public sealed override void Bind(
|
||||
int index
|
||||
)
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Unbind()
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, GlHandle.Zero);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set _data to current vertex BufferHandle object
|
||||
/// </summary>
|
||||
/// <typeparam _label="TItem">
|
||||
/// Type of bufferData
|
||||
/// </typeparam>
|
||||
/// <param _label="index">
|
||||
/// Index to find certain VBO in this instance
|
||||
/// </param>
|
||||
/// <param _label="bufferArray">
|
||||
/// Data to write in
|
||||
/// </param>
|
||||
/// <param _label="usage">
|
||||
/// How OpenGL use these _data, defined by <see cref="BufferUsage" />
|
||||
/// </param>
|
||||
public void WriteScalerData<T>(
|
||||
int index,
|
||||
T[] bufferArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferData(BufferType.ArrayBuffer, bufferArray, usage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set _data to current vertex BufferHandle object
|
||||
/// </summary>
|
||||
/// <typeparam _label="TItem">
|
||||
/// Type of bufferData
|
||||
/// </typeparam>
|
||||
/// <param _label="index">
|
||||
/// Index to find certain VBO in this instance
|
||||
/// </param>
|
||||
/// <param _label="scalerSpan">
|
||||
/// A <see cref="Span{T}" /> of _data to write in
|
||||
/// </param>
|
||||
/// <param _label="usage">
|
||||
/// How OpenGL use these _data, defined by <see cref="BufferUsage" />
|
||||
/// </param>
|
||||
public void WriteScalerData<T>(
|
||||
int index,
|
||||
ReadOnlySpan<T> scalerSpan,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged,INumber<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferData(BufferType.ArrayBuffer, scalerSpan, usage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set data to current vertex BufferHandle object
|
||||
/// </summary>
|
||||
/// <typeparam _label="TItem">
|
||||
/// Type of bufferData
|
||||
/// </typeparam>
|
||||
/// <param _label="index">
|
||||
/// Index to find certain VBO in this instance
|
||||
/// </param>
|
||||
/// <param _label="vectorSpan">
|
||||
/// A <see cref="Span{T}" /> of data to write in
|
||||
/// </param>
|
||||
/// <param _label="usage">
|
||||
/// How OpenGL use these data, defined by <see cref="BufferUsage" />
|
||||
/// </param>
|
||||
public void WriteVectorData<T>(
|
||||
int index,
|
||||
ReadOnlySpan<T> vectorSpan,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, IUnmanagedVector<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorSpan, usage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set _data to current vertex BufferHandle object
|
||||
/// </summary>
|
||||
/// <typeparam _label="TItem">
|
||||
/// Type of bufferData
|
||||
/// </typeparam>
|
||||
/// <param _label="index">
|
||||
/// Index to find certain VBO in this instance
|
||||
/// </param>
|
||||
/// <param _label="vectorArray">
|
||||
/// A array of _data to write in
|
||||
/// </param>
|
||||
/// <param _label="usage">
|
||||
/// How OpenGL use these _data, defined by <see cref="BufferUsage" />
|
||||
/// </param>
|
||||
public void WriteVectorData<T>(
|
||||
int index,
|
||||
T[] vectorArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, IUnmanagedVector<T>
|
||||
{
|
||||
GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]);
|
||||
GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorArray, usage);
|
||||
}
|
||||
|
||||
protected sealed override void Dispose(
|
||||
bool disposing
|
||||
)
|
||||
{
|
||||
if (disposing) {
|
||||
GL.DeleteBuffers(_bufferHandle);
|
||||
}
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,287 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 3.3 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindFragDataLocationIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindFragmentDataLocationIndexed(GlHandle program, uint colorNumber, uint index, byte* name)
|
||||
{
|
||||
__context->glBindFragDataLocationIndexed(program.Value, colorNumber, index, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLint glGetFragDataIndex(GLuint program, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetFragDataIndex">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetFragmentDataIndex(GlHandle program, byte* name)
|
||||
{
|
||||
return __context->glGetFragDataIndex(program.Value, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGenSamplers(GLsizei count, GLuint *samplers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGenSamplers">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GenSamplers(Span<GlHandle> samplers)
|
||||
{
|
||||
fixed (GlHandle* __samplers = samplers)
|
||||
{
|
||||
__context->glGenSamplers(samplers.Length, (uint*)__samplers);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDeleteSamplers(GLsizei count, const GLuint *samplers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDeleteSamplers">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DeleteSamplers(ReadOnlySpan<GlHandle> samplers)
|
||||
{
|
||||
fixed (GlHandle* __samplers = samplers)
|
||||
{
|
||||
__context->glDeleteSamplers(samplers.Length, (uint*)__samplers);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLboolean glIsSampler(GLuint sampler);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glIsSampler">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public byte IsSampler(GlHandle sampler)
|
||||
{
|
||||
return __context->glIsSampler(sampler.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindSampler(GLuint unit, GLuint sampler);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindSampler">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindSampler(uint unit, GlHandle sampler)
|
||||
{
|
||||
__context->glBindSampler(unit, sampler.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameter(GlHandle sampler, uint pName, int param)
|
||||
{
|
||||
__context->glSamplerParameteri(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameter(GlHandle sampler, uint pName, int* param)
|
||||
{
|
||||
__context->glSamplerParameteriv(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameter(GlHandle sampler, uint pName, float param)
|
||||
{
|
||||
__context->glSamplerParameterf(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameter(GlHandle sampler, uint pName, float* param)
|
||||
{
|
||||
__context->glSamplerParameterfv(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameterInteger(GlHandle sampler, uint pName, int* param)
|
||||
{
|
||||
__context->glSamplerParameterIiv(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SamplerParameterInteger(GlHandle sampler, uint pName, uint* param)
|
||||
{
|
||||
__context->glSamplerParameterIuiv(sampler.Value, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetSamplerParameter(GlHandle sampler, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetSamplerParameteriv(sampler.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetSamplerParameterInteger(GlHandle sampler, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetSamplerParameterIiv(sampler.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetSamplerParameter(GlHandle sampler, uint pName, float* @params)
|
||||
{
|
||||
__context->glGetSamplerParameterfv(sampler.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSamplerParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetSamplerParameterInteger(GlHandle sampler, uint pName, uint* @params)
|
||||
{
|
||||
__context->glGetSamplerParameterIuiv(sampler.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glQueryCounter(GLuint id, GLenum target);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glQueryCounter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void QueryCounter(GlHandle id, uint target)
|
||||
{
|
||||
__context->glQueryCounter(id.Value, target);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetQueryObject">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetQueryObject(GlHandle id, uint pName, long* @params)
|
||||
{
|
||||
__context->glGetQueryObjecti64v(id.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetQueryObject">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetQueryObject(GlHandle id, uint pName, ulong* @params)
|
||||
{
|
||||
__context->glGetQueryObjectui64v(id.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribDivisor(GLuint index, GLuint divisor);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribDivisor">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDivisor(uint index, uint divisor)
|
||||
{
|
||||
__context->glVertexAttribDivisor(index, divisor);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributePacked1(uint index, uint type, byte normalized, uint value)
|
||||
{
|
||||
__context->glVertexAttribP1ui(index, type, normalized, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributePacked2(uint index, uint type, byte normalized, uint value)
|
||||
{
|
||||
__context->glVertexAttribP2ui(index, type, normalized, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributePacked3(uint index, uint type, byte normalized, uint value)
|
||||
{
|
||||
__context->glVertexAttribP3ui(index, type, normalized, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributePacked4(uint index, uint type, byte normalized, uint value)
|
||||
{
|
||||
__context->glVertexAttribP4ui(index, type, normalized, value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,447 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.0 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMinSampleShading(GLfloat value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMinSampleShading">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MinSampleShading(float value)
|
||||
{
|
||||
__context->glMinSampleShading(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBlendEquationi(GLuint buf, GLenum mode);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBlendEquationi">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendEquationi(uint buf, uint mode)
|
||||
{
|
||||
__context->glBlendEquationi(buf, mode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBlendEquationSeparatei">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendEquationSeparatei(uint buf, uint modeRGB, uint modeAlpha)
|
||||
{
|
||||
__context->glBlendEquationSeparatei(buf, modeRGB, modeAlpha);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBlendFunci(GLuint buf, GLenum src, GLenum dst);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBlendFunci">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendFunci(uint buf, uint src, uint dst)
|
||||
{
|
||||
__context->glBlendFunci(buf, src, dst);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBlendFuncSeparatei">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendFuncSeparatei(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha)
|
||||
{
|
||||
__context->glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawArraysIndirect(GLenum mode, const void *indirect);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawArraysIndirect">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawArraysIndirect(uint mode, void* indirect)
|
||||
{
|
||||
__context->glDrawArraysIndirect(mode, indirect);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawElementsIndirect">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsIndirect(uint mode, uint type, void* indirect)
|
||||
{
|
||||
__context->glDrawElementsIndirect(mode, type, indirect);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform1d(GLint location, GLdouble x);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, double x)
|
||||
{
|
||||
__context->glUniform1d(location, x);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform2d(GLint location, GLdouble x, GLdouble y);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, double x, double y)
|
||||
{
|
||||
__context->glUniform2d(location, x, y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform2d(GLint location, GLdouble x, GLdouble y);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, Vec2<double> value)
|
||||
{
|
||||
__context->glUniform2d(location, value.X, value.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, double x, double y, double z)
|
||||
{
|
||||
__context->glUniform3d(location, x, y, z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, Vec3<double> value)
|
||||
{
|
||||
__context->glUniform3d(location, value.X, value.Y, value.Z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, double x, double y, double z, double w)
|
||||
{
|
||||
__context->glUniform4d(location, x, y, z, w);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, Vec4<double> value)
|
||||
{
|
||||
__context->glUniform4d(location, value.X, value.Y, value.Z, value.W);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform1dv(GLint location, GLsizei count, const GLdouble *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, ReadOnlySpan<double> values)
|
||||
{
|
||||
fixed (double* __value = values)
|
||||
{
|
||||
__context->glUniform1dv(location, values.Length, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniform4dv(GLint location, GLsizei count, const GLdouble *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform(int location, ReadOnlySpan<Vec4<double>> values)
|
||||
{
|
||||
fixed (Vec4<double>* __vector = values)
|
||||
{
|
||||
__context->glUniform4dv(location, values.Length, (double*)__vector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetUniformdv(GLuint program, GLint location, GLdouble *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetUniform(GlHandle program, int location, double* @params)
|
||||
{
|
||||
__context->glGetUniformdv(program.Value, location, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSubroutineUniformLocation">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetSubroutineUniformLocation(GlHandle program, uint shadertype, byte* name)
|
||||
{
|
||||
return __context->glGetSubroutineUniformLocation(program.Value, shadertype, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetSubroutineIndex">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetSubroutineIndex(GlHandle program, uint shadertype, byte* name)
|
||||
{
|
||||
return __context->glGetSubroutineIndex(program.Value, shadertype, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetActiveSubroutineUniformiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineUniformiv(GlHandle program, uint shadertype, uint index, uint pName, int* values)
|
||||
{
|
||||
__context->glGetActiveSubroutineUniformiv(program.Value, shadertype, index, pName, values);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetActiveSubroutineUniformName">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineUniformName(GlHandle program, uint shadertype, uint index, int bufSize, int* length, byte* name)
|
||||
{
|
||||
__context->glGetActiveSubroutineUniformName(program.Value, shadertype, index, bufSize, length, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetActiveSubroutineName">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineName(GlHandle program, uint shadertype, uint index, int bufSize, int* length, byte* name)
|
||||
{
|
||||
__context->glGetActiveSubroutineName(program.Value, shadertype, index, bufSize, length, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUniformSubroutinesuiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformSubroutinesuiv(uint shadertype, int count, uint* indices)
|
||||
{
|
||||
__context->glUniformSubroutinesuiv(shadertype, count, indices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetUniformSubroutineuiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetUniformSubroutineuiv(uint shadertype, int location, uint* @params)
|
||||
{
|
||||
__context->glGetUniformSubroutineuiv(shadertype, location, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramStageiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramStageiv(GlHandle program, uint shadertype, uint pName, int* values)
|
||||
{
|
||||
__context->glGetProgramStageiv(program.Value, shadertype, pName, values);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPatchParameteri(GLenum pname, GLint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPatchParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PatchParameter(uint pName, int value)
|
||||
{
|
||||
__context->glPatchParameteri(pName, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPatchParameterfv(GLenum pname, const GLfloat *values);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPatchParameter">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PatchParameter(uint pName, float* values)
|
||||
{
|
||||
__context->glPatchParameterfv(pName, values);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindTransformFeedback(GLenum target, GLuint id);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindTransformFeedback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindTransformFeedback(uint target, GlHandle id)
|
||||
{
|
||||
__context->glBindTransformFeedback(target, id.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDeleteTransformFeedbacks">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DeleteTransformFeedbacks(ReadOnlySpan<GlHandle> ids)
|
||||
{
|
||||
fixed (GlHandle* __ids = ids)
|
||||
{
|
||||
__context->glDeleteTransformFeedbacks(ids.Length, (uint*)__ids);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGenTransformFeedbacks(GLsizei n, GLuint *ids);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGenTransformFeedbacks">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GenTransformFeedbacks(Span<GlHandle> ids)
|
||||
{
|
||||
fixed (GlHandle* __ids = ids)
|
||||
{
|
||||
__context->glGenTransformFeedbacks(ids.Length, (uint*)__ids);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLboolean glIsTransformFeedback(GLuint id);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glIsTransformFeedback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public byte IsTransformFeedback(GlHandle id)
|
||||
{
|
||||
return __context->glIsTransformFeedback(id.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPauseTransformFeedback();</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPauseTransformFeedback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PauseTransformFeedback()
|
||||
{
|
||||
__context->glPauseTransformFeedback();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glResumeTransformFeedback();</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glResumeTransformFeedback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ResumeTransformFeedback()
|
||||
{
|
||||
__context->glResumeTransformFeedback();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawTransformFeedback(GLenum mode, GLuint id);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawTransformFeedback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedback(uint mode, GlHandle id)
|
||||
{
|
||||
__context->glDrawTransformFeedback(mode, id.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawTransformFeedbackStream">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackStream(uint mode, GlHandle id, uint stream)
|
||||
{
|
||||
__context->glDrawTransformFeedbackStream(mode, id.Value, stream);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBeginQueryIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BeginQueryIndexed(uint target, uint index, GlHandle id)
|
||||
{
|
||||
__context->glBeginQueryIndexed(target, index, id.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glEndQueryIndexed(GLenum target, GLuint index);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glEndQueryIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void EndQueryIndexed(uint target, uint index)
|
||||
{
|
||||
__context->glEndQueryIndexed(target, index);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetQueryIndexediv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetQueryIndexediv(uint target, uint index, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetQueryIndexediv(target, index, pName, @params);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,851 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.1 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glReleaseShaderCompiler();</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glReleaseShaderCompiler">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ReleaseShaderCompiler()
|
||||
{
|
||||
__context->glReleaseShaderCompiler();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glShaderBinary">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ShaderBinary(ReadOnlySpan<GlHandle> shaders, uint binaryFormat, void* binary, int length)
|
||||
{
|
||||
fixed (GlHandle* __shaders = shaders)
|
||||
{
|
||||
__context->glShaderBinary(shaders.Length, (uint*)__shaders, binaryFormat, binary, length);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetShaderPrecisionFormat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetShaderPrecisionFormat(uint shadertype, uint precisiontype, int* range, int* precision)
|
||||
{
|
||||
__context->glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDepthRangef(GLfloat n, GLfloat f);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDepthRangef">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DepthRangef(float n, float f)
|
||||
{
|
||||
__context->glDepthRangef(n, f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glClearDepthf(GLfloat d);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glClearDepthf">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearDepthf(float d)
|
||||
{
|
||||
__context->glClearDepthf(d);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramBinary">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramBinary(GlHandle program, int bufSize, int* length, uint* binaryFormat, void* binary)
|
||||
{
|
||||
__context->glGetProgramBinary(program.Value, bufSize, length, binaryFormat, binary);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramBinary">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramBinary(GlHandle program, uint binaryFormat, void* binary, int length)
|
||||
{
|
||||
__context->glProgramBinary(program.Value, binaryFormat, binary, length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramParameteri(GLuint program, GLenum pname, GLint value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramParameteri">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramParameteri(GlHandle program, uint pName, int value)
|
||||
{
|
||||
__context->glProgramParameteri(program.Value, pName, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glUseProgramStages">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UseProgramStages(GlHandle pipeline, uint stages, GlHandle program)
|
||||
{
|
||||
__context->glUseProgramStages(pipeline.Value, stages, program.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glActiveShaderProgram(GLuint pipeline, GLuint program);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glActiveShaderProgram">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ActiveShaderProgram(GlHandle pipeline, GlHandle program)
|
||||
{
|
||||
__context->glActiveShaderProgram(pipeline.Value, program.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glCreateShaderProgramv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public GlHandle CreateShaderProgramv(uint type, int count, byte** strings)
|
||||
{
|
||||
return GlHandle.Create(__context->glCreateShaderProgramv(type, count, strings));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindProgramPipeline(GLuint pipeline);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindProgramPipeline">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindProgramPipeline(GlHandle pipeline)
|
||||
{
|
||||
__context->glBindProgramPipeline(pipeline.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDeleteProgramPipelines">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DeleteProgramPipelines(ReadOnlySpan<GlHandle> pipelines)
|
||||
{
|
||||
fixed (GlHandle* __pipelines = pipelines)
|
||||
{
|
||||
__context->glDeleteProgramPipelines(pipelines.Length, (uint*)__pipelines);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGenProgramPipelines(GLsizei n, GLuint *pipelines);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGenProgramPipelines">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GenProgramPipelines(Span<GlHandle> pipelines)
|
||||
{
|
||||
fixed (GlHandle* __pipelines = pipelines)
|
||||
{
|
||||
__context->glGenProgramPipelines(pipelines.Length, (uint*)__pipelines);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLboolean glIsProgramPipeline(GLuint pipeline);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glIsProgramPipeline">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public byte IsProgramPipeline(GlHandle pipeline)
|
||||
{
|
||||
return __context->glIsProgramPipeline(pipeline.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramPipelineiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramPipelineiv(GlHandle pipeline, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetProgramPipelineiv(pipeline.Value, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1i(GLuint program, GLint location, GLint v0);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, int v0)
|
||||
{
|
||||
__context->glProgramUniform1i(program.Value, location, v0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<int> values)
|
||||
{
|
||||
fixed (int* __value = values)
|
||||
{
|
||||
__context->glProgramUniform1iv(program.Value, location, values.Length, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, float v0)
|
||||
{
|
||||
__context->glProgramUniform1f(program.Value, location, v0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<float> values)
|
||||
{
|
||||
fixed (float* __value = values)
|
||||
{
|
||||
__context->glProgramUniform1fv(program.Value, location, values.Length, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1d(GLuint program, GLint location, GLdouble v0);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, double v0)
|
||||
{
|
||||
__context->glProgramUniform1d(program.Value, location, v0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<double> values)
|
||||
{
|
||||
fixed (double* __value = values)
|
||||
{
|
||||
__context->glProgramUniform1dv(program.Value, location, values.Length, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, uint v0)
|
||||
{
|
||||
__context->glProgramUniform1ui(program.Value, location, v0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<uint> values)
|
||||
{
|
||||
fixed (uint* __value = values)
|
||||
{
|
||||
__context->glProgramUniform1uiv(program.Value, location, values.Length, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, int v0, int v1)
|
||||
{
|
||||
__context->glProgramUniform2i(program.Value, location, v0, v1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec2<int> value)
|
||||
{
|
||||
__context->glProgramUniform2i(program.Value, location, value.X, value.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, float v0, float v1)
|
||||
{
|
||||
__context->glProgramUniform2f(program.Value, location, v0, v1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec2<float> value)
|
||||
{
|
||||
__context->glProgramUniform2f(program.Value, location, value.X, value.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, double v0, double v1)
|
||||
{
|
||||
__context->glProgramUniform2d(program.Value, location, v0, v1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec2<double> value)
|
||||
{
|
||||
__context->glProgramUniform2d(program.Value, location, value.X, value.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, uint v0, uint v1)
|
||||
{
|
||||
__context->glProgramUniform2ui(program.Value, location, v0, v1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec2<uint> value)
|
||||
{
|
||||
__context->glProgramUniform2ui(program.Value, location, value.X, value.Y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, int v0, int v1, int v2)
|
||||
{
|
||||
__context->glProgramUniform3i(program.Value, location, v0, v1, v2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec3<int> value)
|
||||
{
|
||||
__context->glProgramUniform3i(program.Value, location, value.X, value.Y, value.Z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, float v0, float v1, float v2)
|
||||
{
|
||||
__context->glProgramUniform3f(program.Value, location, v0, v1, v2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec3<float> value)
|
||||
{
|
||||
__context->glProgramUniform3f(program.Value, location, value.X, value.Y, value.Z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, double v0, double v1, double v2)
|
||||
{
|
||||
__context->glProgramUniform3d(program.Value, location, v0, v1, v2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec3<double> value)
|
||||
{
|
||||
__context->glProgramUniform3d(program.Value, location, value.X, value.Y, value.Z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, uint v0, uint v1, uint v2)
|
||||
{
|
||||
__context->glProgramUniform3ui(program.Value, location, v0, v1, v2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec3<uint> value)
|
||||
{
|
||||
__context->glProgramUniform3ui(program.Value, location, value.X, value.Y, value.Z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, int v0, int v1, int v2, int v3)
|
||||
{
|
||||
__context->glProgramUniform4i(program.Value, location, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec4<int> value)
|
||||
{
|
||||
__context->glProgramUniform4i(program.Value, location, value.X, value.Y, value.Z, value.W);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<Vec4<int>> values)
|
||||
{
|
||||
fixed (Vec4<int>* __vector = values)
|
||||
{
|
||||
__context->glProgramUniform4iv(program.Value, location, values.Length, (int*)__vector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, float v0, float v1, float v2, float v3)
|
||||
{
|
||||
__context->glProgramUniform4f(program.Value, location, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec4<float> value)
|
||||
{
|
||||
__context->glProgramUniform4f(program.Value, location, value.X, value.Y, value.Z, value.W);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<Vec4<float>> values)
|
||||
{
|
||||
fixed (Vec4<float>* __vector = values)
|
||||
{
|
||||
__context->glProgramUniform4fv(program.Value, location, values.Length, (float*)__vector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, double v0, double v1, double v2, double v3)
|
||||
{
|
||||
__context->glProgramUniform4d(program.Value, location, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec4<double> value)
|
||||
{
|
||||
__context->glProgramUniform4d(program.Value, location, value.X, value.Y, value.Z, value.W);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<Vec4<double>> values)
|
||||
{
|
||||
fixed (Vec4<double>* __vector = values)
|
||||
{
|
||||
__context->glProgramUniform4dv(program.Value, location, values.Length, (double*)__vector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, uint v0, uint v1, uint v2, uint v3)
|
||||
{
|
||||
__context->glProgramUniform4ui(program.Value, location, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, Vec4<uint> value)
|
||||
{
|
||||
__context->glProgramUniform4ui(program.Value, location, value.X, value.Y, value.Z, value.W);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, ReadOnlySpan<Vec4<uint>> values)
|
||||
{
|
||||
fixed (Vec4<uint>* __vector = values)
|
||||
{
|
||||
__context->glProgramUniform4uiv(program.Value, location, values.Length, (uint*)__vector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, bool transpose, GraphicsMatrix value)
|
||||
{
|
||||
__context->glProgramUniformMatrix4fv(program.Value, location, 1, transpose ? (byte)1 : (byte)0, (float*)&value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glProgramUniform">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ProgramUniform(GlHandle program, int location, bool transpose, ReadOnlySpan<GraphicsMatrix> values)
|
||||
{
|
||||
fixed (GraphicsMatrix* __value = values)
|
||||
{
|
||||
__context->glProgramUniformMatrix4fv(program.Value, location, values.Length, transpose ? (byte)1 : (byte)0, (float*)__value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glValidateProgramPipeline(GLuint pipeline);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glValidateProgramPipeline">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ValidateProgramPipeline(GlHandle pipeline)
|
||||
{
|
||||
__context->glValidateProgramPipeline(pipeline.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramPipelineInfoLog">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramPipelineInfoLog(GlHandle pipeline, int bufSize, int* length, byte* infoLog)
|
||||
{
|
||||
__context->glGetProgramPipelineInfoLog(pipeline.Value, bufSize, length, infoLog);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribL1d(GLuint index, GLdouble x);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDouble(uint index, double x)
|
||||
{
|
||||
__context->glVertexAttribL1d(index, x);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDouble(uint index, double x, double y)
|
||||
{
|
||||
__context->glVertexAttribL2d(index, x, y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDouble(uint index, double x, double y, double z)
|
||||
{
|
||||
__context->glVertexAttribL3d(index, x, y, z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDouble(uint index, double x, double y, double z, double w)
|
||||
{
|
||||
__context->glVertexAttribL4d(index, x, y, z, w);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribPointer">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDoublePointer(uint index, int size, uint type, int stride, void* pointer)
|
||||
{
|
||||
__context->glVertexAttribLPointer(index, size, type, stride, pointer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetVertexAttrib">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetVertexAttributeDouble(uint index, uint pName, double* @params)
|
||||
{
|
||||
__context->glGetVertexAttribLdv(index, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glViewportArrayv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ViewportArrayv(uint first, int count, float* v)
|
||||
{
|
||||
__context->glViewportArrayv(first, count, v);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glViewportIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ViewportIndexed(uint index, float x, float y, float w, float h)
|
||||
{
|
||||
__context->glViewportIndexedf(index, x, y, w, h);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glViewportIndexedfv(GLuint index, const GLfloat *v);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glViewportIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ViewportIndexed(uint index, float* v)
|
||||
{
|
||||
__context->glViewportIndexedfv(index, v);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glScissorArrayv(GLuint first, GLsizei count, const GLint *v);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glScissorArrayv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ScissorArrayv(uint first, int count, int* v)
|
||||
{
|
||||
__context->glScissorArrayv(first, count, v);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glScissorIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ScissorIndexed(uint index, int left, int bottom, int width, int height)
|
||||
{
|
||||
__context->glScissorIndexed(index, left, bottom, width, height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glScissorIndexedv(GLuint index, const GLint *v);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glScissorIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ScissorIndexed(uint index, int* v)
|
||||
{
|
||||
__context->glScissorIndexedv(index, v);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDepthRangeArrayv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DepthRangeArrayv(uint first, int count, double* v)
|
||||
{
|
||||
__context->glDepthRangeArrayv(first, count, v);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDepthRangeIndexed">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DepthRangeIndexed(uint index, double n, double f)
|
||||
{
|
||||
__context->glDepthRangeIndexed(index, n, f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetFloati_v(GLenum target, GLuint index, GLfloat *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGet">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetValue(uint target, uint index, Span<float> values)
|
||||
{
|
||||
fixed (float* __value = values)
|
||||
{
|
||||
__context->glGetFloati_v(target, index, __value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGet">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetValue(uint target, uint index, Span<double> values)
|
||||
{
|
||||
fixed (double* __value = values)
|
||||
{
|
||||
__context->glGetDoublei_v(target, index, __value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.2 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawArraysInstancedBaseInstance">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawArraysInstancedBaseInstance(uint mode, int first, int count, int instancecount, uint baseinstance)
|
||||
{
|
||||
__context->glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawElementsInstancedBaseInstance">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsInstancedBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, uint baseinstance)
|
||||
{
|
||||
__context->glDrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawElementsInstancedBaseVertexBaseInstance">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsInstancedBaseVertexBaseInstance(uint mode, int count, uint type, void* indices, int instancecount, int basevertex, uint baseinstance)
|
||||
{
|
||||
__context->glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetInternalformat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetInternalFormat(uint target, uint internalFormat, uint pName, int count, int* @params)
|
||||
{
|
||||
__context->glGetInternalformativ(target, internalFormat, pName, count, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetActiveAtomicCounterBufferiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveAtomicCounterBufferiv(GlHandle program, uint bufferIndex, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindImageTexture">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindImageTexture(uint unit, GlHandle texture, int level, byte layered, int layer, uint access, uint format)
|
||||
{
|
||||
__context->glBindImageTexture(unit, texture.Value, level, layered, layer, access, format);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMemoryBarrier(GLbitfield barriers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMemoryBarrier">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MemoryBarrier(uint barriers)
|
||||
{
|
||||
__context->glMemoryBarrier(barriers);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexStorage1D">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage1D(uint target, int levels, uint internalFormat, int width)
|
||||
{
|
||||
__context->glTexStorage1D(target, levels, internalFormat, width);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexStorage2D">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage2D(uint target, int levels, uint internalFormat, int width, int height)
|
||||
{
|
||||
__context->glTexStorage2D(target, levels, internalFormat, width, height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexStorage3D">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage3D(uint target, int levels, uint internalFormat, int width, int height, int depth)
|
||||
{
|
||||
__context->glTexStorage3D(target, levels, internalFormat, width, height, depth);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawTransformFeedbackInstanced">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackInstanced(uint mode, GlHandle id, int instancecount)
|
||||
{
|
||||
__context->glDrawTransformFeedbackInstanced(mode, id.Value, instancecount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDrawTransformFeedbackStreamInstanced">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackStreamInstanced(uint mode, GlHandle id, uint stream, int instancecount)
|
||||
{
|
||||
__context->glDrawTransformFeedbackStreamInstanced(mode, id.Value, stream, instancecount);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,490 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.3 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glClearBufferData">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearBufferData(uint target, uint internalFormat, uint format, uint type, void* data)
|
||||
{
|
||||
__context->glClearBufferData(target, internalFormat, format, type, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glClearBufferSubData">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearBufferSubData(uint target, uint internalFormat, nint offset, nint size, uint format, uint type, void* data)
|
||||
{
|
||||
__context->glClearBufferSubData(target, internalFormat, offset, size, format, type, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDispatchCompute">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DispatchCompute(uint num_groups_x, uint num_groups_y, uint num_groups_z)
|
||||
{
|
||||
__context->glDispatchCompute(num_groups_x, num_groups_y, num_groups_z);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDispatchComputeIndirect(GLintptr indirect);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDispatchComputeIndirect">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DispatchComputeIndirect(nint indirect)
|
||||
{
|
||||
__context->glDispatchComputeIndirect(indirect);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glCopyImageSubData">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void CopyImageSubData(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth)
|
||||
{
|
||||
__context->glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glFramebufferParameteri">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void FrameBufferParameteri(uint target, uint pName, int param)
|
||||
{
|
||||
__context->glFramebufferParameteri(target, pName, param);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetFramebufferParameteriv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetFrameBufferParameteriv(uint target, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetFramebufferParameteriv(target, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetInternalformat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetInternalFormat(uint target, uint internalFormat, uint pName, int count, long* @params)
|
||||
{
|
||||
__context->glGetInternalformati64v(target, internalFormat, pName, count, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateTexSubImage">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateTexSubImage(GlHandle texture, int level, int xOffset, int yOffset, int zOffset, int width, int height, int depth)
|
||||
{
|
||||
__context->glInvalidateTexSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateTexImage(GLuint texture, GLint level);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateTexImage">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateTexImage(GlHandle texture, int level)
|
||||
{
|
||||
__context->glInvalidateTexImage(texture.Value, level);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateBufferSubData">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateBufferSubData(GlHandle buffer, nint offset, nint length)
|
||||
{
|
||||
__context->glInvalidateBufferSubData(buffer.Value, offset, length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateBufferData(GLuint buffer);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateBufferData">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateBufferData(GlHandle buffer)
|
||||
{
|
||||
__context->glInvalidateBufferData(buffer.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateFramebuffer">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateFrameBuffer(uint target, int numAttachments, uint* attachments)
|
||||
{
|
||||
__context->glInvalidateFramebuffer(target, numAttachments, attachments);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glInvalidateSubFramebuffer">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateSubFrameBuffer(uint target, int numAttachments, uint* attachments, int x, int y, int width, int height)
|
||||
{
|
||||
__context->glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMultiDrawArraysIndirect">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawArraysIndirect(uint mode, void* indirect, int drawcount, int stride)
|
||||
{
|
||||
__context->glMultiDrawArraysIndirect(mode, indirect, drawcount, stride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMultiDrawElementsIndirect">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawElementsIndirect(uint mode, uint type, void* indirect, int drawcount, int stride)
|
||||
{
|
||||
__context->glMultiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramInterfaceiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramInterfaceiv(GlHandle program, uint programInterface, uint pName, int* @params)
|
||||
{
|
||||
__context->glGetProgramInterfaceiv(program.Value, programInterface, pName, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramResourceIndex">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetProgramResourceIndex(GlHandle program, uint programInterface, byte* name)
|
||||
{
|
||||
return __context->glGetProgramResourceIndex(program.Value, programInterface, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramResourceName">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramResourceName(GlHandle program, uint programInterface, uint index, int bufSize, int* length, byte* name)
|
||||
{
|
||||
__context->glGetProgramResourceName(program.Value, programInterface, index, bufSize, length, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramResourceiv">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramResourceiv(GlHandle program, uint programInterface, uint index, int propCount, uint* props, int count, int* length, int* @params)
|
||||
{
|
||||
__context->glGetProgramResourceiv(program.Value, programInterface, index, propCount, props, count, length, @params);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramResourceLocation">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetProgramResourceLocation(GlHandle program, uint programInterface, byte* name)
|
||||
{
|
||||
return __context->glGetProgramResourceLocation(program.Value, programInterface, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetProgramResourceLocationIndex">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetProgramResourceLocationIndex(GlHandle program, uint programInterface, byte* name)
|
||||
{
|
||||
return __context->glGetProgramResourceLocationIndex(program.Value, programInterface, name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glShaderStorageBlockBinding">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ShaderStorageBlockBinding(GlHandle program, uint storageBlockIndex, uint storageBlockBinding)
|
||||
{
|
||||
__context->glShaderStorageBlockBinding(program.Value, storageBlockIndex, storageBlockBinding);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexBufferRange">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexBufferRange(uint target, uint internalFormat, GlHandle buffer, nint offset, nint size)
|
||||
{
|
||||
__context->glTexBufferRange(target, internalFormat, buffer.Value, offset, size);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexStorage2DMultisample">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage2DMultisample(uint target, int samples, uint internalFormat, int width, int height, byte fixedsamplelocations)
|
||||
{
|
||||
__context->glTexStorage2DMultisample(target, samples, internalFormat, width, height, fixedsamplelocations);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTexStorage3DMultisample">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage3DMultisample(uint target, int samples, uint internalFormat, int width, int height, int depth, byte fixedsamplelocations)
|
||||
{
|
||||
__context->glTexStorage3DMultisample(target, samples, internalFormat, width, height, depth, fixedsamplelocations);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glTextureView">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TextureView(GlHandle texture, uint target, GlHandle origtexture, uint internalFormat, uint minlevel, uint numlevels, uint minlayer, uint numlayers)
|
||||
{
|
||||
__context->glTextureView(texture.Value, target, origtexture.Value, internalFormat, minlevel, numlevels, minlayer, numlayers);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindVertexBuffer">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindVertexBuffer(uint bindingIndex, GlHandle buffer, nint offset, int stride)
|
||||
{
|
||||
__context->glBindVertexBuffer(bindingIndex, buffer.Value, offset, stride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribFormat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeFormat(uint attributeIndex, int size, uint type, byte normalized, uint relativeOffset)
|
||||
{
|
||||
__context->glVertexAttribFormat(attributeIndex, size, type, normalized, relativeOffset);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribFormat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeIntegerFormat(uint attributeIndex, int size, uint type, uint relativeOffset)
|
||||
{
|
||||
__context->glVertexAttribIFormat(attributeIndex, size, type, relativeOffset);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribFormat">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDoubleFormat(uint attributeIndex, int size, uint type, uint relativeOffset)
|
||||
{
|
||||
__context->glVertexAttribLFormat(attributeIndex, size, type, relativeOffset);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexAttribBinding">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeBinding(uint attributeIndex, uint bindingIndex)
|
||||
{
|
||||
__context->glVertexAttribBinding(attributeIndex, bindingIndex);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glVertexBindingDivisor">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexBindingDivisor(uint bindingIndex, uint divisor)
|
||||
{
|
||||
__context->glVertexBindingDivisor(bindingIndex, divisor);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDebugMessageControl">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageControl(uint source, uint type, uint severity, int count, uint* ids, byte enabled)
|
||||
{
|
||||
__context->glDebugMessageControl(source, type, severity, count, ids, enabled);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDebugMessageInsert">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageInsert(uint source, uint type, uint id, uint severity, int length, byte* buf)
|
||||
{
|
||||
__context->glDebugMessageInsert(source, type, id, severity, length, buf);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glDebugMessageCallback">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageCallback(delegate* unmanaged<uint, uint, uint, uint, int, byte*, void*, void> callback, void* userParam)
|
||||
{
|
||||
__context->glDebugMessageCallback(callback, userParam);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>GLuint glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetDebugMessageLog">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetDebugMessageLog(uint count, int bufSize, uint* sources, uint* types, uint* ids, uint* severities, int* lengths, byte* messageLog)
|
||||
{
|
||||
return __context->glGetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPushDebugGroup">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PushDebugGroup(uint source, uint id, int length, byte* message)
|
||||
{
|
||||
__context->glPushDebugGroup(source, id, length, message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPopDebugGroup();</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPopDebugGroup">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PopDebugGroup()
|
||||
{
|
||||
__context->glPopDebugGroup();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glObjectLabel">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ObjectLabel(uint identifier, uint name, int length, byte* label)
|
||||
{
|
||||
__context->glObjectLabel(identifier, name, length, label);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetObjectLabel">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetObjectLabel(uint identifier, uint name, int bufSize, int* length, byte* label)
|
||||
{
|
||||
__context->glGetObjectLabel(identifier, name, bufSize, length, label);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glObjectPtrLabel">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ObjectPtrLabel(void* ptr, int length, byte* label)
|
||||
{
|
||||
__context->glObjectPtrLabel(ptr, length, label);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glGetObjectPtrLabel">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetObjectPtrLabel(void* ptr, int bufSize, int* length, byte* label)
|
||||
{
|
||||
__context->glGetObjectPtrLabel(ptr, bufSize, length, label);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.4 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBufferStorage">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BufferStorage(uint target, nint size, void* data, uint flags)
|
||||
{
|
||||
__context->glBufferStorage(target, size, data, flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glClearTexImage">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearTexImage(GlHandle texture, int level, uint format, uint type, void* data)
|
||||
{
|
||||
__context->glClearTexImage(texture.Value, level, format, type, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glClearTexSubImage">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearTexSubImage(GlHandle texture, int level, int xOffset, int yOffset, int zOffset, int width, int height, int depth, uint format, uint type, void* data)
|
||||
{
|
||||
__context->glClearTexSubImage(texture.Value, level, xOffset, yOffset, zOffset, width, height, depth, format, type, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindBuffersBase">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindBuffersBase(uint target, uint first, ReadOnlySpan<GlHandle> buffers)
|
||||
{
|
||||
fixed (GlHandle* __buffers = buffers)
|
||||
{
|
||||
__context->glBindBuffersBase(target, first, buffers.Length, (uint*)__buffers);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindBuffersRange">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindBuffersRange(uint target, uint first, ReadOnlySpan<GlHandle> buffers, nint* offsets, nint* sizes)
|
||||
{
|
||||
fixed (GlHandle* __buffers = buffers)
|
||||
{
|
||||
__context->glBindBuffersRange(target, first, buffers.Length, (uint*)__buffers, offsets, sizes);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindTextures(GLuint first, GLsizei count, const GLuint *textures);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindTextures">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindTextures(uint first, ReadOnlySpan<GlHandle> textures)
|
||||
{
|
||||
fixed (GlHandle* __textures = textures)
|
||||
{
|
||||
__context->glBindTextures(first, textures.Length, (uint*)__textures);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindSamplers">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindSamplers(uint first, ReadOnlySpan<GlHandle> samplers)
|
||||
{
|
||||
fixed (GlHandle* __samplers = samplers)
|
||||
{
|
||||
__context->glBindSamplers(first, samplers.Length, (uint*)__samplers);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindImageTextures">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindImageTextures(uint first, ReadOnlySpan<GlHandle> textures)
|
||||
{
|
||||
fixed (GlHandle* __textures = textures)
|
||||
{
|
||||
__context->glBindImageTextures(first, textures.Length, (uint*)__textures);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glBindVertexBuffers">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindVertexBuffers(uint first, ReadOnlySpan<GlHandle> buffers, nint* offsets, int* strides)
|
||||
{
|
||||
fixed (GlHandle* __buffers = buffers)
|
||||
{
|
||||
__context->glBindVertexBuffers(first, buffers.Length, (uint*)__buffers, offsets, strides);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,61 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL 4.6 core-profile forwarding methods.
|
||||
// </auto-generated>
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glSpecializeShader(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glSpecializeShader">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SpecializeShader(GlHandle shader, byte* pEntryPoint, uint numSpecializationConstants, uint* pConstantIndex, uint* pConstantValue)
|
||||
{
|
||||
__context->glSpecializeShader(shader.Value, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMultiDrawArraysIndirectCount(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMultiDrawArraysIndirectCount">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawArraysIndirectCount(uint mode, void* indirect, nint drawcount, int maxdrawcount, int stride)
|
||||
{
|
||||
__context->glMultiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glMultiDrawElementsIndirectCount(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glMultiDrawElementsIndirectCount">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawElementsIndirectCount(uint mode, uint type, void* indirect, nint drawcount, int maxdrawcount, int stride)
|
||||
{
|
||||
__context->glMultiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Forwards to the native OpenGL entry point.</para>
|
||||
/// <para><c>void glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp);</c></para>
|
||||
/// <para>See <see href="https://docs.gl/gl4/glPolygonOffsetClamp">docs.gl</see>.</para>
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PolygonOffsetClamp(float factor, float units, float clamp)
|
||||
{
|
||||
__context->glPolygonOffsetClamp(factor, units, clamp);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,669 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Desktop OpenGL core function pointer table.
|
||||
// </auto-generated>
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
|
||||
public unsafe partial struct OpenglContext
|
||||
{
|
||||
internal delegate* unmanaged<uint, uint, void> glActiveShaderProgram;
|
||||
internal delegate* unmanaged<uint, void> glActiveTexture;
|
||||
internal delegate* unmanaged<uint, uint, void> glAttachShader;
|
||||
internal delegate* unmanaged<uint, uint, void> glBeginConditionalRender;
|
||||
internal delegate* unmanaged<uint, uint, void> glBeginQuery;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glBeginQueryIndexed;
|
||||
internal delegate* unmanaged<uint, void> glBeginTransformFeedback;
|
||||
internal delegate* unmanaged<uint, uint, byte*, void> glBindAttribLocation;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindBuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glBindBufferBase;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, nint, void> glBindBufferRange;
|
||||
internal delegate* unmanaged<uint, uint, int, uint*, void> glBindBuffersBase;
|
||||
internal delegate* unmanaged<uint, uint, int, uint*, nint*, nint*, void> glBindBuffersRange;
|
||||
internal delegate* unmanaged<uint, uint, byte*, void> glBindFragDataLocation;
|
||||
internal delegate* unmanaged<uint, uint, uint, byte*, void> glBindFragDataLocationIndexed;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindFramebuffer;
|
||||
internal delegate* unmanaged<uint, uint, int, byte, int, uint, uint, void> glBindImageTexture;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glBindImageTextures;
|
||||
internal delegate* unmanaged<uint, void> glBindProgramPipeline;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindRenderbuffer;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindSampler;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glBindSamplers;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindTexture;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindTextureUnit;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glBindTextures;
|
||||
internal delegate* unmanaged<uint, uint, void> glBindTransformFeedback;
|
||||
internal delegate* unmanaged<uint, void> glBindVertexArray;
|
||||
internal delegate* unmanaged<uint, uint, nint, int, void> glBindVertexBuffer;
|
||||
internal delegate* unmanaged<uint, int, uint*, nint*, int*, void> glBindVertexBuffers;
|
||||
internal delegate* unmanaged<float, float, float, float, void> glBlendColor;
|
||||
internal delegate* unmanaged<uint, void> glBlendEquation;
|
||||
internal delegate* unmanaged<uint, uint, void> glBlendEquationSeparate;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glBlendEquationSeparatei;
|
||||
internal delegate* unmanaged<uint, uint, void> glBlendEquationi;
|
||||
internal delegate* unmanaged<uint, uint, void> glBlendFunc;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void> glBlendFuncSeparate;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, uint, void> glBlendFuncSeparatei;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glBlendFunci;
|
||||
internal delegate* unmanaged<int, int, int, int, int, int, int, int, uint, uint, void> glBlitFramebuffer;
|
||||
internal delegate* unmanaged<uint, uint, int, int, int, int, int, int, int, int, uint, uint, void> glBlitNamedFramebuffer;
|
||||
internal delegate* unmanaged<uint, nint, void*, uint, void> glBufferData;
|
||||
internal delegate* unmanaged<uint, nint, void*, uint, void> glBufferStorage;
|
||||
internal delegate* unmanaged<uint, nint, nint, void*, void> glBufferSubData;
|
||||
internal delegate* unmanaged<uint, uint> glCheckFramebufferStatus;
|
||||
internal delegate* unmanaged<uint, uint, uint> glCheckNamedFramebufferStatus;
|
||||
internal delegate* unmanaged<uint, uint, void> glClampColor;
|
||||
internal delegate* unmanaged<uint, void> glClear;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void*, void> glClearBufferData;
|
||||
internal delegate* unmanaged<uint, uint, nint, nint, uint, uint, void*, void> glClearBufferSubData;
|
||||
internal delegate* unmanaged<uint, int, float, int, void> glClearBufferfi;
|
||||
internal delegate* unmanaged<uint, int, float*, void> glClearBufferfv;
|
||||
internal delegate* unmanaged<uint, int, int*, void> glClearBufferiv;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glClearBufferuiv;
|
||||
internal delegate* unmanaged<float, float, float, float, void> glClearColor;
|
||||
internal delegate* unmanaged<double, void> glClearDepth;
|
||||
internal delegate* unmanaged<float, void> glClearDepthf;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void*, void> glClearNamedBufferData;
|
||||
internal delegate* unmanaged<uint, uint, nint, nint, uint, uint, void*, void> glClearNamedBufferSubData;
|
||||
internal delegate* unmanaged<uint, uint, int, float, int, void> glClearNamedFramebufferfi;
|
||||
internal delegate* unmanaged<uint, uint, int, float*, void> glClearNamedFramebufferfv;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, void> glClearNamedFramebufferiv;
|
||||
internal delegate* unmanaged<uint, uint, int, uint*, void> glClearNamedFramebufferuiv;
|
||||
internal delegate* unmanaged<int, void> glClearStencil;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, void*, void> glClearTexImage;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, uint, void*, void> glClearTexSubImage;
|
||||
internal delegate* unmanaged<void*, uint, ulong, uint> glClientWaitSync;
|
||||
internal delegate* unmanaged<uint, uint, void> glClipControl;
|
||||
internal delegate* unmanaged<byte, byte, byte, byte, void> glColorMask;
|
||||
internal delegate* unmanaged<uint, byte, byte, byte, byte, void> glColorMaski;
|
||||
internal delegate* unmanaged<uint, void> glCompileShader;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, void*, void> glCompressedTexImage1D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, int, void*, void> glCompressedTexImage2D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, int, int, void*, void> glCompressedTexImage3D;
|
||||
internal delegate* unmanaged<uint, int, int, int, uint, int, void*, void> glCompressedTexSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, uint, int, void*, void> glCompressedTexSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, int, void*, void> glCompressedTexSubImage3D;
|
||||
internal delegate* unmanaged<uint, int, int, int, uint, int, void*, void> glCompressedTextureSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, uint, int, void*, void> glCompressedTextureSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, int, void*, void> glCompressedTextureSubImage3D;
|
||||
internal delegate* unmanaged<uint, uint, nint, nint, nint, void> glCopyBufferSubData;
|
||||
internal delegate* unmanaged<uint, uint, int, int, int, int, uint, uint, int, int, int, int, int, int, int, void> glCopyImageSubData;
|
||||
internal delegate* unmanaged<uint, uint, nint, nint, nint, void> glCopyNamedBufferSubData;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, int, void> glCopyTexImage1D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, int, int, void> glCopyTexImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, void> glCopyTexSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, void> glCopyTexSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, int, void> glCopyTexSubImage3D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, void> glCopyTextureSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, void> glCopyTextureSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, int, void> glCopyTextureSubImage3D;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateBuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateFramebuffers;
|
||||
internal delegate* unmanaged<uint> glCreateProgram;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateProgramPipelines;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glCreateQueries;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateRenderbuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateSamplers;
|
||||
internal delegate* unmanaged<uint, uint> glCreateShader;
|
||||
internal delegate* unmanaged<uint, int, byte**, uint> glCreateShaderProgramv;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glCreateTextures;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateTransformFeedbacks;
|
||||
internal delegate* unmanaged<int, uint*, void> glCreateVertexArrays;
|
||||
internal delegate* unmanaged<uint, void> glCullFace;
|
||||
internal delegate* unmanaged<delegate* unmanaged<uint, uint, uint, uint, int, byte*, void*, void>, void*, void> glDebugMessageCallback;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, uint*, byte, void> glDebugMessageControl;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, int, byte*, void> glDebugMessageInsert;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteBuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteFramebuffers;
|
||||
internal delegate* unmanaged<uint, void> glDeleteProgram;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteProgramPipelines;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteQueries;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteRenderbuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteSamplers;
|
||||
internal delegate* unmanaged<uint, void> glDeleteShader;
|
||||
internal delegate* unmanaged<void*, void> glDeleteSync;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteTextures;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteTransformFeedbacks;
|
||||
internal delegate* unmanaged<int, uint*, void> glDeleteVertexArrays;
|
||||
internal delegate* unmanaged<uint, void> glDepthFunc;
|
||||
internal delegate* unmanaged<byte, void> glDepthMask;
|
||||
internal delegate* unmanaged<double, double, void> glDepthRange;
|
||||
internal delegate* unmanaged<uint, int, double*, void> glDepthRangeArrayv;
|
||||
internal delegate* unmanaged<uint, double, double, void> glDepthRangeIndexed;
|
||||
internal delegate* unmanaged<float, float, void> glDepthRangef;
|
||||
internal delegate* unmanaged<uint, uint, void> glDetachShader;
|
||||
internal delegate* unmanaged<uint, void> glDisable;
|
||||
internal delegate* unmanaged<uint, uint, void> glDisableVertexArrayAttrib;
|
||||
internal delegate* unmanaged<uint, void> glDisableVertexAttribArray;
|
||||
internal delegate* unmanaged<uint, uint, void> glDisablei;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glDispatchCompute;
|
||||
internal delegate* unmanaged<nint, void> glDispatchComputeIndirect;
|
||||
internal delegate* unmanaged<uint, int, int, void> glDrawArrays;
|
||||
internal delegate* unmanaged<uint, void*, void> glDrawArraysIndirect;
|
||||
internal delegate* unmanaged<uint, int, int, int, void> glDrawArraysInstanced;
|
||||
internal delegate* unmanaged<uint, int, int, int, uint, void> glDrawArraysInstancedBaseInstance;
|
||||
internal delegate* unmanaged<uint, void> glDrawBuffer;
|
||||
internal delegate* unmanaged<int, uint*, void> glDrawBuffers;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, void> glDrawElements;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, int, void> glDrawElementsBaseVertex;
|
||||
internal delegate* unmanaged<uint, uint, void*, void> glDrawElementsIndirect;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, int, void> glDrawElementsInstanced;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, int, uint, void> glDrawElementsInstancedBaseInstance;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, int, int, void> glDrawElementsInstancedBaseVertex;
|
||||
internal delegate* unmanaged<uint, int, uint, void*, int, int, uint, void> glDrawElementsInstancedBaseVertexBaseInstance;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, uint, void*, void> glDrawRangeElements;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, uint, void*, int, void> glDrawRangeElementsBaseVertex;
|
||||
internal delegate* unmanaged<uint, uint, void> glDrawTransformFeedback;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glDrawTransformFeedbackInstanced;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glDrawTransformFeedbackStream;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, void> glDrawTransformFeedbackStreamInstanced;
|
||||
internal delegate* unmanaged<uint, void> glEnable;
|
||||
internal delegate* unmanaged<uint, uint, void> glEnableVertexArrayAttrib;
|
||||
internal delegate* unmanaged<uint, void> glEnableVertexAttribArray;
|
||||
internal delegate* unmanaged<uint, uint, void> glEnablei;
|
||||
internal delegate* unmanaged<void> glEndConditionalRender;
|
||||
internal delegate* unmanaged<uint, void> glEndQuery;
|
||||
internal delegate* unmanaged<uint, uint, void> glEndQueryIndexed;
|
||||
internal delegate* unmanaged<void> glEndTransformFeedback;
|
||||
internal delegate* unmanaged<uint, uint, void*> glFenceSync;
|
||||
internal delegate* unmanaged<void> glFinish;
|
||||
internal delegate* unmanaged<void> glFlush;
|
||||
internal delegate* unmanaged<uint, nint, nint, void> glFlushMappedBufferRange;
|
||||
internal delegate* unmanaged<uint, nint, nint, void> glFlushMappedNamedBufferRange;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glFramebufferParameteri;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void> glFramebufferRenderbuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, void> glFramebufferTexture;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, int, void> glFramebufferTexture1D;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, int, void> glFramebufferTexture2D;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, int, int, void> glFramebufferTexture3D;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int, void> glFramebufferTextureLayer;
|
||||
internal delegate* unmanaged<uint, void> glFrontFace;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenBuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenFramebuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenProgramPipelines;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenQueries;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenRenderbuffers;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenSamplers;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenTextures;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenTransformFeedbacks;
|
||||
internal delegate* unmanaged<int, uint*, void> glGenVertexArrays;
|
||||
internal delegate* unmanaged<uint, void> glGenerateMipmap;
|
||||
internal delegate* unmanaged<uint, void> glGenerateTextureMipmap;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetActiveAtomicCounterBufferiv;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, int*, uint*, byte*, void> glGetActiveAttrib;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int*, byte*, void> glGetActiveSubroutineName;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int*, byte*, void> glGetActiveSubroutineUniformName;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, int*, void> glGetActiveSubroutineUniformiv;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, int*, uint*, byte*, void> glGetActiveUniform;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, byte*, void> glGetActiveUniformBlockName;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetActiveUniformBlockiv;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, byte*, void> glGetActiveUniformName;
|
||||
internal delegate* unmanaged<uint, int, uint*, uint, int*, void> glGetActiveUniformsiv;
|
||||
internal delegate* unmanaged<uint, int, int*, uint*, void> glGetAttachedShaders;
|
||||
internal delegate* unmanaged<uint, byte*, int> glGetAttribLocation;
|
||||
internal delegate* unmanaged<uint, uint, byte*, void> glGetBooleani_v;
|
||||
internal delegate* unmanaged<uint, byte*, void> glGetBooleanv;
|
||||
internal delegate* unmanaged<uint, uint, long*, void> glGetBufferParameteri64v;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetBufferParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, void**, void> glGetBufferPointerv;
|
||||
internal delegate* unmanaged<uint, nint, nint, void*, void> glGetBufferSubData;
|
||||
internal delegate* unmanaged<uint, int, void*, void> glGetCompressedTexImage;
|
||||
internal delegate* unmanaged<uint, int, int, void*, void> glGetCompressedTextureImage;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, int, void*, void> glGetCompressedTextureSubImage;
|
||||
internal delegate* unmanaged<uint, int, uint*, uint*, uint*, uint*, int*, byte*, uint> glGetDebugMessageLog;
|
||||
internal delegate* unmanaged<uint, uint, double*, void> glGetDoublei_v;
|
||||
internal delegate* unmanaged<uint, double*, void> glGetDoublev;
|
||||
internal delegate* unmanaged<uint> glGetError;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetFloati_v;
|
||||
internal delegate* unmanaged<uint, float*, void> glGetFloatv;
|
||||
internal delegate* unmanaged<uint, byte*, int> glGetFragDataIndex;
|
||||
internal delegate* unmanaged<uint, byte*, int> glGetFragDataLocation;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetFramebufferAttachmentParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetFramebufferParameteriv;
|
||||
internal delegate* unmanaged<uint> glGetGraphicsResetStatus;
|
||||
internal delegate* unmanaged<uint, uint, long*, void> glGetInteger64i_v;
|
||||
internal delegate* unmanaged<uint, long*, void> glGetInteger64v;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetIntegeri_v;
|
||||
internal delegate* unmanaged<uint, int*, void> glGetIntegerv;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, long*, void> glGetInternalformati64v;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int*, void> glGetInternalformativ;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetMultisamplefv;
|
||||
internal delegate* unmanaged<uint, uint, long*, void> glGetNamedBufferParameteri64v;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetNamedBufferParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, void**, void> glGetNamedBufferPointerv;
|
||||
internal delegate* unmanaged<uint, nint, nint, void*, void> glGetNamedBufferSubData;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetNamedFramebufferAttachmentParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetNamedFramebufferParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetNamedRenderbufferParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, byte*, void> glGetObjectLabel;
|
||||
internal delegate* unmanaged<void*, int, int*, byte*, void> glGetObjectPtrLabel;
|
||||
internal delegate* unmanaged<uint, void**, void> glGetPointerv;
|
||||
internal delegate* unmanaged<uint, int, int*, uint*, void*, void> glGetProgramBinary;
|
||||
internal delegate* unmanaged<uint, int, int*, byte*, void> glGetProgramInfoLog;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetProgramInterfaceiv;
|
||||
internal delegate* unmanaged<uint, int, int*, byte*, void> glGetProgramPipelineInfoLog;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetProgramPipelineiv;
|
||||
internal delegate* unmanaged<uint, uint, byte*, uint> glGetProgramResourceIndex;
|
||||
internal delegate* unmanaged<uint, uint, byte*, int> glGetProgramResourceLocation;
|
||||
internal delegate* unmanaged<uint, uint, byte*, int> glGetProgramResourceLocationIndex;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int*, byte*, void> glGetProgramResourceName;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, uint*, int, int*, int*, void> glGetProgramResourceiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetProgramStageiv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetProgramiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, void> glGetQueryBufferObjecti64v;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, void> glGetQueryBufferObjectiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, void> glGetQueryBufferObjectui64v;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, void> glGetQueryBufferObjectuiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetQueryIndexediv;
|
||||
internal delegate* unmanaged<uint, uint, long*, void> glGetQueryObjecti64v;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetQueryObjectiv;
|
||||
internal delegate* unmanaged<uint, uint, ulong*, void> glGetQueryObjectui64v;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glGetQueryObjectuiv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetQueryiv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetRenderbufferParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetSamplerParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glGetSamplerParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetSamplerParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetSamplerParameteriv;
|
||||
internal delegate* unmanaged<uint, int, int*, byte*, void> glGetShaderInfoLog;
|
||||
internal delegate* unmanaged<uint, uint, int*, int*, void> glGetShaderPrecisionFormat;
|
||||
internal delegate* unmanaged<uint, int, int*, byte*, void> glGetShaderSource;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetShaderiv;
|
||||
internal delegate* unmanaged<uint, byte*> glGetString;
|
||||
internal delegate* unmanaged<uint, uint, byte*> glGetStringi;
|
||||
internal delegate* unmanaged<uint, uint, byte*, uint> glGetSubroutineIndex;
|
||||
internal delegate* unmanaged<uint, uint, byte*, int> glGetSubroutineUniformLocation;
|
||||
internal delegate* unmanaged<void*, uint, int, int*, int*, void> glGetSynciv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, void*, void> glGetTexImage;
|
||||
internal delegate* unmanaged<uint, int, uint, float*, void> glGetTexLevelParameterfv;
|
||||
internal delegate* unmanaged<uint, int, uint, int*, void> glGetTexLevelParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetTexParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glGetTexParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetTexParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetTexParameteriv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, int, void*, void> glGetTextureImage;
|
||||
internal delegate* unmanaged<uint, int, uint, float*, void> glGetTextureLevelParameterfv;
|
||||
internal delegate* unmanaged<uint, int, uint, int*, void> glGetTextureLevelParameteriv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetTextureParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glGetTextureParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetTextureParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetTextureParameteriv;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, uint, int, void*, void> glGetTextureSubImage;
|
||||
internal delegate* unmanaged<uint, uint, int, int*, int*, uint*, byte*, void> glGetTransformFeedbackVarying;
|
||||
internal delegate* unmanaged<uint, uint, uint, long*, void> glGetTransformFeedbacki64_v;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetTransformFeedbacki_v;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetTransformFeedbackiv;
|
||||
internal delegate* unmanaged<uint, byte*, uint> glGetUniformBlockIndex;
|
||||
internal delegate* unmanaged<uint, int, byte**, uint*, void> glGetUniformIndices;
|
||||
internal delegate* unmanaged<uint, byte*, int> glGetUniformLocation;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glGetUniformSubroutineuiv;
|
||||
internal delegate* unmanaged<uint, int, double*, void> glGetUniformdv;
|
||||
internal delegate* unmanaged<uint, int, float*, void> glGetUniformfv;
|
||||
internal delegate* unmanaged<uint, int, int*, void> glGetUniformiv;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glGetUniformuiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, long*, void> glGetVertexArrayIndexed64iv;
|
||||
internal delegate* unmanaged<uint, uint, uint, int*, void> glGetVertexArrayIndexediv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetVertexArrayiv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetVertexAttribIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glGetVertexAttribIuiv;
|
||||
internal delegate* unmanaged<uint, uint, double*, void> glGetVertexAttribLdv;
|
||||
internal delegate* unmanaged<uint, uint, void**, void> glGetVertexAttribPointerv;
|
||||
internal delegate* unmanaged<uint, uint, double*, void> glGetVertexAttribdv;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glGetVertexAttribfv;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glGetVertexAttribiv;
|
||||
internal delegate* unmanaged<uint, int, int, void*, void> glGetnCompressedTexImage;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, int, void*, void> glGetnTexImage;
|
||||
internal delegate* unmanaged<uint, int, int, double*, void> glGetnUniformdv;
|
||||
internal delegate* unmanaged<uint, int, int, float*, void> glGetnUniformfv;
|
||||
internal delegate* unmanaged<uint, int, int, int*, void> glGetnUniformiv;
|
||||
internal delegate* unmanaged<uint, int, int, uint*, void> glGetnUniformuiv;
|
||||
internal delegate* unmanaged<uint, uint, void> glHint;
|
||||
internal delegate* unmanaged<uint, void> glInvalidateBufferData;
|
||||
internal delegate* unmanaged<uint, nint, nint, void> glInvalidateBufferSubData;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glInvalidateFramebuffer;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glInvalidateNamedFramebufferData;
|
||||
internal delegate* unmanaged<uint, int, uint*, int, int, int, int, void> glInvalidateNamedFramebufferSubData;
|
||||
internal delegate* unmanaged<uint, int, uint*, int, int, int, int, void> glInvalidateSubFramebuffer;
|
||||
internal delegate* unmanaged<uint, int, void> glInvalidateTexImage;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, void> glInvalidateTexSubImage;
|
||||
internal delegate* unmanaged<uint, byte> glIsBuffer;
|
||||
internal delegate* unmanaged<uint, byte> glIsEnabled;
|
||||
internal delegate* unmanaged<uint, uint, byte> glIsEnabledi;
|
||||
internal delegate* unmanaged<uint, byte> glIsFramebuffer;
|
||||
internal delegate* unmanaged<uint, byte> glIsProgram;
|
||||
internal delegate* unmanaged<uint, byte> glIsProgramPipeline;
|
||||
internal delegate* unmanaged<uint, byte> glIsQuery;
|
||||
internal delegate* unmanaged<uint, byte> glIsRenderbuffer;
|
||||
internal delegate* unmanaged<uint, byte> glIsSampler;
|
||||
internal delegate* unmanaged<uint, byte> glIsShader;
|
||||
internal delegate* unmanaged<void*, byte> glIsSync;
|
||||
internal delegate* unmanaged<uint, byte> glIsTexture;
|
||||
internal delegate* unmanaged<uint, byte> glIsTransformFeedback;
|
||||
internal delegate* unmanaged<uint, byte> glIsVertexArray;
|
||||
internal delegate* unmanaged<float, void> glLineWidth;
|
||||
internal delegate* unmanaged<uint, void> glLinkProgram;
|
||||
internal delegate* unmanaged<uint, void> glLogicOp;
|
||||
internal delegate* unmanaged<uint, uint, void*> glMapBuffer;
|
||||
internal delegate* unmanaged<uint, nint, nint, uint, void*> glMapBufferRange;
|
||||
internal delegate* unmanaged<uint, uint, void*> glMapNamedBuffer;
|
||||
internal delegate* unmanaged<uint, nint, nint, uint, void*> glMapNamedBufferRange;
|
||||
internal delegate* unmanaged<uint, void> glMemoryBarrier;
|
||||
internal delegate* unmanaged<uint, void> glMemoryBarrierByRegion;
|
||||
internal delegate* unmanaged<float, void> glMinSampleShading;
|
||||
internal delegate* unmanaged<uint, int*, int*, int, void> glMultiDrawArrays;
|
||||
internal delegate* unmanaged<uint, void*, int, int, void> glMultiDrawArraysIndirect;
|
||||
internal delegate* unmanaged<uint, void*, nint, int, int, void> glMultiDrawArraysIndirectCount;
|
||||
internal delegate* unmanaged<uint, int*, uint, void**, int, void> glMultiDrawElements;
|
||||
internal delegate* unmanaged<uint, int*, uint, void**, int, int*, void> glMultiDrawElementsBaseVertex;
|
||||
internal delegate* unmanaged<uint, uint, void*, int, int, void> glMultiDrawElementsIndirect;
|
||||
internal delegate* unmanaged<uint, uint, void*, nint, int, int, void> glMultiDrawElementsIndirectCount;
|
||||
internal delegate* unmanaged<uint, nint, void*, uint, void> glNamedBufferData;
|
||||
internal delegate* unmanaged<uint, nint, void*, uint, void> glNamedBufferStorage;
|
||||
internal delegate* unmanaged<uint, nint, nint, void*, void> glNamedBufferSubData;
|
||||
internal delegate* unmanaged<uint, uint, void> glNamedFramebufferDrawBuffer;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glNamedFramebufferDrawBuffers;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glNamedFramebufferParameteri;
|
||||
internal delegate* unmanaged<uint, uint, void> glNamedFramebufferReadBuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void> glNamedFramebufferRenderbuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, void> glNamedFramebufferTexture;
|
||||
internal delegate* unmanaged<uint, uint, uint, int, int, void> glNamedFramebufferTextureLayer;
|
||||
internal delegate* unmanaged<uint, uint, int, int, void> glNamedRenderbufferStorage;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, void> glNamedRenderbufferStorageMultisample;
|
||||
internal delegate* unmanaged<uint, uint, int, byte*, void> glObjectLabel;
|
||||
internal delegate* unmanaged<void*, int, byte*, void> glObjectPtrLabel;
|
||||
internal delegate* unmanaged<uint, float*, void> glPatchParameterfv;
|
||||
internal delegate* unmanaged<uint, int, void> glPatchParameteri;
|
||||
internal delegate* unmanaged<void> glPauseTransformFeedback;
|
||||
internal delegate* unmanaged<uint, float, void> glPixelStoref;
|
||||
internal delegate* unmanaged<uint, int, void> glPixelStorei;
|
||||
internal delegate* unmanaged<uint, float, void> glPointParameterf;
|
||||
internal delegate* unmanaged<uint, float*, void> glPointParameterfv;
|
||||
internal delegate* unmanaged<uint, int, void> glPointParameteri;
|
||||
internal delegate* unmanaged<uint, int*, void> glPointParameteriv;
|
||||
internal delegate* unmanaged<float, void> glPointSize;
|
||||
internal delegate* unmanaged<uint, uint, void> glPolygonMode;
|
||||
internal delegate* unmanaged<float, float, void> glPolygonOffset;
|
||||
internal delegate* unmanaged<float, float, float, void> glPolygonOffsetClamp;
|
||||
internal delegate* unmanaged<void> glPopDebugGroup;
|
||||
internal delegate* unmanaged<uint, void> glPrimitiveRestartIndex;
|
||||
internal delegate* unmanaged<uint, uint, void*, int, void> glProgramBinary;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glProgramParameteri;
|
||||
internal delegate* unmanaged<uint, int, double, void> glProgramUniform1d;
|
||||
internal delegate* unmanaged<uint, int, int, double*, void> glProgramUniform1dv;
|
||||
internal delegate* unmanaged<uint, int, float, void> glProgramUniform1f;
|
||||
internal delegate* unmanaged<uint, int, int, float*, void> glProgramUniform1fv;
|
||||
internal delegate* unmanaged<uint, int, int, void> glProgramUniform1i;
|
||||
internal delegate* unmanaged<uint, int, int, int*, void> glProgramUniform1iv;
|
||||
internal delegate* unmanaged<uint, int, uint, void> glProgramUniform1ui;
|
||||
internal delegate* unmanaged<uint, int, int, uint*, void> glProgramUniform1uiv;
|
||||
internal delegate* unmanaged<uint, int, double, double, void> glProgramUniform2d;
|
||||
internal delegate* unmanaged<uint, int, int, double*, void> glProgramUniform2dv;
|
||||
internal delegate* unmanaged<uint, int, float, float, void> glProgramUniform2f;
|
||||
internal delegate* unmanaged<uint, int, int, float*, void> glProgramUniform2fv;
|
||||
internal delegate* unmanaged<uint, int, int, int, void> glProgramUniform2i;
|
||||
internal delegate* unmanaged<uint, int, int, int*, void> glProgramUniform2iv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, void> glProgramUniform2ui;
|
||||
internal delegate* unmanaged<uint, int, int, uint*, void> glProgramUniform2uiv;
|
||||
internal delegate* unmanaged<uint, int, double, double, double, void> glProgramUniform3d;
|
||||
internal delegate* unmanaged<uint, int, int, double*, void> glProgramUniform3dv;
|
||||
internal delegate* unmanaged<uint, int, float, float, float, void> glProgramUniform3f;
|
||||
internal delegate* unmanaged<uint, int, int, float*, void> glProgramUniform3fv;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, void> glProgramUniform3i;
|
||||
internal delegate* unmanaged<uint, int, int, int*, void> glProgramUniform3iv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, uint, void> glProgramUniform3ui;
|
||||
internal delegate* unmanaged<uint, int, int, uint*, void> glProgramUniform3uiv;
|
||||
internal delegate* unmanaged<uint, int, double, double, double, double, void> glProgramUniform4d;
|
||||
internal delegate* unmanaged<uint, int, int, double*, void> glProgramUniform4dv;
|
||||
internal delegate* unmanaged<uint, int, float, float, float, float, void> glProgramUniform4f;
|
||||
internal delegate* unmanaged<uint, int, int, float*, void> glProgramUniform4fv;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, void> glProgramUniform4i;
|
||||
internal delegate* unmanaged<uint, int, int, int*, void> glProgramUniform4iv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, uint, uint, void> glProgramUniform4ui;
|
||||
internal delegate* unmanaged<uint, int, int, uint*, void> glProgramUniform4uiv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix2dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix2fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix2x3dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix2x3fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix2x4dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix2x4fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix3dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix3fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix3x2dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix3x2fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix3x4dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix3x4fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix4dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix4fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix4x2dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix4x2fv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, double*, void> glProgramUniformMatrix4x3dv;
|
||||
internal delegate* unmanaged<uint, int, int, byte, float*, void> glProgramUniformMatrix4x3fv;
|
||||
internal delegate* unmanaged<uint, void> glProvokingVertex;
|
||||
internal delegate* unmanaged<uint, uint, int, byte*, void> glPushDebugGroup;
|
||||
internal delegate* unmanaged<uint, uint, void> glQueryCounter;
|
||||
internal delegate* unmanaged<uint, void> glReadBuffer;
|
||||
internal delegate* unmanaged<int, int, int, int, uint, uint, void*, void> glReadPixels;
|
||||
internal delegate* unmanaged<int, int, int, int, uint, uint, int, void*, void> glReadnPixels;
|
||||
internal delegate* unmanaged<void> glReleaseShaderCompiler;
|
||||
internal delegate* unmanaged<uint, uint, int, int, void> glRenderbufferStorage;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, void> glRenderbufferStorageMultisample;
|
||||
internal delegate* unmanaged<void> glResumeTransformFeedback;
|
||||
internal delegate* unmanaged<float, byte, void> glSampleCoverage;
|
||||
internal delegate* unmanaged<uint, uint, void> glSampleMaski;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glSamplerParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glSamplerParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float, void> glSamplerParameterf;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glSamplerParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glSamplerParameteri;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glSamplerParameteriv;
|
||||
internal delegate* unmanaged<int, int, int, int, void> glScissor;
|
||||
internal delegate* unmanaged<uint, int, int*, void> glScissorArrayv;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, void> glScissorIndexed;
|
||||
internal delegate* unmanaged<uint, int*, void> glScissorIndexedv;
|
||||
internal delegate* unmanaged<int, uint*, uint, void*, int, void> glShaderBinary;
|
||||
internal delegate* unmanaged<uint, int, byte**, int*, void> glShaderSource;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glShaderStorageBlockBinding;
|
||||
internal delegate* unmanaged<uint, byte*, uint, uint*, uint*, void> glSpecializeShader;
|
||||
internal delegate* unmanaged<uint, int, uint, void> glStencilFunc;
|
||||
internal delegate* unmanaged<uint, uint, int, uint, void> glStencilFuncSeparate;
|
||||
internal delegate* unmanaged<uint, void> glStencilMask;
|
||||
internal delegate* unmanaged<uint, uint, void> glStencilMaskSeparate;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glStencilOp;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void> glStencilOpSeparate;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glTexBuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, nint, void> glTexBufferRange;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, uint, uint, void*, void> glTexImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, uint, uint, void*, void> glTexImage2D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, byte, void> glTexImage2DMultisample;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, uint, uint, void*, void> glTexImage3D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, byte, void> glTexImage3DMultisample;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glTexParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glTexParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float, void> glTexParameterf;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glTexParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glTexParameteri;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glTexParameteriv;
|
||||
internal delegate* unmanaged<uint, int, uint, int, void> glTexStorage1D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, void> glTexStorage2D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, byte, void> glTexStorage2DMultisample;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, void> glTexStorage3D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, byte, void> glTexStorage3DMultisample;
|
||||
internal delegate* unmanaged<uint, int, int, int, uint, uint, void*, void> glTexSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, uint, uint, void*, void> glTexSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, uint, void*, void> glTexSubImage3D;
|
||||
internal delegate* unmanaged<void> glTextureBarrier;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glTextureBuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, nint, void> glTextureBufferRange;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glTextureParameterIiv;
|
||||
internal delegate* unmanaged<uint, uint, uint*, void> glTextureParameterIuiv;
|
||||
internal delegate* unmanaged<uint, uint, float, void> glTextureParameterf;
|
||||
internal delegate* unmanaged<uint, uint, float*, void> glTextureParameterfv;
|
||||
internal delegate* unmanaged<uint, uint, int, void> glTextureParameteri;
|
||||
internal delegate* unmanaged<uint, uint, int*, void> glTextureParameteriv;
|
||||
internal delegate* unmanaged<uint, int, uint, int, void> glTextureStorage1D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, void> glTextureStorage2D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, byte, void> glTextureStorage2DMultisample;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, void> glTextureStorage3D;
|
||||
internal delegate* unmanaged<uint, int, uint, int, int, int, byte, void> glTextureStorage3DMultisample;
|
||||
internal delegate* unmanaged<uint, int, int, int, uint, uint, void*, void> glTextureSubImage1D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, uint, uint, void*, void> glTextureSubImage2D;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, int, int, int, uint, uint, void*, void> glTextureSubImage3D;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, uint, uint, uint, uint, void> glTextureView;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glTransformFeedbackBufferBase;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, nint, void> glTransformFeedbackBufferRange;
|
||||
internal delegate* unmanaged<uint, int, byte**, uint, void> glTransformFeedbackVaryings;
|
||||
internal delegate* unmanaged<int, double, void> glUniform1d;
|
||||
internal delegate* unmanaged<int, int, double*, void> glUniform1dv;
|
||||
internal delegate* unmanaged<int, float, void> glUniform1f;
|
||||
internal delegate* unmanaged<int, int, float*, void> glUniform1fv;
|
||||
internal delegate* unmanaged<int, int, void> glUniform1i;
|
||||
internal delegate* unmanaged<int, int, int*, void> glUniform1iv;
|
||||
internal delegate* unmanaged<int, uint, void> glUniform1ui;
|
||||
internal delegate* unmanaged<int, int, uint*, void> glUniform1uiv;
|
||||
internal delegate* unmanaged<int, double, double, void> glUniform2d;
|
||||
internal delegate* unmanaged<int, int, double*, void> glUniform2dv;
|
||||
internal delegate* unmanaged<int, float, float, void> glUniform2f;
|
||||
internal delegate* unmanaged<int, int, float*, void> glUniform2fv;
|
||||
internal delegate* unmanaged<int, int, int, void> glUniform2i;
|
||||
internal delegate* unmanaged<int, int, int*, void> glUniform2iv;
|
||||
internal delegate* unmanaged<int, uint, uint, void> glUniform2ui;
|
||||
internal delegate* unmanaged<int, int, uint*, void> glUniform2uiv;
|
||||
internal delegate* unmanaged<int, double, double, double, void> glUniform3d;
|
||||
internal delegate* unmanaged<int, int, double*, void> glUniform3dv;
|
||||
internal delegate* unmanaged<int, float, float, float, void> glUniform3f;
|
||||
internal delegate* unmanaged<int, int, float*, void> glUniform3fv;
|
||||
internal delegate* unmanaged<int, int, int, int, void> glUniform3i;
|
||||
internal delegate* unmanaged<int, int, int*, void> glUniform3iv;
|
||||
internal delegate* unmanaged<int, uint, uint, uint, void> glUniform3ui;
|
||||
internal delegate* unmanaged<int, int, uint*, void> glUniform3uiv;
|
||||
internal delegate* unmanaged<int, double, double, double, double, void> glUniform4d;
|
||||
internal delegate* unmanaged<int, int, double*, void> glUniform4dv;
|
||||
internal delegate* unmanaged<int, float, float, float, float, void> glUniform4f;
|
||||
internal delegate* unmanaged<int, int, float*, void> glUniform4fv;
|
||||
internal delegate* unmanaged<int, int, int, int, int, void> glUniform4i;
|
||||
internal delegate* unmanaged<int, int, int*, void> glUniform4iv;
|
||||
internal delegate* unmanaged<int, uint, uint, uint, uint, void> glUniform4ui;
|
||||
internal delegate* unmanaged<int, int, uint*, void> glUniform4uiv;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glUniformBlockBinding;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix2dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix2fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix2x3dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix2x3fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix2x4dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix2x4fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix3dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix3fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix3x2dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix3x2fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix3x4dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix3x4fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix4dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix4fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix4x2dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix4x2fv;
|
||||
internal delegate* unmanaged<int, int, byte, double*, void> glUniformMatrix4x3dv;
|
||||
internal delegate* unmanaged<int, int, byte, float*, void> glUniformMatrix4x3fv;
|
||||
internal delegate* unmanaged<uint, int, uint*, void> glUniformSubroutinesuiv;
|
||||
internal delegate* unmanaged<uint, byte> glUnmapBuffer;
|
||||
internal delegate* unmanaged<uint, byte> glUnmapNamedBuffer;
|
||||
internal delegate* unmanaged<uint, void> glUseProgram;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glUseProgramStages;
|
||||
internal delegate* unmanaged<uint, void> glValidateProgram;
|
||||
internal delegate* unmanaged<uint, void> glValidateProgramPipeline;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glVertexArrayAttribBinding;
|
||||
internal delegate* unmanaged<uint, uint, int, uint, byte, uint, void> glVertexArrayAttribFormat;
|
||||
internal delegate* unmanaged<uint, uint, int, uint, uint, void> glVertexArrayAttribIFormat;
|
||||
internal delegate* unmanaged<uint, uint, int, uint, uint, void> glVertexArrayAttribLFormat;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glVertexArrayBindingDivisor;
|
||||
internal delegate* unmanaged<uint, uint, void> glVertexArrayElementBuffer;
|
||||
internal delegate* unmanaged<uint, uint, uint, nint, int, void> glVertexArrayVertexBuffer;
|
||||
internal delegate* unmanaged<uint, uint, int, uint*, nint*, int*, void> glVertexArrayVertexBuffers;
|
||||
internal delegate* unmanaged<uint, double, void> glVertexAttrib1d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttrib1dv;
|
||||
internal delegate* unmanaged<uint, float, void> glVertexAttrib1f;
|
||||
internal delegate* unmanaged<uint, float*, void> glVertexAttrib1fv;
|
||||
internal delegate* unmanaged<uint, short, void> glVertexAttrib1s;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttrib1sv;
|
||||
internal delegate* unmanaged<uint, double, double, void> glVertexAttrib2d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttrib2dv;
|
||||
internal delegate* unmanaged<uint, float, float, void> glVertexAttrib2f;
|
||||
internal delegate* unmanaged<uint, float*, void> glVertexAttrib2fv;
|
||||
internal delegate* unmanaged<uint, short, short, void> glVertexAttrib2s;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttrib2sv;
|
||||
internal delegate* unmanaged<uint, double, double, double, void> glVertexAttrib3d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttrib3dv;
|
||||
internal delegate* unmanaged<uint, float, float, float, void> glVertexAttrib3f;
|
||||
internal delegate* unmanaged<uint, float*, void> glVertexAttrib3fv;
|
||||
internal delegate* unmanaged<uint, short, short, short, void> glVertexAttrib3s;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttrib3sv;
|
||||
internal delegate* unmanaged<uint, sbyte*, void> glVertexAttrib4Nbv;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttrib4Niv;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttrib4Nsv;
|
||||
internal delegate* unmanaged<uint, byte, byte, byte, byte, void> glVertexAttrib4Nub;
|
||||
internal delegate* unmanaged<uint, byte*, void> glVertexAttrib4Nubv;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttrib4Nuiv;
|
||||
internal delegate* unmanaged<uint, ushort*, void> glVertexAttrib4Nusv;
|
||||
internal delegate* unmanaged<uint, sbyte*, void> glVertexAttrib4bv;
|
||||
internal delegate* unmanaged<uint, double, double, double, double, void> glVertexAttrib4d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttrib4dv;
|
||||
internal delegate* unmanaged<uint, float, float, float, float, void> glVertexAttrib4f;
|
||||
internal delegate* unmanaged<uint, float*, void> glVertexAttrib4fv;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttrib4iv;
|
||||
internal delegate* unmanaged<uint, short, short, short, short, void> glVertexAttrib4s;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttrib4sv;
|
||||
internal delegate* unmanaged<uint, byte*, void> glVertexAttrib4ubv;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttrib4uiv;
|
||||
internal delegate* unmanaged<uint, ushort*, void> glVertexAttrib4usv;
|
||||
internal delegate* unmanaged<uint, uint, void> glVertexAttribBinding;
|
||||
internal delegate* unmanaged<uint, uint, void> glVertexAttribDivisor;
|
||||
internal delegate* unmanaged<uint, int, uint, byte, uint, void> glVertexAttribFormat;
|
||||
internal delegate* unmanaged<uint, int, void> glVertexAttribI1i;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttribI1iv;
|
||||
internal delegate* unmanaged<uint, uint, void> glVertexAttribI1ui;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttribI1uiv;
|
||||
internal delegate* unmanaged<uint, int, int, void> glVertexAttribI2i;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttribI2iv;
|
||||
internal delegate* unmanaged<uint, uint, uint, void> glVertexAttribI2ui;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttribI2uiv;
|
||||
internal delegate* unmanaged<uint, int, int, int, void> glVertexAttribI3i;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttribI3iv;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, void> glVertexAttribI3ui;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttribI3uiv;
|
||||
internal delegate* unmanaged<uint, sbyte*, void> glVertexAttribI4bv;
|
||||
internal delegate* unmanaged<uint, int, int, int, int, void> glVertexAttribI4i;
|
||||
internal delegate* unmanaged<uint, int*, void> glVertexAttribI4iv;
|
||||
internal delegate* unmanaged<uint, short*, void> glVertexAttribI4sv;
|
||||
internal delegate* unmanaged<uint, byte*, void> glVertexAttribI4ubv;
|
||||
internal delegate* unmanaged<uint, uint, uint, uint, uint, void> glVertexAttribI4ui;
|
||||
internal delegate* unmanaged<uint, uint*, void> glVertexAttribI4uiv;
|
||||
internal delegate* unmanaged<uint, ushort*, void> glVertexAttribI4usv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, void> glVertexAttribIFormat;
|
||||
internal delegate* unmanaged<uint, int, uint, int, void*, void> glVertexAttribIPointer;
|
||||
internal delegate* unmanaged<uint, double, void> glVertexAttribL1d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttribL1dv;
|
||||
internal delegate* unmanaged<uint, double, double, void> glVertexAttribL2d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttribL2dv;
|
||||
internal delegate* unmanaged<uint, double, double, double, void> glVertexAttribL3d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttribL3dv;
|
||||
internal delegate* unmanaged<uint, double, double, double, double, void> glVertexAttribL4d;
|
||||
internal delegate* unmanaged<uint, double*, void> glVertexAttribL4dv;
|
||||
internal delegate* unmanaged<uint, int, uint, uint, void> glVertexAttribLFormat;
|
||||
internal delegate* unmanaged<uint, int, uint, int, void*, void> glVertexAttribLPointer;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint, void> glVertexAttribP1ui;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint*, void> glVertexAttribP1uiv;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint, void> glVertexAttribP2ui;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint*, void> glVertexAttribP2uiv;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint, void> glVertexAttribP3ui;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint*, void> glVertexAttribP3uiv;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint, void> glVertexAttribP4ui;
|
||||
internal delegate* unmanaged<uint, uint, byte, uint*, void> glVertexAttribP4uiv;
|
||||
internal delegate* unmanaged<uint, int, uint, byte, int, void*, void> glVertexAttribPointer;
|
||||
internal delegate* unmanaged<uint, uint, void> glVertexBindingDivisor;
|
||||
internal delegate* unmanaged<int, int, int, int, void> glViewport;
|
||||
internal delegate* unmanaged<uint, int, float*, void> glViewportArrayv;
|
||||
internal delegate* unmanaged<uint, float, float, float, float, void> glViewportIndexedf;
|
||||
internal delegate* unmanaged<uint, float*, void> glViewportIndexedfv;
|
||||
internal delegate* unmanaged<void*, uint, ulong, void> glWaitSync;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,669 @@
|
||||
// <auto-generated>
|
||||
// Generated by StgSharp.GenerateGL.
|
||||
// Native-address shadow of the OpenGL function pointer table.
|
||||
// </auto-generated>
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,163 +5,33 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp;
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Internal;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public abstract partial class glRender : RenderStream
|
||||
/// <summary>
|
||||
/// A set of OpenGL shader handles with their common stage type.
|
||||
/// </summary>
|
||||
public sealed record Shader
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Create an instance of <see cref="Shader" /> program
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// New instance of <see cref="Shader" /> instance.
|
||||
/// </returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
protected sealed override ShaderProgram CreateShaderProgram()
|
||||
{
|
||||
return new ShaderProgram(this);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
protected sealed override Shader CreateShaderSegment(
|
||||
ShaderType type,
|
||||
int count
|
||||
public Shader(
|
||||
GlHandle[] handles,
|
||||
ShaderType type
|
||||
)
|
||||
{
|
||||
return new Shader(GL.CreateShaderSet(count, type), type, this);
|
||||
ArgumentNullException.ThrowIfNull(handles);
|
||||
Handles = handles;
|
||||
Type = type;
|
||||
}
|
||||
|
||||
}
|
||||
public int Count => Handles.Length;
|
||||
|
||||
public class Shader
|
||||
{
|
||||
public GlHandle[] Handles { get; }
|
||||
|
||||
private readonly OpenGLFunction GL;
|
||||
internal readonly GlHandle[] handle;
|
||||
public readonly ShaderType type;
|
||||
public ShaderType Type { get; }
|
||||
|
||||
internal unsafe Shader(
|
||||
GlHandle[] handle,
|
||||
ShaderType usage,
|
||||
glRender stream
|
||||
)
|
||||
{
|
||||
this.handle = handle;
|
||||
GL = stream.GL;
|
||||
type = usage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attach one shader code to a shader program.
|
||||
/// </summary>
|
||||
/// <param _label="target">
|
||||
/// Shader program to attach
|
||||
/// </param>
|
||||
/// <param _label="index">
|
||||
/// Index of shader code in current shader code set.
|
||||
/// </param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void AttachTo(
|
||||
int index,
|
||||
[NotNull]ShaderProgram target
|
||||
)
|
||||
{
|
||||
GL.AttachShader(target.handle, handle[index]);
|
||||
}
|
||||
|
||||
public void CheckStatus(
|
||||
int index,
|
||||
ShaderStatus status
|
||||
)
|
||||
{
|
||||
string log = GL.GetShaderStatus(this, index, (int)status);
|
||||
if (!string.IsNullOrEmpty(log)) {
|
||||
throw new InvalidOperationException($"{$"Shader Error \t{status}\n"}{log}");
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void Compile(
|
||||
int index,
|
||||
ReadOnlySpan<byte> codeU8Stream
|
||||
)
|
||||
{
|
||||
GL.LoadShaderSource(handle[index], codeU8Stream);
|
||||
GL.CompileShader(handle[index]);
|
||||
CheckStatus(index, ShaderStatus.CompileStatus);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void Compile(
|
||||
int index,
|
||||
byte[] codeStream
|
||||
)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(codeStream);
|
||||
GL.LoadShaderSource(handle[index], codeStream);
|
||||
GL.CompileShader(handle[index]);
|
||||
CheckStatus(index, ShaderStatus.CompileStatus);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void Compile(
|
||||
int index,
|
||||
string codeStream
|
||||
)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(codeStream);
|
||||
GL.LoadShaderSource(handle[index], codeStream.AsSpan());
|
||||
GL.CompileShader(handle[index]);
|
||||
CheckStatus(index, ShaderStatus.CompileStatus);
|
||||
}
|
||||
|
||||
public void FromBytes(
|
||||
byte[] stream
|
||||
)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public static byte[] FromCodeFile(
|
||||
string fileRoute
|
||||
)
|
||||
{
|
||||
string str = File.ReadAllText(fileRoute);
|
||||
if (string.IsNullOrEmpty(str)) {
|
||||
throw new InvalidOperationException($"Cannot load and GLSL code from {fileRoute}");
|
||||
}
|
||||
return Encoding.UTF8.GetBytes(str);
|
||||
}
|
||||
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
return Array.Empty<byte>();
|
||||
}
|
||||
|
||||
public byte[] GetBytes(
|
||||
out int length
|
||||
)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"This is a {type} shader, its shader handles are {handle.ToString()}.";
|
||||
}
|
||||
public GlHandle this[int index] => Handles[index];
|
||||
|
||||
}
|
||||
|
||||
@@ -172,125 +42,8 @@ namespace StgSharp.Graphics.OpenGL
|
||||
|
||||
}
|
||||
|
||||
public class ShaderProgram
|
||||
{
|
||||
|
||||
private readonly OpenGLFunction GL;
|
||||
internal readonly GlHandle handle;
|
||||
|
||||
/// <summary>
|
||||
/// CustomizeInit a program with no shader attached.
|
||||
/// </summary>
|
||||
internal unsafe ShaderProgram(
|
||||
glRender binding
|
||||
)
|
||||
{
|
||||
GL = binding.GL;
|
||||
handle = GL.CreateProgram();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a uniform form current shader, the value type of the uniform should be provided.
|
||||
/// </summary>
|
||||
/// <param _label="name">
|
||||
/// ContextName of the Uniform in shader code
|
||||
/// </param>
|
||||
/// <returns>
|
||||
///
|
||||
/// </returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe Uniform<T> GetUniform<T>(
|
||||
string name
|
||||
) where T : unmanaged
|
||||
{
|
||||
return new Uniform<T>(GL.GetUniformLocation(this.handle, name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a uniform form current shader, the value type of the uniform should be provided.
|
||||
/// </summary>
|
||||
/// <param _label="name">
|
||||
/// ContextName of the Uniform in shader code
|
||||
/// </param>
|
||||
/// <returns>
|
||||
///
|
||||
/// </returns>
|
||||
public unsafe Uniform<T, U> GetUniform<T, U>(
|
||||
string name
|
||||
) where T : unmanaged where U : struct
|
||||
{
|
||||
return new Uniform<T, U>(GL.GetUniformLocation(this.handle, name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a uniform form current shader, the value type of the uniform should be provided.
|
||||
/// </summary>
|
||||
/// <param _label="name">
|
||||
/// ContextName of the Uniform in shader code
|
||||
/// </param>
|
||||
/// <returns>
|
||||
///
|
||||
/// </returns>
|
||||
public unsafe Uniform<T, U, V> GetUniform<T, U, V>(
|
||||
string name
|
||||
) where T : unmanaged where U : struct where V : struct
|
||||
{
|
||||
return new Uniform<T, U, V>(GL.GetUniformLocation(this.handle, name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a uniform form current shader, the value type of the uniform should be provided.
|
||||
/// </summary>
|
||||
/// <param _label="name">
|
||||
/// ContextName of the Uniform in shader code
|
||||
/// </param>
|
||||
/// <returns>
|
||||
///
|
||||
/// </returns>
|
||||
public unsafe Uniform<T, U, V, W> GetUniform<T, U, V, W>(
|
||||
string name
|
||||
) where T : unmanaged where U : struct where V : struct where W : struct
|
||||
{
|
||||
return new Uniform<T, U, V, W>(GL.GetUniformLocation(this.handle, name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Link the shader to current viewPortDisplay.
|
||||
/// </summary>
|
||||
public unsafe void Link()
|
||||
{
|
||||
if (GraphicFramework.InternalLinkShaderProgram(
|
||||
(OpenglContext*)this.GL.ContextHandle, handle.Value) == 0)
|
||||
{
|
||||
IntPtr logPtr = GraphicFramework.InternalReadSSCLog();
|
||||
try
|
||||
{
|
||||
byte[] logByte = new byte[512];
|
||||
Marshal.Copy(logPtr, logByte, 0, 512);
|
||||
string log = Encoding.UTF8.GetString(logByte);
|
||||
log = log.Replace("\0", string.Empty);
|
||||
DefaultLog.InternalWriteLog(log, LogType.Error);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
DefaultLog.InternalWriteLog(ex.Message, LogType.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Let the current viewPortDisplay use this shader.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void Use()
|
||||
{
|
||||
GL.UseProgram(handle);
|
||||
}
|
||||
|
||||
~ShaderProgram()
|
||||
{
|
||||
// handle.Dispose();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// An OpenGL shader-program handle.
|
||||
/// </summary>
|
||||
public readonly record struct ShaderProgram(GlHandle Handle);
|
||||
}
|
||||
|
||||
@@ -5,17 +5,19 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Mathematics.Graphics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public class Uniform
|
||||
public abstract class Uniform
|
||||
{
|
||||
|
||||
internal GlHandle id;
|
||||
internal readonly GlHandle id;
|
||||
|
||||
protected Uniform(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
id = handle;
|
||||
}
|
||||
|
||||
public GlHandle Handle => id;
|
||||
|
||||
@@ -24,48 +26,20 @@ namespace StgSharp.Graphics.OpenGL
|
||||
public sealed class Uniform<T> : Uniform where T : unmanaged
|
||||
{
|
||||
|
||||
internal Uniform() { }
|
||||
|
||||
internal unsafe Uniform(
|
||||
GlHandle id
|
||||
public Uniform(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
internal static Uniform<T> FromHandle(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
return new Uniform<T>
|
||||
{
|
||||
id = handle
|
||||
};
|
||||
}
|
||||
: base(handle) { }
|
||||
|
||||
}
|
||||
|
||||
public sealed class Uniform<T, U> : Uniform where T : unmanaged where U : struct
|
||||
{
|
||||
|
||||
internal Uniform() { }
|
||||
|
||||
internal unsafe Uniform(
|
||||
GlHandle id
|
||||
public Uniform(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
internal static Uniform<T, U> FromHandle(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
return new Uniform<T, U>
|
||||
{
|
||||
id = handle
|
||||
};
|
||||
}
|
||||
: base(handle) { }
|
||||
|
||||
}
|
||||
|
||||
@@ -73,24 +47,10 @@ namespace StgSharp.Graphics.OpenGL
|
||||
where V : struct
|
||||
{
|
||||
|
||||
internal Uniform() { }
|
||||
|
||||
internal unsafe Uniform(
|
||||
GlHandle id
|
||||
public Uniform(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
internal static Uniform<T, U, V> FromHandle(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
return new Uniform<T, U, V>
|
||||
{
|
||||
id = handle
|
||||
};
|
||||
}
|
||||
: base(handle) { }
|
||||
|
||||
}
|
||||
|
||||
@@ -99,107 +59,10 @@ namespace StgSharp.Graphics.OpenGL
|
||||
where W : struct
|
||||
{
|
||||
|
||||
internal Uniform() { }
|
||||
|
||||
internal unsafe Uniform(
|
||||
GlHandle id
|
||||
public Uniform(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
internal static Uniform<T, U, V, W> FromHandle(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
return new Uniform<T, U, V, W>
|
||||
{
|
||||
id = handle
|
||||
};
|
||||
}
|
||||
: base(handle) { }
|
||||
|
||||
}
|
||||
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull] Uniform<GraphicsMatrix> uniform,
|
||||
GraphicsMatrix mat
|
||||
)
|
||||
{
|
||||
Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, (byte)0, (float*)&mat);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull]Uniform<float, float, float, float> uniform,
|
||||
Vec4 vec
|
||||
)
|
||||
{
|
||||
Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull]Uniform<Vec4> uniform,
|
||||
Vec4 vec
|
||||
)
|
||||
{
|
||||
Context.glUniform1fv(uniform.id.SignedValue, 4, (float*)&vec);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull]Uniform<float> uniform,
|
||||
float v0
|
||||
)
|
||||
{
|
||||
Context.glUniform1f(uniform.id.SignedValue, v0);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull]Uniform<int> uniform,
|
||||
int i0
|
||||
)
|
||||
{
|
||||
Context.glUniform1i(uniform.id.SignedValue, i0);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull] Uniform<float, float> uniform,
|
||||
float v0,
|
||||
float v1
|
||||
)
|
||||
{
|
||||
Context.glUniform2f(uniform.id.SignedValue, v0, v1);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull] Uniform<float, float, float> uniform,
|
||||
float v0,
|
||||
float v1,
|
||||
float v2
|
||||
)
|
||||
{
|
||||
Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetUniformValue(
|
||||
[NotNull] Uniform<float, float, float, float> uniform,
|
||||
float v0,
|
||||
float v1,
|
||||
float v2,
|
||||
float v3
|
||||
)
|
||||
{
|
||||
Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glConst"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
// rename types in style of glConst
|
||||
|
||||
public static class glAttachment
|
||||
{
|
||||
|
||||
public const uint Depth = glConst.DEPTH_ATTACHMENT;
|
||||
public const uint DepthAndStencil = glConst.DEPTH_STENCIL_ATTACHMENT;
|
||||
public const uint Stencil = glConst.STENCIL_ATTACHMENT;
|
||||
|
||||
public static uint Color(
|
||||
int i
|
||||
)
|
||||
{
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(i);
|
||||
return (uint)(glConst.COLOR_ATTACHMENT0 + i);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,675 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glContext"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial struct OpenglContext
|
||||
{
|
||||
|
||||
internal unsafe delegate*<uint, uint, void> glActiveShaderProgram;
|
||||
internal unsafe delegate*<uint, void> glActiveTexture;
|
||||
internal unsafe delegate*<uint, uint, void> glAttachShader;
|
||||
internal unsafe delegate*<uint, uint, void> glBeginConditionalRender;
|
||||
internal unsafe delegate*<uint, uint, void> glBeginQuery;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glBeginQueryIndexed;
|
||||
internal unsafe delegate*<uint, void> glBeginTransformFeedback;
|
||||
internal unsafe delegate*<uint, uint, byte*, void> glBindAttribLocation;
|
||||
internal unsafe delegate*<uint, uint, void> glBindBuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glBindBufferBase;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, nuint, void> glBindBufferRange;
|
||||
internal unsafe delegate*<uint, uint, int, uint*, void> glBindBuffersBase;
|
||||
internal unsafe delegate*<uint, uint, int, uint*, nint*, nuint*, void> glBindBuffersRange;
|
||||
internal unsafe delegate*<uint, uint, byte*, void> glBindFragDataLocation;
|
||||
internal unsafe delegate*<uint, uint, uint, byte*, void> glBindFragDataLocationIndexed;
|
||||
internal unsafe delegate*<uint, uint, void> glBindFramebuffer;
|
||||
internal unsafe delegate*<uint, uint, int, byte, int, uint, uint, void> glBindImageTexture;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glBindImageTextures;
|
||||
internal unsafe delegate*<uint, void> glBindProgramPipeline;
|
||||
internal unsafe delegate*<uint, uint, void> glBindRenderbuffer;
|
||||
internal unsafe delegate*<uint, uint, void> glBindSampler;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glBindSamplers;
|
||||
internal unsafe delegate*<uint, uint, void> glBindTexture;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glBindTextures;
|
||||
internal unsafe delegate*<uint, uint, void> glBindTextureUnit;
|
||||
internal unsafe delegate*<uint, uint, void> glBindTransformFeedback;
|
||||
internal unsafe delegate*<uint, void> glBindVertexArray;
|
||||
internal unsafe delegate*<uint, uint, nint, int, void> glBindVertexBuffer;
|
||||
internal unsafe delegate*<uint, int, uint*, nint*, int*, void> glBindVertexBuffers;
|
||||
internal unsafe delegate*<float, float, float, float, void> glBlendColor;
|
||||
internal unsafe delegate*<uint, void> glBlendEquation;
|
||||
internal unsafe delegate*<uint, uint, void> glBlendEquationi;
|
||||
internal unsafe delegate*<uint, uint, void> glBlendEquationSeparate;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glBlendEquationSeparatei;
|
||||
internal unsafe delegate*<uint, uint, void> glBlendFunc;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glBlendFunci;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, void> glBlendFuncSeparate;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, uint, void> glBlendFuncSeparatei;
|
||||
internal unsafe delegate*<int, int, int, int, int, int, int, int, uint, uint, void> glBlitFramebuffer;
|
||||
internal unsafe delegate*<uint, uint, int, int, int, int, int, int, int, int, uint, uint, void> glBlitNamedFramebuffer;
|
||||
internal unsafe delegate*<uint, nuint, IntPtr*, uint, void> glBufferData;
|
||||
internal unsafe delegate*<uint, nuint, IntPtr*, uint, void> glBufferStorage;
|
||||
internal unsafe delegate*<uint, nint, nuint, IntPtr*, void> glBufferSubData;
|
||||
internal unsafe delegate*<uint, uint> glCheckFramebufferStatus;
|
||||
internal unsafe delegate*<uint, uint, uint> glCheckNamedFramebufferStatus;
|
||||
internal unsafe delegate*<uint, uint, void> glClampColor;
|
||||
internal unsafe delegate*<uint, void> glClear;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, IntPtr*, void> glClearBufferData;
|
||||
internal unsafe delegate*<uint, int, float, int, void> glClearBufferfi;
|
||||
internal unsafe delegate*<uint, int, float*, void> glClearBufferfv;
|
||||
internal unsafe delegate*<uint, int, int*, void> glClearBufferiv;
|
||||
internal unsafe delegate*<uint, uint, nint, nuint, uint, uint, IntPtr*, void> glClearBufferSubData;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glClearBufferuiv;
|
||||
internal unsafe delegate*<float, float, float, float, void> glClearColor;
|
||||
internal unsafe delegate*<double, void> glClearDepth;
|
||||
internal unsafe delegate*<float, void> glClearDepthf;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, IntPtr*, void> glClearNamedBufferData;
|
||||
internal unsafe delegate*<uint, uint, nint, nuint, uint, uint, IntPtr*, void> glClearNamedBufferSubData;
|
||||
internal unsafe delegate*<uint, uint, int, float, int, void> glClearNamedFramebufferfi;
|
||||
internal unsafe delegate*<uint, uint, int, float*, void> glClearNamedFramebufferfv;
|
||||
internal unsafe delegate*<uint, uint, int, int*, void> glClearNamedFramebufferiv;
|
||||
internal unsafe delegate*<uint, uint, int, uint*, void> glClearNamedFramebufferuiv;
|
||||
internal unsafe delegate*<int, void> glClearStencil;
|
||||
internal unsafe delegate*<uint, int, uint, uint, IntPtr*, void> glClearTexImage;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, uint, IntPtr*, void> glClearTexSubImage;
|
||||
internal unsafe delegate*<glSync, uint, IntPtr, uint> glClientWaitSync;
|
||||
internal unsafe delegate*<uint, uint, void> glClipControl;
|
||||
internal unsafe delegate*<byte, byte, byte, byte, void> glColorMask;
|
||||
internal unsafe delegate*<uint, byte, byte, byte, byte, void> glColorMaski;
|
||||
internal unsafe delegate*<uint, void> glCompileShader;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, IntPtr*, void> glCompressedTexImage1D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, int, IntPtr*, void> glCompressedTexImage2D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, int, int, IntPtr*, void> glCompressedTexImage3D;
|
||||
internal unsafe delegate*<uint, int, int, int, uint, int, IntPtr*, void> glCompressedTexSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, uint, int, IntPtr*, void> glCompressedTexSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, int, IntPtr*, void> glCompressedTexSubImage3D;
|
||||
internal unsafe delegate*<uint, int, int, int, uint, int, IntPtr*, void> glCompressedTextureSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, uint, int, IntPtr*, void> glCompressedTextureSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, int, IntPtr*, void> glCompressedTextureSubImage3D;
|
||||
internal unsafe delegate*<uint, uint, nint, nint, nuint, void> glCopyBufferSubData;
|
||||
internal unsafe delegate*<uint, uint, int, int, int, int, uint, uint, int, int, int, int, int, int, int, void> glCopyImageSubData;
|
||||
internal unsafe delegate*<uint, uint, nint, nint, nuint, void> glCopyNamedBufferSubData;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, int, void> glCopyTexImage1D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, int, int, void> glCopyTexImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, void> glCopyTexSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, void> glCopyTexSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, int, void> glCopyTexSubImage3D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, void> glCopyTextureSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, void> glCopyTextureSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, int, void> glCopyTextureSubImage3D;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateBuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateFramebuffers;
|
||||
internal unsafe delegate*<uint> glCreateProgram;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateProgramPipelines;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glCreateQueries;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateRenderbuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateSamplers;
|
||||
internal unsafe delegate*<uint, uint> glCreateShader;
|
||||
internal unsafe delegate*<uint, int, byte*, uint> glCreateShaderProgramv;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glCreateTextures;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateTransformFeedbacks;
|
||||
internal unsafe delegate*<int, uint*, void> glCreateVertexArrays;
|
||||
internal unsafe delegate*<uint, void> glCullFace;
|
||||
internal unsafe delegate*<IntPtr, IntPtr*, void> glDebugMessageCallback;
|
||||
internal unsafe delegate*<uint, uint, uint, int, uint*, byte, void> glDebugMessageControl;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, int, byte*, void> glDebugMessageInsert;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteBuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteFramebuffers;
|
||||
internal unsafe delegate*<uint, void> glDeleteProgram;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteProgramPipelines;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteQueries;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteRenderbuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteSamplers;
|
||||
internal unsafe delegate*<uint, void> glDeleteShader;
|
||||
internal unsafe delegate*<glSync, void> glDeleteSync;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteTextures;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteTransformFeedbacks;
|
||||
internal unsafe delegate*<int, uint*, void> glDeleteVertexArrays;
|
||||
internal unsafe delegate*<uint, void> glDepthFunc;
|
||||
internal unsafe delegate*<byte, void> glDepthMask;
|
||||
internal unsafe delegate*<double, double, void> glDepthRange;
|
||||
internal unsafe delegate*<uint, int, double*, void> glDepthRangeArrayv;
|
||||
internal unsafe delegate*<float, float, void> glDepthRangef;
|
||||
internal unsafe delegate*<uint, double, double, void> glDepthRangeIndexed;
|
||||
internal unsafe delegate*<uint, uint, void> glDetachShader;
|
||||
internal unsafe delegate*<uint, void> glDisable;
|
||||
internal unsafe delegate*<uint, uint, void> glDisablei;
|
||||
internal unsafe delegate*<uint, uint, void> glDisableVertexArrayAttrib;
|
||||
internal unsafe delegate*<uint, void> glDisableVertexAttribArray;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glDispatchCompute;
|
||||
internal unsafe delegate*<nint, void> glDispatchComputeIndirect;
|
||||
internal unsafe delegate*<uint, int, int, void> glDrawArrays;
|
||||
internal unsafe delegate*<uint, IntPtr*, void> glDrawArraysIndirect;
|
||||
internal unsafe delegate*<uint, int, int, int, void> glDrawArraysInstanced;
|
||||
internal unsafe delegate*<uint, int, int, int, uint, void> glDrawArraysInstancedBaseInstance;
|
||||
internal unsafe delegate*<uint, void> glDrawBuffer;
|
||||
internal unsafe delegate*<int, uint*, void> glDrawBuffers;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, void> glDrawElements;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, int, void> glDrawElementsBaseVertex;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glDrawElementsIndirect;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, int, void> glDrawElementsInstanced;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, int, uint, void> glDrawElementsInstancedBaseInstance;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, int, int, void> glDrawElementsInstancedBaseVertex;
|
||||
internal unsafe delegate*<uint, int, uint, IntPtr*, int, int, uint, void> glDrawElementsInstancedBaseVertexBaseInstance;
|
||||
internal unsafe delegate*<uint, uint, uint, int, uint, IntPtr*, void> glDrawRangeElements;
|
||||
internal unsafe delegate*<uint, uint, uint, int, uint, IntPtr*, int, void> glDrawRangeElementsBaseVertex;
|
||||
internal unsafe delegate*<uint, uint, void> glDrawTransformFeedback;
|
||||
internal unsafe delegate*<uint, uint, int, void> glDrawTransformFeedbackInstanced;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glDrawTransformFeedbackStream;
|
||||
internal unsafe delegate*<uint, uint, uint, int, void> glDrawTransformFeedbackStreamInstanced;
|
||||
internal unsafe delegate*<uint, void> glEnable;
|
||||
internal unsafe delegate*<uint, uint, void> glEnablei;
|
||||
internal unsafe delegate*<uint, uint, void> glEnableVertexArrayAttrib;
|
||||
internal unsafe delegate*<uint, void> glEnableVertexAttribArray;
|
||||
internal unsafe delegate*<void> glEndConditionalRender;
|
||||
internal unsafe delegate*<uint, void> glEndQuery;
|
||||
internal unsafe delegate*<uint, uint, void> glEndQueryIndexed;
|
||||
internal unsafe delegate*<void> glEndTransformFeedback;
|
||||
internal unsafe delegate*<uint, uint, glSync> glFenceSync;
|
||||
internal unsafe delegate*<void> glFinish;
|
||||
internal unsafe delegate*<void> glFlush;
|
||||
internal unsafe delegate*<uint, nint, nuint, void> glFlushMappedBufferRange;
|
||||
internal unsafe delegate*<uint, nint, nuint, void> glFlushMappedNamedBufferRange;
|
||||
internal unsafe delegate*<uint, uint, int, void> glFramebufferParameteri;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, void> glFramebufferRenderbuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, int, void> glFramebufferTexture;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, int, void> glFramebufferTexture1D;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, int, void> glFramebufferTexture2D;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, int, int, void> glFramebufferTexture3D;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int, void> glFramebufferTextureLayer;
|
||||
internal unsafe delegate*<uint, void> glFrontFace;
|
||||
internal unsafe delegate*<int, uint*, void> glGenBuffers;
|
||||
internal unsafe delegate*<uint, void> glGenerateMipmap;
|
||||
internal unsafe delegate*<uint, void> glGenerateTextureMipmap;
|
||||
internal unsafe delegate*<int, uint*, void> glGenFramebuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glGenProgramPipelines;
|
||||
internal unsafe delegate*<int, uint*, void> glGenQueries;
|
||||
internal unsafe delegate*<int, uint*, void> glGenRenderbuffers;
|
||||
internal unsafe delegate*<int, uint*, void> glGenSamplers;
|
||||
internal unsafe delegate*<int, uint*, void> glGenTextures;
|
||||
internal unsafe delegate*<int, uint*, void> glGenTransformFeedbacks;
|
||||
internal unsafe delegate*<int, uint*, void> glGenVertexArrays;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetActiveAtomicCounterBufferiv;
|
||||
internal unsafe delegate*<uint, uint, int, int*, int*, uint*, byte*, void> glGetActiveAttrib;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int*, byte*, void> glGetActiveSubroutineName;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, int*, void> glGetActiveSubroutineUniformiv;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int*, byte*, void> glGetActiveSubroutineUniformName;
|
||||
internal unsafe delegate*<uint, uint, int, int*, int*, uint*, byte*, void> glGetActiveUniform;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetActiveUniformBlockiv;
|
||||
internal unsafe delegate*<uint, uint, int, int*, byte*, void> glGetActiveUniformBlockName;
|
||||
internal unsafe delegate*<uint, uint, int, int*, byte*, void> glGetActiveUniformName;
|
||||
internal unsafe delegate*<uint, int, uint*, uint, int*, void> glGetActiveUniformsiv;
|
||||
internal unsafe delegate*<uint, int, int*, uint*, void> glGetAttachedShaders;
|
||||
internal unsafe delegate*<uint, byte*, int> glGetAttribLocation;
|
||||
internal unsafe delegate*<uint, uint, byte*, void> glGetBooleani_v;
|
||||
internal unsafe delegate*<uint, byte*, void> glGetBooleanv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetBufferParameteri64v;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetBufferParameteriv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetBufferPointerv;
|
||||
internal unsafe delegate*<uint, nint, nuint, IntPtr*, void> glGetBufferSubData;
|
||||
internal unsafe delegate*<uint, int, IntPtr*, void> glGetCompressedTexImage;
|
||||
internal unsafe delegate*<uint, int, int, IntPtr*, void> glGetCompressedTextureImage;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, int, IntPtr*, void> glGetCompressedTextureSubImage;
|
||||
internal unsafe delegate*<uint, int, uint*, uint*, uint*, uint*, int*, byte*, uint> glGetDebugMessageLog;
|
||||
internal unsafe delegate*<uint, uint, double*, void> glGetDoublei_v;
|
||||
internal unsafe delegate*<uint, double*, void> glGetDoublev;
|
||||
internal unsafe delegate*<uint> glGetError;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetFloati_v;
|
||||
internal unsafe delegate*<uint, float*, void> glGetFloatv;
|
||||
internal unsafe delegate*<uint, byte*, int> glGetFragDataIndex;
|
||||
internal unsafe delegate*<uint, byte*, int> glGetFragDataLocation;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetFramebufferAttachmentParameteriv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetFramebufferParameteriv;
|
||||
internal unsafe delegate*<uint> glGetGraphicsResetStatus;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetInteger64i_v;
|
||||
internal unsafe delegate*<uint, IntPtr*, void> glGetInteger64v;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetIntegeri_v;
|
||||
internal unsafe delegate*<uint, int*, void> glGetIntegerv;
|
||||
internal unsafe delegate*<uint, uint, uint, int, IntPtr*, void> glGetInternalformati64v;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int*, void> glGetInternalformativ;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetMultisamplefv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetNamedBufferParameteri64v;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetNamedBufferParameteriv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetNamedBufferPointerv;
|
||||
internal unsafe delegate*<uint, nint, nuint, IntPtr*, void> glGetNamedBufferSubData;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetNamedFramebufferAttachmentParameteriv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetNamedFramebufferParameteriv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetNamedRenderbufferParameteriv;
|
||||
internal unsafe delegate*<uint, int, int, IntPtr*, void> glGetnCompressedTexImage;
|
||||
internal unsafe delegate*<uint, int, uint, uint, int, IntPtr*, void> glGetnTexImage;
|
||||
internal unsafe delegate*<uint, int, int, double*, void> glGetnUniformdv;
|
||||
internal unsafe delegate*<uint, int, int, float*, void> glGetnUniformfv;
|
||||
internal unsafe delegate*<uint, int, int, int*, void> glGetnUniformiv;
|
||||
internal unsafe delegate*<uint, int, int, uint*, void> glGetnUniformuiv;
|
||||
internal unsafe delegate*<uint, uint, int, int*, byte*, void> glGetObjectLabel;
|
||||
internal unsafe delegate*<IntPtr*, int, int*, byte*, void> glGetObjectPtrLabel;
|
||||
internal unsafe delegate*<uint, IntPtr*, void> glGetPointerv;
|
||||
internal unsafe delegate*<uint, int, int*, uint*, IntPtr*, void> glGetProgramBinary;
|
||||
internal unsafe delegate*<uint, int, int*, byte*, void> glGetProgramInfoLog;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetProgramInterfaceiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetProgramiv;
|
||||
internal unsafe delegate*<uint, int, int*, byte*, void> glGetProgramPipelineInfoLog;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetProgramPipelineiv;
|
||||
internal unsafe delegate*<uint, uint, byte*, uint> glGetProgramResourceIndex;
|
||||
internal unsafe delegate*<uint, uint, uint, int, uint*, int, int*, int*, void> glGetProgramResourceiv;
|
||||
internal unsafe delegate*<uint, uint, byte*, int> glGetProgramResourceLocation;
|
||||
internal unsafe delegate*<uint, uint, byte*, int> glGetProgramResourceLocationIndex;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int*, byte*, void> glGetProgramResourceName;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetProgramStageiv;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, void> glGetQueryBufferObjecti64v;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, void> glGetQueryBufferObjectiv;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, void> glGetQueryBufferObjectui64v;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, void> glGetQueryBufferObjectuiv;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetQueryIndexediv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetQueryiv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetQueryObjecti64v;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetQueryObjectiv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetQueryObjectui64v;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glGetQueryObjectuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetRenderbufferParameteriv;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetSamplerParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetSamplerParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glGetSamplerParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetSamplerParameteriv;
|
||||
internal unsafe delegate*<uint, int, int*, byte*, void> glGetShaderInfoLog;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetShaderiv;
|
||||
internal unsafe delegate*<uint, uint, int*, int*, void> glGetShaderPrecisionFormat;
|
||||
internal unsafe delegate*<uint, int, int*, byte*, void> glGetShaderSource;
|
||||
internal unsafe delegate*<uint, byte*> glGetString;
|
||||
internal unsafe delegate*<uint, uint, byte*> glGetStringi;
|
||||
internal unsafe delegate*<uint, uint, byte*, uint> glGetSubroutineIndex;
|
||||
internal unsafe delegate*<uint, uint, byte*, int> glGetSubroutineUniformLocation;
|
||||
internal unsafe delegate*<glSync, uint, int, int*, int*, void> glGetSynciv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, IntPtr*, void> glGetTexImage;
|
||||
internal unsafe delegate*<uint, int, uint, float*, void> glGetTexLevelParameterfv;
|
||||
internal unsafe delegate*<uint, int, uint, int*, void> glGetTexLevelParameteriv;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetTexParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetTexParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glGetTexParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetTexParameteriv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, int, IntPtr*, void> glGetTextureImage;
|
||||
internal unsafe delegate*<uint, int, uint, float*, void> glGetTextureLevelParameterfv;
|
||||
internal unsafe delegate*<uint, int, uint, int*, void> glGetTextureLevelParameteriv;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetTextureParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetTextureParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glGetTextureParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetTextureParameteriv;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, uint, int, IntPtr*, void> glGetTextureSubImage;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetTransformFeedbacki_v;
|
||||
internal unsafe delegate*<uint, uint, uint, IntPtr*, void> glGetTransformFeedbacki64_v;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetTransformFeedbackiv;
|
||||
internal unsafe delegate*<uint, uint, int, int*, int*, uint*, byte*, void> glGetTransformFeedbackVarying;
|
||||
internal unsafe delegate*<uint, byte*, uint> glGetUniformBlockIndex;
|
||||
internal unsafe delegate*<uint, int, double*, void> glGetUniformdv;
|
||||
internal unsafe delegate*<uint, int, float*, void> glGetUniformfv;
|
||||
internal unsafe delegate*<uint, int, byte*, uint*, void> glGetUniformIndices;
|
||||
internal unsafe delegate*<uint, int, int*, void> glGetUniformiv;
|
||||
internal unsafe delegate*<uint, byte*, int> glGetUniformLocation;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glGetUniformSubroutineuiv;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glGetUniformuiv;
|
||||
internal unsafe delegate*<uint, uint, uint, IntPtr*, void> glGetVertexArrayIndexed64iv;
|
||||
internal unsafe delegate*<uint, uint, uint, int*, void> glGetVertexArrayIndexediv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetVertexArrayiv;
|
||||
internal unsafe delegate*<uint, uint, double*, void> glGetVertexAttribdv;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glGetVertexAttribfv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetVertexAttribIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glGetVertexAttribIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glGetVertexAttribiv;
|
||||
internal unsafe delegate*<uint, uint, double*, void> glGetVertexAttribLdv;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, void> glGetVertexAttribPointerv;
|
||||
internal unsafe delegate*<uint, uint, void> glHint;
|
||||
internal unsafe delegate*<uint, void> glInvalidateBufferData;
|
||||
internal unsafe delegate*<uint, nint, nuint, void> glInvalidateBufferSubData;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glInvalidateFramebuffer;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glInvalidateNamedFramebufferData;
|
||||
internal unsafe delegate*<uint, int, uint*, int, int, int, int, void> glInvalidateNamedFramebufferSubData;
|
||||
internal unsafe delegate*<uint, int, uint*, int, int, int, int, void> glInvalidateSubFramebuffer;
|
||||
internal unsafe delegate*<uint, int, void> glInvalidateTexImage;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, void> glInvalidateTexSubImage;
|
||||
internal unsafe delegate*<uint, byte> glIsBuffer;
|
||||
internal unsafe delegate*<uint, byte> glIsEnabled;
|
||||
internal unsafe delegate*<uint, uint, byte> glIsEnabledi;
|
||||
internal unsafe delegate*<uint, byte> glIsFramebuffer;
|
||||
internal unsafe delegate*<uint, byte> glIsProgram;
|
||||
internal unsafe delegate*<uint, byte> glIsProgramPipeline;
|
||||
internal unsafe delegate*<uint, byte> glIsQuery;
|
||||
internal unsafe delegate*<uint, byte> glIsRenderbuffer;
|
||||
internal unsafe delegate*<uint, byte> glIsSampler;
|
||||
internal unsafe delegate*<uint, byte> glIsShader;
|
||||
internal unsafe delegate*<glSync, byte> glIsSync;
|
||||
internal unsafe delegate*<uint, byte> glIsTexture;
|
||||
internal unsafe delegate*<uint, byte> glIsTransformFeedback;
|
||||
internal unsafe delegate*<uint, byte> glIsVertexArray;
|
||||
internal unsafe delegate*<float, void> glLineWidth;
|
||||
internal unsafe delegate*<uint, void> glLinkProgram;
|
||||
internal unsafe delegate*<uint, void> glLogicOp;
|
||||
internal unsafe delegate*<uint, uint, void*> glMapBuffer;
|
||||
internal unsafe delegate*<uint, nint, nuint, uint, void*> glMapBufferRange;
|
||||
internal unsafe delegate*<uint, uint, void*> glMapNamedBuffer;
|
||||
internal unsafe delegate*<uint, nint, nuint, uint, void*> glMapNamedBufferRange;
|
||||
internal unsafe delegate*<uint, void> glMemoryBarrier;
|
||||
internal unsafe delegate*<uint, void> glMemoryBarrierByRegion;
|
||||
internal unsafe delegate*<float, void> glMinSampleShading;
|
||||
internal unsafe delegate*<uint, int*, int*, int, void> glMultiDrawArrays;
|
||||
internal unsafe delegate*<uint, IntPtr*, int, int, void> glMultiDrawArraysIndirect;
|
||||
internal unsafe delegate*<uint, IntPtr*, nint, int, int, void> glMultiDrawArraysIndirectCount;
|
||||
internal unsafe delegate*<uint, int*, uint, IntPtr*, int, void> glMultiDrawElements;
|
||||
internal unsafe delegate*<uint, int*, uint, IntPtr*, int, int*, void> glMultiDrawElementsBaseVertex;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, int, int, void> glMultiDrawElementsIndirect;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, nint, int, int, void> glMultiDrawElementsIndirectCount;
|
||||
internal unsafe delegate*<uint, nuint, IntPtr*, uint, void> glNamedBufferData;
|
||||
internal unsafe delegate*<uint, nuint, IntPtr*, uint, void> glNamedBufferStorage;
|
||||
internal unsafe delegate*<uint, nint, nuint, IntPtr*, void> glNamedBufferSubData;
|
||||
internal unsafe delegate*<uint, uint, void> glNamedFramebufferDrawBuffer;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glNamedFramebufferDrawBuffers;
|
||||
internal unsafe delegate*<uint, uint, int, void> glNamedFramebufferParameteri;
|
||||
internal unsafe delegate*<uint, uint, void> glNamedFramebufferReadBuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, void> glNamedFramebufferRenderbuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, int, void> glNamedFramebufferTexture;
|
||||
internal unsafe delegate*<uint, uint, uint, int, int, void> glNamedFramebufferTextureLayer;
|
||||
internal unsafe delegate*<uint, uint, int, int, void> glNamedRenderbufferStorage;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, void> glNamedRenderbufferStorageMultisample;
|
||||
internal unsafe delegate*<uint, uint, int, byte*, void> glObjectLabel;
|
||||
internal unsafe delegate*<IntPtr*, int, byte*, void> glObjectPtrLabel;
|
||||
internal unsafe delegate*<uint, float*, void> glPatchParameterfv;
|
||||
internal unsafe delegate*<uint, int, void> glPatchParameteri;
|
||||
internal unsafe delegate*<void> glPauseTransformFeedback;
|
||||
internal unsafe delegate*<uint, float, void> glPixelStoref;
|
||||
internal unsafe delegate*<uint, int, void> glPixelStorei;
|
||||
internal unsafe delegate*<uint, float, void> glPointParameterf;
|
||||
internal unsafe delegate*<uint, float*, void> glPointParameterfv;
|
||||
internal unsafe delegate*<uint, int, void> glPointParameteri;
|
||||
internal unsafe delegate*<uint, int*, void> glPointParameteriv;
|
||||
internal unsafe delegate*<float, void> glPointSize;
|
||||
internal unsafe delegate*<uint, uint, void> glPolygonMode;
|
||||
internal unsafe delegate*<float, float, void> glPolygonOffset;
|
||||
internal unsafe delegate*<float, float, float, void> glPolygonOffsetClamp;
|
||||
internal unsafe delegate*<void> glPopDebugGroup;
|
||||
internal unsafe delegate*<uint, void> glPrimitiveRestartIndex;
|
||||
internal unsafe delegate*<uint, uint, IntPtr*, int, void> glProgramBinary;
|
||||
internal unsafe delegate*<uint, uint, int, void> glProgramParameteri;
|
||||
internal unsafe delegate*<uint, int, double, void> glProgramUniform1d;
|
||||
internal unsafe delegate*<uint, int, int, double*, void> glProgramUniform1dv;
|
||||
internal unsafe delegate*<uint, int, float, void> glProgramUniform1f;
|
||||
internal unsafe delegate*<uint, int, int, float*, void> glProgramUniform1fv;
|
||||
internal unsafe delegate*<uint, int, int, void> glProgramUniform1i;
|
||||
internal unsafe delegate*<uint, int, int, int*, void> glProgramUniform1iv;
|
||||
internal unsafe delegate*<uint, int, uint, void> glProgramUniform1ui;
|
||||
internal unsafe delegate*<uint, int, int, uint*, void> glProgramUniform1uiv;
|
||||
internal unsafe delegate*<uint, int, double, double, void> glProgramUniform2d;
|
||||
internal unsafe delegate*<uint, int, int, double*, void> glProgramUniform2dv;
|
||||
internal unsafe delegate*<uint, int, float, float, void> glProgramUniform2f;
|
||||
internal unsafe delegate*<uint, int, int, float*, void> glProgramUniform2fv;
|
||||
internal unsafe delegate*<uint, int, int, int, void> glProgramUniform2i;
|
||||
internal unsafe delegate*<uint, int, int, int*, void> glProgramUniform2iv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, void> glProgramUniform2ui;
|
||||
internal unsafe delegate*<uint, int, int, uint*, void> glProgramUniform2uiv;
|
||||
internal unsafe delegate*<uint, int, double, double, double, void> glProgramUniform3d;
|
||||
internal unsafe delegate*<uint, int, int, double*, void> glProgramUniform3dv;
|
||||
internal unsafe delegate*<uint, int, float, float, float, void> glProgramUniform3f;
|
||||
internal unsafe delegate*<uint, int, int, float*, void> glProgramUniform3fv;
|
||||
internal unsafe delegate*<uint, int, int, int, int, void> glProgramUniform3i;
|
||||
internal unsafe delegate*<uint, int, int, int*, void> glProgramUniform3iv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, uint, void> glProgramUniform3ui;
|
||||
internal unsafe delegate*<uint, int, int, uint*, void> glProgramUniform3uiv;
|
||||
internal unsafe delegate*<uint, int, double, double, double, double, void> glProgramUniform4d;
|
||||
internal unsafe delegate*<uint, int, int, double*, void> glProgramUniform4dv;
|
||||
internal unsafe delegate*<uint, int, float, float, float, float, void> glProgramUniform4f;
|
||||
internal unsafe delegate*<uint, int, int, float*, void> glProgramUniform4fv;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, void> glProgramUniform4i;
|
||||
internal unsafe delegate*<uint, int, int, int*, void> glProgramUniform4iv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, uint, uint, void> glProgramUniform4ui;
|
||||
internal unsafe delegate*<uint, int, int, uint*, void> glProgramUniform4uiv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix2dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix2fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix2x3dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix2x3fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix2x4dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix2x4fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix3dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix3fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix3x2dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix3x2fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix3x4dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix3x4fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix4dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix4fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix4x2dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix4x2fv;
|
||||
internal unsafe delegate*<uint, int, int, byte, double*, void> glProgramUniformMatrix4x3dv;
|
||||
internal unsafe delegate*<uint, int, int, byte, float*, void> glProgramUniformMatrix4x3fv;
|
||||
internal unsafe delegate*<uint, void> glProvokingVertex;
|
||||
internal unsafe delegate*<uint, uint, int, byte*, void> glPushDebugGroup;
|
||||
internal unsafe delegate*<uint, uint, void> glQueryCounter;
|
||||
internal unsafe delegate*<uint, void> glReadBuffer;
|
||||
internal unsafe delegate*<int, int, int, int, uint, uint, int, IntPtr*, void> glReadnPixels;
|
||||
internal unsafe delegate*<int, int, int, int, uint, uint, IntPtr*, void> glReadPixels;
|
||||
internal unsafe delegate*<void> glReleaseShaderCompiler;
|
||||
internal unsafe delegate*<uint, uint, int, int, void> glRenderbufferStorage;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, void> glRenderbufferStorageMultisample;
|
||||
internal unsafe delegate*<void> glResumeTransformFeedback;
|
||||
internal unsafe delegate*<float, byte, void> glSampleCoverage;
|
||||
internal unsafe delegate*<uint, uint, void> glSampleMaski;
|
||||
internal unsafe delegate*<uint, uint, float, void> glSamplerParameterf;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glSamplerParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int, void> glSamplerParameteri;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glSamplerParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glSamplerParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glSamplerParameteriv;
|
||||
internal unsafe delegate*<int, int, int, int, void> glScissor;
|
||||
internal unsafe delegate*<uint, int, int*, void> glScissorArrayv;
|
||||
internal unsafe delegate*<uint, int, int, int, int, void> glScissorIndexed;
|
||||
internal unsafe delegate*<uint, int*, void> glScissorIndexedv;
|
||||
internal unsafe delegate*<int, uint*, uint, IntPtr*, int, void> glShaderBinary;
|
||||
internal unsafe delegate*<uint, int, byte**, int*, void> glShaderSource;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glShaderStorageBlockBinding;
|
||||
internal unsafe delegate*<uint, byte*, uint, uint*, uint*, void> glSpecializeShader;
|
||||
internal unsafe delegate*<uint, int, uint, void> glStencilFunc;
|
||||
internal unsafe delegate*<uint, uint, int, uint, void> glStencilFuncSeparate;
|
||||
internal unsafe delegate*<uint, void> glStencilMask;
|
||||
internal unsafe delegate*<uint, uint, void> glStencilMaskSeparate;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glStencilOp;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, void> glStencilOpSeparate;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glTexBuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, nuint, void> glTexBufferRange;
|
||||
internal unsafe delegate*<uint, int, int, int, int, uint, uint, IntPtr*, void> glTexImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, uint, uint, IntPtr*, void> glTexImage2D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, byte, void> glTexImage2DMultisample;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, uint, uint, IntPtr*, void> glTexImage3D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, byte, void> glTexImage3DMultisample;
|
||||
internal unsafe delegate*<uint, uint, float, void> glTexParameterf;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glTexParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int, void> glTexParameteri;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glTexParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glTexParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glTexParameteriv;
|
||||
internal unsafe delegate*<uint, int, uint, int, void> glTexStorage1D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, void> glTexStorage2D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, byte, void> glTexStorage2DMultisample;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, void> glTexStorage3D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, byte, void> glTexStorage3DMultisample;
|
||||
internal unsafe delegate*<uint, int, int, int, uint, uint, IntPtr*, void> glTexSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, uint, uint, IntPtr*, void> glTexSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, uint, IntPtr*, void> glTexSubImage3D;
|
||||
internal unsafe delegate*<void> glTextureBarrier;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glTextureBuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, nuint, void> glTextureBufferRange;
|
||||
internal unsafe delegate*<uint, uint, float, void> glTextureParameterf;
|
||||
internal unsafe delegate*<uint, uint, float*, void> glTextureParameterfv;
|
||||
internal unsafe delegate*<uint, uint, int, void> glTextureParameteri;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glTextureParameterIiv;
|
||||
internal unsafe delegate*<uint, uint, uint*, void> glTextureParameterIuiv;
|
||||
internal unsafe delegate*<uint, uint, int*, void> glTextureParameteriv;
|
||||
internal unsafe delegate*<uint, int, uint, int, void> glTextureStorage1D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, void> glTextureStorage2D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, byte, void> glTextureStorage2DMultisample;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, void> glTextureStorage3D;
|
||||
internal unsafe delegate*<uint, int, uint, int, int, int, byte, void> glTextureStorage3DMultisample;
|
||||
internal unsafe delegate*<uint, int, int, int, uint, uint, IntPtr*, void> glTextureSubImage1D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, uint, uint, IntPtr*, void> glTextureSubImage2D;
|
||||
internal unsafe delegate*<uint, int, int, int, int, int, int, int, uint, uint, IntPtr*, void> glTextureSubImage3D;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, uint, uint, uint, uint, void> glTextureView;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glTransformFeedbackBufferBase;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, nuint, void> glTransformFeedbackBufferRange;
|
||||
internal unsafe delegate*<uint, int, byte*, uint, void> glTransformFeedbackVaryings;
|
||||
internal unsafe delegate*<int, double, void> glUniform1d;
|
||||
internal unsafe delegate*<int, int, double*, void> glUniform1dv;
|
||||
internal unsafe delegate*<int, float, void> glUniform1f;
|
||||
internal unsafe delegate*<int, int, float*, void> glUniform1fv;
|
||||
internal unsafe delegate*<int, int, void> glUniform1i;
|
||||
internal unsafe delegate*<int, int, int*, void> glUniform1iv;
|
||||
internal unsafe delegate*<int, uint, void> glUniform1ui;
|
||||
internal unsafe delegate*<int, int, uint*, void> glUniform1uiv;
|
||||
internal unsafe delegate*<int, double, double, void> glUniform2d;
|
||||
internal unsafe delegate*<int, int, double*, void> glUniform2dv;
|
||||
internal unsafe delegate*<int, float, float, void> glUniform2f;
|
||||
internal unsafe delegate*<int, int, float*, void> glUniform2fv;
|
||||
internal unsafe delegate*<int, int, int, void> glUniform2i;
|
||||
internal unsafe delegate*<int, int, int*, void> glUniform2iv;
|
||||
internal unsafe delegate*<int, uint, uint, void> glUniform2ui;
|
||||
internal unsafe delegate*<int, int, uint*, void> glUniform2uiv;
|
||||
internal unsafe delegate*<int, double, double, double, void> glUniform3d;
|
||||
internal unsafe delegate*<int, int, double*, void> glUniform3dv;
|
||||
internal unsafe delegate*<int, float, float, float, void> glUniform3f;
|
||||
internal unsafe delegate*<int, int, float*, void> glUniform3fv;
|
||||
internal unsafe delegate*<int, int, int, int, void> glUniform3i;
|
||||
internal unsafe delegate*<int, int, int*, void> glUniform3iv;
|
||||
internal unsafe delegate*<int, uint, uint, uint, void> glUniform3ui;
|
||||
internal unsafe delegate*<int, int, uint*, void> glUniform3uiv;
|
||||
internal unsafe delegate*<int, double, double, double, double, void> glUniform4d;
|
||||
internal unsafe delegate*<int, int, double*, void> glUniform4dv;
|
||||
internal unsafe delegate*<int, float, float, float, float, void> glUniform4f;
|
||||
internal unsafe delegate*<int, int, float*, void> glUniform4fv;
|
||||
internal unsafe delegate*<int, int, int, int, int, void> glUniform4i;
|
||||
internal unsafe delegate*<int, int, int*, void> glUniform4iv;
|
||||
internal unsafe delegate*<int, uint, uint, uint, uint, void> glUniform4ui;
|
||||
internal unsafe delegate*<int, int, uint*, void> glUniform4uiv;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glUniformBlockBinding;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix2dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix2fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix2x3dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix2x3fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix2x4dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix2x4fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix3dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix3fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix3x2dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix3x2fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix3x4dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix3x4fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix4dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix4fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix4x2dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix4x2fv;
|
||||
internal unsafe delegate*<int, int, byte, double*, void> glUniformMatrix4x3dv;
|
||||
internal unsafe delegate*<int, int, byte, float*, void> glUniformMatrix4x3fv;
|
||||
internal unsafe delegate*<uint, int, uint*, void> glUniformSubroutinesuiv;
|
||||
internal unsafe delegate*<uint, byte> glUnmapBuffer;
|
||||
internal unsafe delegate*<uint, byte> glUnmapNamedBuffer;
|
||||
internal unsafe delegate*<uint, void> glUseProgram;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glUseProgramStages;
|
||||
internal unsafe delegate*<uint, void> glValidateProgram;
|
||||
internal unsafe delegate*<uint, void> glValidateProgramPipeline;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glVertexArrayAttribBinding;
|
||||
internal unsafe delegate*<uint, uint, int, uint, byte, uint, void> glVertexArrayAttribFormat;
|
||||
internal unsafe delegate*<uint, uint, int, uint, uint, void> glVertexArrayAttribIFormat;
|
||||
internal unsafe delegate*<uint, uint, int, uint, uint, void> glVertexArrayAttribLFormat;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glVertexArrayBindingDivisor;
|
||||
internal unsafe delegate*<uint, uint, void> glVertexArrayElementBuffer;
|
||||
internal unsafe delegate*<uint, uint, uint, nint, int, void> glVertexArrayVertexBuffer;
|
||||
internal unsafe delegate*<uint, uint, int, uint*, nint*, int*, void> glVertexArrayVertexBuffers;
|
||||
internal unsafe delegate*<uint, double, void> glVertexAttrib1d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttrib1dv;
|
||||
internal unsafe delegate*<uint, float, void> glVertexAttrib1f;
|
||||
internal unsafe delegate*<uint, float*, void> glVertexAttrib1fv;
|
||||
internal unsafe delegate*<uint, short, void> glVertexAttrib1s;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttrib1sv;
|
||||
internal unsafe delegate*<uint, double, double, void> glVertexAttrib2d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttrib2dv;
|
||||
internal unsafe delegate*<uint, float, float, void> glVertexAttrib2f;
|
||||
internal unsafe delegate*<uint, float*, void> glVertexAttrib2fv;
|
||||
internal unsafe delegate*<uint, short, short, void> glVertexAttrib2s;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttrib2sv;
|
||||
internal unsafe delegate*<uint, double, double, double, void> glVertexAttrib3d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttrib3dv;
|
||||
internal unsafe delegate*<uint, float, float, float, void> glVertexAttrib3f;
|
||||
internal unsafe delegate*<uint, float*, void> glVertexAttrib3fv;
|
||||
internal unsafe delegate*<uint, short, short, short, void> glVertexAttrib3s;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttrib3sv;
|
||||
internal unsafe delegate*<uint, sbyte*, void> glVertexAttrib4bv;
|
||||
internal unsafe delegate*<uint, double, double, double, double, void> glVertexAttrib4d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttrib4dv;
|
||||
internal unsafe delegate*<uint, float, float, float, float, void> glVertexAttrib4f;
|
||||
internal unsafe delegate*<uint, float*, void> glVertexAttrib4fv;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttrib4iv;
|
||||
internal unsafe delegate*<uint, sbyte*, void> glVertexAttrib4Nbv;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttrib4Niv;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttrib4Nsv;
|
||||
internal unsafe delegate*<uint, byte, byte, byte, byte, void> glVertexAttrib4Nub;
|
||||
internal unsafe delegate*<uint, byte*, void> glVertexAttrib4Nubv;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttrib4Nuiv;
|
||||
internal unsafe delegate*<uint, ushort*, void> glVertexAttrib4Nusv;
|
||||
internal unsafe delegate*<uint, short, short, short, short, void> glVertexAttrib4s;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttrib4sv;
|
||||
internal unsafe delegate*<uint, byte*, void> glVertexAttrib4ubv;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttrib4uiv;
|
||||
internal unsafe delegate*<uint, ushort*, void> glVertexAttrib4usv;
|
||||
internal unsafe delegate*<uint, uint, void> glVertexAttribBinding;
|
||||
internal unsafe delegate*<uint, uint, void> glVertexAttribDivisor;
|
||||
internal unsafe delegate*<uint, int, uint, byte, uint, void> glVertexAttribFormat;
|
||||
internal unsafe delegate*<uint, int, void> glVertexAttribI1i;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttribI1iv;
|
||||
internal unsafe delegate*<uint, uint, void> glVertexAttribI1ui;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttribI1uiv;
|
||||
internal unsafe delegate*<uint, int, int, void> glVertexAttribI2i;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttribI2iv;
|
||||
internal unsafe delegate*<uint, uint, uint, void> glVertexAttribI2ui;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttribI2uiv;
|
||||
internal unsafe delegate*<uint, int, int, int, void> glVertexAttribI3i;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttribI3iv;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, void> glVertexAttribI3ui;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttribI3uiv;
|
||||
internal unsafe delegate*<uint, sbyte*, void> glVertexAttribI4bv;
|
||||
internal unsafe delegate*<uint, int, int, int, int, void> glVertexAttribI4i;
|
||||
internal unsafe delegate*<uint, int*, void> glVertexAttribI4iv;
|
||||
internal unsafe delegate*<uint, short*, void> glVertexAttribI4sv;
|
||||
internal unsafe delegate*<uint, byte*, void> glVertexAttribI4ubv;
|
||||
internal unsafe delegate*<uint, uint, uint, uint, uint, void> glVertexAttribI4ui;
|
||||
internal unsafe delegate*<uint, uint*, void> glVertexAttribI4uiv;
|
||||
internal unsafe delegate*<uint, ushort*, void> glVertexAttribI4usv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, void> glVertexAttribIFormat;
|
||||
internal unsafe delegate*<uint, int, uint, int, IntPtr*, void> glVertexAttribIPointer;
|
||||
internal unsafe delegate*<uint, double, void> glVertexAttribL1d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttribL1dv;
|
||||
internal unsafe delegate*<uint, double, double, void> glVertexAttribL2d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttribL2dv;
|
||||
internal unsafe delegate*<uint, double, double, double, void> glVertexAttribL3d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttribL3dv;
|
||||
internal unsafe delegate*<uint, double, double, double, double, void> glVertexAttribL4d;
|
||||
internal unsafe delegate*<uint, double*, void> glVertexAttribL4dv;
|
||||
internal unsafe delegate*<uint, int, uint, uint, void> glVertexAttribLFormat;
|
||||
internal unsafe delegate*<uint, int, uint, int, IntPtr*, void> glVertexAttribLPointer;
|
||||
internal unsafe delegate*<uint, uint, byte, uint, void> glVertexAttribP1ui;
|
||||
internal unsafe delegate*<uint, uint, byte, uint*, void> glVertexAttribP1uiv;
|
||||
internal unsafe delegate*<uint, uint, byte, uint, void> glVertexAttribP2ui;
|
||||
internal unsafe delegate*<uint, uint, byte, uint*, void> glVertexAttribP2uiv;
|
||||
internal unsafe delegate*<uint, uint, byte, uint, void> glVertexAttribP3ui;
|
||||
internal unsafe delegate*<uint, uint, byte, uint*, void> glVertexAttribP3uiv;
|
||||
internal unsafe delegate*<uint, uint, byte, uint, void> glVertexAttribP4ui;
|
||||
internal unsafe delegate*<uint, uint, byte, uint*, void> glVertexAttribP4uiv;
|
||||
internal unsafe delegate*<uint, int, uint, byte, int, IntPtr*, void> glVertexAttribPointer;
|
||||
internal unsafe delegate*<uint, uint, void> glVertexBindingDivisor;
|
||||
internal unsafe delegate*<int, int, int, int, void> glViewport;
|
||||
internal unsafe delegate*<uint, int, float*, void> glViewportArrayv;
|
||||
internal unsafe delegate*<uint, float, float, float, float, void> glViewportIndexedf;
|
||||
internal unsafe delegate*<uint, float*, void> glViewportIndexedfv;
|
||||
internal unsafe delegate*<glSync, uint, IntPtr, void> glWaitSync;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,6 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
@@ -37,65 +31,4 @@ namespace StgSharp.Graphics.OpenGL
|
||||
|
||||
}
|
||||
|
||||
public sealed class GlArrayFormatException : Exception
|
||||
{
|
||||
|
||||
internal GlArrayFormatException(
|
||||
string message
|
||||
)
|
||||
: base(message) { }
|
||||
|
||||
internal GlArrayFormatException(
|
||||
SerializationInfo info,
|
||||
StreamingContext context
|
||||
)
|
||||
: base(info, context) { }
|
||||
|
||||
internal GlArrayFormatException(
|
||||
string message,
|
||||
Exception innerException
|
||||
)
|
||||
: base(message, innerException) { }
|
||||
|
||||
public GlArrayFormatException(
|
||||
PixelChannelLayout layout,
|
||||
string arrayname
|
||||
)
|
||||
: base($"{arrayname} cannot be used as layout of {layout}") { }
|
||||
|
||||
}
|
||||
|
||||
public static partial class GlHelper
|
||||
{
|
||||
|
||||
public static bool CheckArrayFormat(
|
||||
this Array array,
|
||||
PixelChannelLayout layout
|
||||
)
|
||||
{
|
||||
return layout switch
|
||||
{
|
||||
PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev => (array is byte[]) ||
|
||||
(array is sbyte[]),
|
||||
PixelChannelLayout.Short => array is short[],
|
||||
PixelChannelLayout.UShort => array is ushort[],
|
||||
PixelChannelLayout.Int => array is int[],
|
||||
PixelChannelLayout.Float => array is float[],
|
||||
PixelChannelLayout.UShort4444 => (array is ushort[]) || (array is byte[]),
|
||||
PixelChannelLayout.UByte => (array is byte[]) || (array is sbyte[]),
|
||||
PixelChannelLayout.UInt => array is uint[],
|
||||
PixelChannelLayout.UShort565 or
|
||||
PixelChannelLayout.UShort565Rev or
|
||||
PixelChannelLayout.UShort4444Rev or
|
||||
PixelChannelLayout.UShort5551 or
|
||||
PixelChannelLayout.UShort1555Rev => array is ushort[],
|
||||
PixelChannelLayout.UInt8888Rev or
|
||||
PixelChannelLayout.UInt1010102 or
|
||||
PixelChannelLayout.UInt2101010Rev => array is int[],
|
||||
PixelChannelLayout.UInt8888 => array is uint[] or byte[],
|
||||
_ => false,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.SourceManager"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp;
|
||||
|
||||
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<TextureUnit> UnusedTextureImageUint
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
get;
|
||||
} = [];
|
||||
|
||||
internal void ReturnAvailableUnit(
|
||||
IEnumerable<TextureUnit> 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<TextureUnit> result
|
||||
)
|
||||
{
|
||||
result = new Queue<TextureUnit>();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (UnusedTextureImageUint.TryDequeue(out TextureUnit unit))
|
||||
{
|
||||
(result as Queue<TextureUnit>)!.Enqueue(unit);
|
||||
} else
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
private ConcurrentQueue<TextureUnit> InitializeUnusedTextureImageUint()
|
||||
{
|
||||
ConcurrentQueue<TextureUnit> result = new ConcurrentQueue<TextureUnit>();
|
||||
for (int index = 0; index < TextureUnitCount; index++) {
|
||||
result.Enqueue((TextureUnit)(glConst.TEXTURE0 + index));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,794 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Internal;
|
||||
using StgSharp.Mathematics;
|
||||
using StgSharp.Mathematics.Numeric;
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.ExceptionServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
private static readonly Dictionary<IntPtr, OpenGLFunction> contextToGLMap = [];
|
||||
private static readonly ThreadLocal<OpenGLFunction> _currentGL = new ThreadLocal<OpenGLFunction>();
|
||||
private OpenglContext* _context;
|
||||
|
||||
private Lazy<int> _attachmentColorRange;
|
||||
|
||||
private OpenGLFunction()
|
||||
{
|
||||
textureUnitCountGetter = glConst.MAX_TEXTURE_IMAGE_UNITS;
|
||||
UnusedTextureImageUint = [];
|
||||
_attachmentColorRange = new Lazy<int>(
|
||||
() => GetMaskInteger((uint)glConst.MAX_COLOR_ATTACHMENTS));
|
||||
}
|
||||
|
||||
public int AttachmentColorRange => _attachmentColorRange.Value;
|
||||
|
||||
public static OpenGLFunction CurrentGL
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
get => _currentGL.Value!;
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal set => _currentGL.Value = value;
|
||||
}
|
||||
|
||||
internal IntPtr ContextHandle => (IntPtr)_context;
|
||||
|
||||
protected ref OpenglContext Context
|
||||
{
|
||||
get
|
||||
{
|
||||
#if DEBUG
|
||||
ArgumentNullException.ThrowIfNull(_context, nameof(_context));
|
||||
#endif
|
||||
return ref (*_context);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ActiveTextureUnit(
|
||||
uint type
|
||||
)
|
||||
{
|
||||
_context->glActiveTexture(type);
|
||||
}
|
||||
|
||||
[Conditional("DEBUG")]
|
||||
public void Assert(
|
||||
bool shouldReportWhenNormal
|
||||
)
|
||||
{
|
||||
uint code = _context->glGetError();
|
||||
if (code != glConst.NO_ERROR) {
|
||||
throw new GlExecutionException(code);
|
||||
}
|
||||
if (shouldReportWhenNormal) {
|
||||
Console.WriteLine("OpenGL runs normally");
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindBuffer(
|
||||
BufferType bufferType,
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
_context->glBindBuffer((uint)bufferType, handle.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bind a frame BufferHandle to a frame BufferHandle target Same function as <see ///
|
||||
/// /// href="https://docs._gl/gl3/glBindFramebuffer"> glBindFramebuffer </see>.
|
||||
/// </summary>
|
||||
/// <param _label="target">
|
||||
/// The frame BufferHandle target of the binding operation.
|
||||
/// </param>
|
||||
/// <param _label="handle">
|
||||
/// The handle of the frame BufferHandle object to bind.
|
||||
/// </param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindFrameBuffer(
|
||||
FrameBufferTarget target,
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
_context->glBindFramebuffer((uint)target, handle.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindRenderBuffer(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
_context->glBindRenderbuffer(glConst.RENDERBUFFER, handle.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindVertexArray(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
_context->glBindVertexArray(handle.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public FrameBufferStatus CheckFrameBufferStatus(
|
||||
FrameBufferTarget target
|
||||
)
|
||||
{
|
||||
return (FrameBufferStatus)_context->glCheckFramebufferStatus((uint)target);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Clear(
|
||||
MaskBufferBit mask
|
||||
)
|
||||
{
|
||||
_context->glClear((uint)mask);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearError()
|
||||
{
|
||||
uint code = 0;
|
||||
for (int i = 0; i < 1024; i++)
|
||||
{
|
||||
code = _context->glGetError();
|
||||
if (code == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Console.WriteLine(code);
|
||||
}
|
||||
foreach (ProcessThread thread in Process.GetCurrentProcess().Threads) {
|
||||
Debugger.Break();
|
||||
}
|
||||
throw new GlErrorOverflowException(1024, code);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void ClearGraphicError()
|
||||
{
|
||||
while (_context->glGetError() != 0) { }
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void CombineFrameBufferRenderBuffer(
|
||||
FrameBufferAttachment attachment,
|
||||
GlHandle rboHandle
|
||||
)
|
||||
{
|
||||
_context->glFramebufferRenderbuffer(glConst.FRAMEBUFFER, (uint)attachment,
|
||||
glConst.RENDERBUFFER, rboHandle.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle CreateGraphicProgram()
|
||||
{
|
||||
return GlHandle.Create(_context->glCreateProgram());
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle[] CreateProgram(
|
||||
int count
|
||||
)
|
||||
{
|
||||
GlHandle[] h = new GlHandle[count];
|
||||
for (int i = 0; i < count; i++) {
|
||||
h.SetValue(i, _context->glCreateProgram());
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public GlHandle[] CreateShaderSet(
|
||||
int count,
|
||||
ShaderType type
|
||||
)
|
||||
{
|
||||
GlHandle[] ret = new GlHandle[count];
|
||||
uint t = (uint)type;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
uint id = _context->glCreateShader(t);
|
||||
if (id == 0)
|
||||
{
|
||||
uint error = _context->glGetError();
|
||||
throw new InvalidOperationException($"Failed in creating shader: {error}");
|
||||
}
|
||||
ret[i] = GlHandle.Create(id);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void DeleteBuffer(
|
||||
GlHandle handle
|
||||
)
|
||||
{
|
||||
_context->glDeleteBuffers(1, (uint*)&handle);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void DeleteBuffers(
|
||||
GlHandle[] handle
|
||||
)
|
||||
{
|
||||
if ((handle == null) || (handle.Length == 0)) {
|
||||
throw new ArgumentNullException(nameof(handle));
|
||||
}
|
||||
fixed (GlHandle* hptr = handle)
|
||||
{
|
||||
uint* iptr = (uint*)hptr;
|
||||
for (int i = 0; i < handle.Length; i++) {
|
||||
_context->glDeleteBuffers(1, iptr + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete a render BufferHandle object Very simlilar function as <see /// ///
|
||||
/// href="https://docs.gl/gl3/glDeleteRenderbuffers"> glDeleteRenderbuffers </see>. The
|
||||
/// only deifference is that this mehtod can only delete one renderbuffer at the same
|
||||
/// time.
|
||||
/// </summary>
|
||||
/// <param _label="bufferHandle">
|
||||
/// Handle to BufferHandle to delete.
|
||||
/// </param>
|
||||
public unsafe void DeleteRenderBuffer(
|
||||
GlHandle bufferHandle
|
||||
)
|
||||
{
|
||||
_context->glDeleteRenderbuffers(1, &bufferHandle.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void DeleteVertexArrays(
|
||||
GlHandle[] arrays
|
||||
)
|
||||
{
|
||||
fixed (GlHandle* hptr = arrays)
|
||||
{
|
||||
uint* iptr = (uint*)hptr;
|
||||
for (int i = 0; i < arrays.Length; i++) {
|
||||
_context->glDeleteVertexArrays(1, iptr + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void DepthMaskAccess(
|
||||
bool isWrite
|
||||
)
|
||||
{
|
||||
_context->glDepthMask(isWrite ? (byte)1 : (byte)0);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Disable(
|
||||
glOperation operation
|
||||
)
|
||||
{
|
||||
_context->glDisable((uint)operation);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void DrawArrays(
|
||||
GeometryType mode,
|
||||
int first,
|
||||
int count
|
||||
)
|
||||
{
|
||||
_context->glDrawArrays((uint)mode, first, count);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void DrawElements(
|
||||
GeometryType mode,
|
||||
int count,
|
||||
TypeCode type,
|
||||
IntPtr ptr
|
||||
)
|
||||
{
|
||||
uint a;
|
||||
a = type switch
|
||||
{
|
||||
TypeCode.UInt32 => glConst.UNSIGNED_INT,
|
||||
TypeCode.UInt16 => glConst.UNSIGNED_SHORT,
|
||||
TypeCode.Byte => glConst.UNSIGNED_BYTE,
|
||||
_ => throw new ArgumentException(
|
||||
$"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}")
|
||||
};
|
||||
_context->glDrawElements((uint)mode, count, a, (nint*)ptr);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsInstanced(
|
||||
GeometryType mode,
|
||||
int count,
|
||||
TypeCode type,
|
||||
IntPtr ptr,
|
||||
int amount
|
||||
)
|
||||
{
|
||||
uint a;
|
||||
a = type switch
|
||||
{
|
||||
TypeCode.UInt32 => glConst.UNSIGNED_INT,
|
||||
TypeCode.UInt16 => glConst.UNSIGNED_SHORT,
|
||||
TypeCode.Byte => glConst.UNSIGNED_BYTE,
|
||||
_ => throw new ArgumentException(
|
||||
$"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}")
|
||||
};
|
||||
_context->glDrawElementsInstanced((uint)mode, count, a, (nint*)ptr, amount);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Enable(
|
||||
glOperation operation
|
||||
)
|
||||
{
|
||||
_context->glEnable((uint)operation);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void FrameBufferTexture2d(
|
||||
FrameBufferTarget target,
|
||||
uint attachment,
|
||||
Texture2DTarget texTarget,
|
||||
GlHandle textureHandle,
|
||||
int level
|
||||
)
|
||||
{
|
||||
_context->glFramebufferTexture2D((uint)target, attachment, (uint)texTarget,
|
||||
textureHandle.Value, level);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle[] GenBuffers(
|
||||
int count
|
||||
)
|
||||
{
|
||||
GlHandle[] h = new GlHandle[count];
|
||||
fixed (GlHandle* hptr = h)
|
||||
{
|
||||
for (int i = 0; i < count; i++) {
|
||||
_context->glGenBuffers(count, ((uint*)hptr) + i);
|
||||
}
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle[] GenRenderBuffer(
|
||||
int count
|
||||
)
|
||||
{
|
||||
GlHandle[] h = new GlHandle[count];
|
||||
fixed (GlHandle* hptr = h) {
|
||||
_context->glGenRenderbuffers(count, (uint*)hptr);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle[] GenTextures(
|
||||
int count
|
||||
)
|
||||
{
|
||||
GlHandle[] h = new GlHandle[count];
|
||||
fixed (GlHandle* hptr = h) {
|
||||
_context->glGenTextures(count, (uint*)hptr);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
public unsafe GlHandle[] GenVertexArrays(
|
||||
int count
|
||||
)
|
||||
{
|
||||
GlHandle[] h = new GlHandle[count];
|
||||
fixed (GlHandle* hptr = h) {
|
||||
_context->glGenVertexArrays(count, (uint*)hptr);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
public unsafe int GetMaskInteger(
|
||||
uint statusCode
|
||||
)
|
||||
{
|
||||
int ret = 0;
|
||||
_context->glGetIntegerv(statusCode, &ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public string GetShaderStatus(
|
||||
Shader s,
|
||||
int index,
|
||||
int key
|
||||
)
|
||||
{
|
||||
IntPtr sptr = IntPtr.Zero;
|
||||
if (GraphicFramework.glCheckShaderStatus(ref Context, s.handle[index].Value, key,
|
||||
ref sptr) == 0) {
|
||||
return Marshal.PtrToStringAnsi(sptr);
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void GetTextureImage<T>(
|
||||
Texture2DTarget target,
|
||||
int level,
|
||||
ImageChannel channel,
|
||||
PixelChannelLayout channelLayout,
|
||||
T[] dataStream
|
||||
) where T : unmanaged,INumber<T>
|
||||
{
|
||||
fixed (T* tptr = dataStream) {
|
||||
_context->glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout,
|
||||
(nint*)tptr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetTextureLevelProperty(
|
||||
uint textureTypeMask,
|
||||
int level,
|
||||
uint propertyMask,
|
||||
out int propertyValue
|
||||
)
|
||||
{
|
||||
fixed (int* iptr = &propertyValue) {
|
||||
_context->glGetTexLevelParameteriv(textureTypeMask, level, propertyMask, iptr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe GlHandle GetUniformLocation(
|
||||
GlHandle program,
|
||||
string name
|
||||
)
|
||||
{
|
||||
byte[] code = Encoding.UTF8.GetBytes(name);
|
||||
fixed (byte* ptr = code)
|
||||
{
|
||||
int ret = _context->glGetUniformLocation(program.Value, ptr);
|
||||
#if DEBUG
|
||||
if ((ret == glConst.INVALID_OPERATION) || (ret == glConst.INVALID_VALUE))
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
if (ret == -1) {
|
||||
throw new UniformEmptyReferenceException(nameof(program), name);
|
||||
}
|
||||
#endif
|
||||
return GlHandle.CreateSigned(ret);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void LoadShaderSource(
|
||||
GlHandle shaderHandle,
|
||||
byte[] codeStream
|
||||
)
|
||||
{
|
||||
fixed (byte* streamPtr = codeStream) {
|
||||
_context->glShaderSource(shaderHandle.Value, 1, &streamPtr, (int*)0);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void LoadShaderSource(
|
||||
GlHandle shaderHandle,
|
||||
ReadOnlySpan<char> codeStream
|
||||
)
|
||||
{
|
||||
fixed (char* streamPtr = codeStream) {
|
||||
_context->glShaderSource(shaderHandle.Value, 1, (byte**)&streamPtr, (int*)0);
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe void LoadShaderSource(
|
||||
GlHandle shaderHandle,
|
||||
ReadOnlySpan<byte> codeStream
|
||||
)
|
||||
{
|
||||
fixed (byte* streamPtr = codeStream)
|
||||
{
|
||||
byte* bptr = streamPtr;
|
||||
_context->glShaderSource(shaderHandle.Value, 1, &bptr, (int*)0);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PolygonMode(
|
||||
FaceMode mode
|
||||
)
|
||||
{
|
||||
_context->glPolygonMode(glConst.FRONT_AND_BACK, (uint)mode);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ReadPixels(
|
||||
(int X, int Y) beginPosition,
|
||||
(int width, int height) size,
|
||||
FrameBufferChannel format,
|
||||
PixelChannelLayout dataType,
|
||||
ref byte[] stream
|
||||
)
|
||||
{
|
||||
fixed (byte* bptr = stream) {
|
||||
_context->glReadPixels(beginPosition.X, beginPosition.Y, size.width, size.height,
|
||||
(uint)format, (uint)dataType, (nint*)bptr);
|
||||
}
|
||||
}
|
||||
|
||||
public void RereadImage(
|
||||
in Image i,
|
||||
(int X, int Y) beginPosition,
|
||||
FrameBufferChannel format,
|
||||
PixelChannelLayout dataType
|
||||
)
|
||||
{
|
||||
byte[] pixels = i.PixelBuffer;
|
||||
if (!pixels.CheckArrayFormat(dataType)) {
|
||||
throw new GlArrayFormatException(dataType, "i.PixelArray");
|
||||
}
|
||||
fixed (byte* bptr = pixels) {
|
||||
_context->glReadPixels(beginPosition.X, beginPosition.Y, i.Width, i.Height,
|
||||
(uint)format, (uint)dataType, (nint*)bptr);
|
||||
}
|
||||
i.PixelUpdateCount++;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferData<T>(
|
||||
BufferType bufferType,
|
||||
T bufferData,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged,INumber<T>
|
||||
{
|
||||
int size = Marshal.SizeOf<T>();
|
||||
|
||||
T* p = &bufferData;
|
||||
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (nint*)p, (uint)usage);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferData<T>(
|
||||
BufferType bufferType,
|
||||
T[] bufferArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged,INumber<T>
|
||||
{
|
||||
int size = bufferArray.Length * Marshal.SizeOf(typeof(T));
|
||||
if (bufferArray == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
fixed (void* bufferPtr = bufferArray) {
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (nint*)bufferPtr,
|
||||
(uint)usage);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferData<T>(
|
||||
BufferType bufferType,
|
||||
ReadOnlySpan<T> bufferSpan,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged,INumber<T>
|
||||
{
|
||||
int size = bufferSpan.Length * Marshal.SizeOf<T>();
|
||||
if (bufferSpan.IsEmpty) {
|
||||
return;
|
||||
}
|
||||
|
||||
fixed (void* bufferPtr = bufferSpan) {
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr,
|
||||
(uint)usage);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferData<T>(
|
||||
BufferType bufferType,
|
||||
Span<T> bufferArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
int size = bufferArray.Length * Marshal.SizeOf<T>();
|
||||
if (bufferArray.IsEmpty) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
fixed (void* bufferPtr = bufferArray) {
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr,
|
||||
(uint)usage);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferVectorData<T>(
|
||||
BufferType bufferType,
|
||||
ReadOnlySpan<T> bufferSpan,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, IUnmanagedVector<T>
|
||||
{
|
||||
int size = bufferSpan.Length * Marshal.SizeOf<T>();
|
||||
|
||||
fixed (void* bufferPtr = bufferSpan) {
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr,
|
||||
(uint)usage);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetBufferVectorData<T>(
|
||||
BufferType bufferType,
|
||||
T[] bufferArray,
|
||||
BufferUsage usage
|
||||
) where T : unmanaged, IUnmanagedVector<T>
|
||||
{
|
||||
int size = bufferArray.Length * Marshal.SizeOf(typeof(T));
|
||||
if (bufferArray == null) {
|
||||
return;
|
||||
}
|
||||
fixed (void* bufferPtr = bufferArray) {
|
||||
_context->glBufferData((uint)bufferType, (nuint)size, (IntPtr*)bufferPtr,
|
||||
(uint)usage);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetRenderBufferStorage(
|
||||
RenderBufferInternalFormat internalFormat,
|
||||
(int width, int height) size
|
||||
)
|
||||
{
|
||||
_context->glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat, size.width,
|
||||
size.height);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe void SetRenderBufferStorage(
|
||||
RenderBufferInternalFormat internalFormat,
|
||||
(uint width, uint height) size
|
||||
)
|
||||
{
|
||||
_context->glRenderbufferStorage(glConst.RENDERBUFFER, (uint)internalFormat,
|
||||
(int)size.width, (int)size.height);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SetVertexAttribute(
|
||||
uint index,
|
||||
int size,
|
||||
TypeCode t,
|
||||
bool normalized,
|
||||
int stride,
|
||||
int pointer
|
||||
)
|
||||
{
|
||||
uint type = GraphicFramework.GLtype[(int)t];
|
||||
_context->glVertexAttribPointer(index, size, type, (byte)(normalized ? 1 : 0), stride,
|
||||
(nint*)pointer);
|
||||
_context->glEnableVertexAttribArray(index);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TextureImage2d<T>(
|
||||
Texture2DTarget target,
|
||||
int level,
|
||||
ImageChannel sourceChannel,
|
||||
int width,
|
||||
int height,
|
||||
ImageChannel targetChannel,
|
||||
PixelChannelLayout type,
|
||||
T[] pixels
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
fixed (T* tptr = pixels)
|
||||
{
|
||||
T* ptr = ((pixels == null) || (pixels.Length == 0)) ? (T*)IntPtr.Zero : tptr;
|
||||
_context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0,
|
||||
(uint)targetChannel, (uint)type, (nint*)tptr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TextureImage2d<T>(
|
||||
Texture2DTarget target,
|
||||
int level,
|
||||
ImageChannel sourceChannel,
|
||||
int width,
|
||||
int height,
|
||||
ImageChannel targetChannel,
|
||||
PixelChannelLayout type,
|
||||
Span<T> pixelSpan
|
||||
) where T : unmanaged, INumber<T>
|
||||
{
|
||||
fixed (T* tPtr = pixelSpan) {
|
||||
_context->glTexImage2D((uint)target, level, (int)sourceChannel, width, height, 0,
|
||||
(uint)targetChannel, (uint)type, (nint*)tPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TextureParameter(
|
||||
int target,
|
||||
uint pname,
|
||||
int param
|
||||
)
|
||||
{
|
||||
_context->glTexParameteri((uint)target, pname, param);
|
||||
}
|
||||
|
||||
public static bool TryGetFunctionPackage(
|
||||
IntPtr handle,
|
||||
out OpenGLFunction functionPackage
|
||||
)
|
||||
{
|
||||
return contextToGLMap.TryGetValue(handle, out functionPackage);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttributeDivisor(
|
||||
uint layoutIndex,
|
||||
uint divisor
|
||||
)
|
||||
{
|
||||
_context->glVertexAttribDivisor(layoutIndex, divisor);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void WaitAccomplishment()
|
||||
{
|
||||
_context->glFinish();
|
||||
}
|
||||
|
||||
internal static OpenGLFunction BuildGlFunctionPackage(
|
||||
IntPtr handle
|
||||
)
|
||||
{
|
||||
if (contextToGLMap.TryGetValue(handle, out OpenGLFunction pack)) {
|
||||
return pack;
|
||||
}
|
||||
pack = new OpenGLFunction
|
||||
{
|
||||
_context = (OpenglContext*)handle
|
||||
};
|
||||
contextToGLMap.Add(handle, pack);
|
||||
return pack;
|
||||
}
|
||||
|
||||
~OpenGLFunction()
|
||||
{
|
||||
_ = contextToGLMap.Remove(ContextHandle);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,524 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.v4_0"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BeginQueryIndexed(
|
||||
uint target,
|
||||
uint index,
|
||||
uint id
|
||||
)
|
||||
{
|
||||
_context->glBeginQueryIndexed(target, index, id);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindTransformFeedback(
|
||||
uint target,
|
||||
uint id
|
||||
)
|
||||
{
|
||||
_context->glBindTransformFeedback(target, id);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendEquationi(
|
||||
uint buf,
|
||||
uint mode
|
||||
)
|
||||
{
|
||||
_context->glBlendEquationi(buf, mode);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendEquationSeparatei(
|
||||
uint buf,
|
||||
uint modeRGB,
|
||||
uint modeAlpha
|
||||
)
|
||||
{
|
||||
_context->glBlendEquationSeparatei(buf, modeRGB, modeAlpha);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendFunci(
|
||||
uint buf,
|
||||
uint src,
|
||||
uint dst
|
||||
)
|
||||
{
|
||||
_context->glBlendFunci(buf, src, dst);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BlendFuncSeparatei(
|
||||
uint buf,
|
||||
uint srcRGB,
|
||||
uint dstRGB,
|
||||
uint srcAlpha,
|
||||
uint dstAlpha
|
||||
)
|
||||
{
|
||||
_context->glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DeleteTransformFeedbacks(
|
||||
int n,
|
||||
ReadOnlySpan<uint> ids
|
||||
)
|
||||
{
|
||||
fixed (uint* idsPtr = ids) {
|
||||
_context->glDeleteTransformFeedbacks(n, idsPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawArraysIndirect(
|
||||
uint mode,
|
||||
ReadOnlySpan<IntPtr> indirect
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glDrawArraysIndirect(mode, indirectPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsIndirect(
|
||||
uint mode,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> indirect
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glDrawElementsIndirect(mode, (uint)type, indirectPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedback(
|
||||
uint mode,
|
||||
uint id
|
||||
)
|
||||
{
|
||||
_context->glDrawTransformFeedback(mode, id);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackStream(
|
||||
uint mode,
|
||||
uint id,
|
||||
uint stream
|
||||
)
|
||||
{
|
||||
_context->glDrawTransformFeedbackStream(mode, id, stream);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void EndQueryIndexed(
|
||||
uint target,
|
||||
uint index
|
||||
)
|
||||
{
|
||||
_context->glEndQueryIndexed(target, index);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GenTransformFeedbacks(
|
||||
int n,
|
||||
uint* ids
|
||||
)
|
||||
{
|
||||
_context->glGenTransformFeedbacks(n, ids);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineName(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
uint index,
|
||||
int bufSize,
|
||||
int* length,
|
||||
byte* name
|
||||
)
|
||||
{
|
||||
_context->glGetActiveSubroutineName(program.Value, (uint)shaderType, index, bufSize,
|
||||
length, name);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineUniformiv(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
uint index,
|
||||
uint pName,
|
||||
int* values
|
||||
)
|
||||
{
|
||||
_context->glGetActiveSubroutineUniformiv(program.Value, (uint)shaderType, index, pName,
|
||||
values);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveSubroutineUniformName(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
uint index,
|
||||
int bufSize,
|
||||
int* length,
|
||||
byte* name
|
||||
)
|
||||
{
|
||||
_context->glGetActiveSubroutineUniformName(program.Value, (uint)shaderType, index,
|
||||
bufSize, length, name);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramStageiv(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
uint pName,
|
||||
int* values
|
||||
)
|
||||
{
|
||||
_context->glGetProgramStageiv(program.Value, (uint)shaderType, pName, values);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetQueryIndexediv(
|
||||
uint target,
|
||||
uint index,
|
||||
uint pName,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
_context->glGetQueryIndexediv(target, index, pName, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetSubroutineIndex(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
ReadOnlySpan<byte> name
|
||||
)
|
||||
{
|
||||
fixed (byte* namePtr = name) {
|
||||
return _context->glGetSubroutineIndex(program.Value, (uint)shaderType, namePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetSubroutineUniformLocation(
|
||||
GlHandle program,
|
||||
ShaderType shaderType,
|
||||
ReadOnlySpan<byte> name
|
||||
)
|
||||
{
|
||||
fixed (byte* namePtr = name) {
|
||||
return _context->glGetSubroutineUniformLocation(program.Value, (uint)shaderType, namePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetUniformdv(
|
||||
GlHandle program,
|
||||
int location,
|
||||
double* @params
|
||||
)
|
||||
{
|
||||
_context->glGetUniformdv(program.Value, location, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetUniformSubroutineuiv(
|
||||
ShaderType shaderType,
|
||||
int location,
|
||||
uint* @params
|
||||
)
|
||||
{
|
||||
_context->glGetUniformSubroutineuiv((uint)shaderType, location, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public byte IsTransformFeedback(
|
||||
uint id
|
||||
)
|
||||
{
|
||||
return _context->glIsTransformFeedback(id);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MinSampleShading(
|
||||
float value
|
||||
)
|
||||
{
|
||||
_context->glMinSampleShading(value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PatchParameterfv(
|
||||
uint pName,
|
||||
ReadOnlySpan<float> values
|
||||
)
|
||||
{
|
||||
fixed (float* valuesPtr = values) {
|
||||
_context->glPatchParameterfv(pName, valuesPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PatchParameteri(
|
||||
uint pName,
|
||||
int value
|
||||
)
|
||||
{
|
||||
_context->glPatchParameteri(pName, value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PauseTransformFeedback()
|
||||
{
|
||||
_context->glPauseTransformFeedback();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ResumeTransformFeedback()
|
||||
{
|
||||
_context->glResumeTransformFeedback();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform1d(
|
||||
int location,
|
||||
double x
|
||||
)
|
||||
{
|
||||
_context->glUniform1d(location, x);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform1dv(
|
||||
int location,
|
||||
int count,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniform1dv(location, count, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform2d(
|
||||
int location,
|
||||
double x,
|
||||
double y
|
||||
)
|
||||
{
|
||||
_context->glUniform2d(location, x, y);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform2dv(
|
||||
int location,
|
||||
int count,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniform2dv(location, count, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform3d(
|
||||
int location,
|
||||
double x,
|
||||
double y,
|
||||
double z
|
||||
)
|
||||
{
|
||||
_context->glUniform3d(location, x, y, z);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform3dv(
|
||||
int location,
|
||||
int count,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniform3dv(location, count, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform4d(
|
||||
int location,
|
||||
double x,
|
||||
double y,
|
||||
double z,
|
||||
double w
|
||||
)
|
||||
{
|
||||
_context->glUniform4d(location, x, y, z, w);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Uniform4dv(
|
||||
int location,
|
||||
int count,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniform4dv(location, count, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix2dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix2dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix2x3dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix2x3dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix2x4dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix2x4dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix3dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix3dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix3x2dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix3x2dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix3x4dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix3x4dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix4dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix4dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix4x2dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix4x2dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformMatrix4x3dv(
|
||||
int location,
|
||||
int count,
|
||||
byte transpose,
|
||||
ReadOnlySpan<double> value
|
||||
)
|
||||
{
|
||||
fixed (double* valuePtr = value) {
|
||||
_context->glUniformMatrix4x3dv(location, count, transpose, valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void UniformSubroutinesuiv(
|
||||
ShaderType shaderType,
|
||||
int count,
|
||||
ReadOnlySpan<uint> indices
|
||||
)
|
||||
{
|
||||
fixed (uint* indicesPtr = indices) {
|
||||
_context->glUniformSubroutinesuiv((uint)shaderType, count, indicesPtr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,170 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.v4_2"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindImageTexture(
|
||||
uint unit,
|
||||
GlHandle texture,
|
||||
int level,
|
||||
byte layered,
|
||||
int layer,
|
||||
uint access,
|
||||
uint format
|
||||
)
|
||||
{
|
||||
_context->glBindImageTexture(unit, texture.Value, level, layered, layer, access,
|
||||
format);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawArraysInstancedBaseInstance(
|
||||
uint mode,
|
||||
int first,
|
||||
int count,
|
||||
int instancecount,
|
||||
uint baseinstance
|
||||
)
|
||||
{
|
||||
_context->glDrawArraysInstancedBaseInstance(mode, first, count, instancecount,
|
||||
baseinstance);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsInstancedBaseInstance(
|
||||
uint mode,
|
||||
int count,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> indices,
|
||||
int instancecount,
|
||||
uint baseinstance
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indicesPtr = indices) {
|
||||
_context->glDrawElementsInstancedBaseInstance(mode, count, (uint)type, indicesPtr,
|
||||
instancecount, baseinstance);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawElementsInstancedBaseVertexBaseInstance(
|
||||
uint mode,
|
||||
int count,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> indices,
|
||||
int instancecount,
|
||||
int basevertex,
|
||||
uint baseinstance
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indicesPtr = indices) {
|
||||
_context->glDrawElementsInstancedBaseVertexBaseInstance(mode, count, (uint)type,
|
||||
indicesPtr, instancecount,
|
||||
basevertex, baseinstance);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackInstanced(
|
||||
uint mode,
|
||||
uint id,
|
||||
int instancecount
|
||||
)
|
||||
{
|
||||
_context->glDrawTransformFeedbackInstanced(mode, id, instancecount);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DrawTransformFeedbackStreamInstanced(
|
||||
uint mode,
|
||||
uint id,
|
||||
uint stream,
|
||||
int instancecount
|
||||
)
|
||||
{
|
||||
_context->glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetActiveAtomicCounterBufferiv(
|
||||
GlHandle program,
|
||||
GlHandle bufferIndex,
|
||||
uint pname,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
_context->glGetActiveAtomicCounterBufferiv(program.Value, bufferIndex.Value, pname,
|
||||
@params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetInternalformativ(
|
||||
uint target,
|
||||
uint internalformat,
|
||||
uint pname,
|
||||
int count,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
_context->glGetInternalformativ(target, internalformat, pname, count, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MemoryBarrier(
|
||||
uint barriers
|
||||
)
|
||||
{
|
||||
_context->glMemoryBarrier(barriers);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage1D(
|
||||
uint target,
|
||||
int levels,
|
||||
uint internalformat,
|
||||
int width
|
||||
)
|
||||
{
|
||||
_context->glTexStorage1D(target, levels, internalformat, width);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage2D(
|
||||
uint target,
|
||||
int levels,
|
||||
uint internalformat,
|
||||
int width,
|
||||
int height
|
||||
)
|
||||
{
|
||||
_context->glTexStorage2D(target, levels, internalformat, width, height);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage3D(
|
||||
uint target,
|
||||
int levels,
|
||||
uint internalformat,
|
||||
int width,
|
||||
int height,
|
||||
int depth
|
||||
)
|
||||
{
|
||||
_context->glTexStorage3D(target, levels, internalformat, width, height, depth);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,564 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.v4_3"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindVertexBuffer(
|
||||
uint bindingindex,
|
||||
GlHandle buffer,
|
||||
nint offset,
|
||||
int stride
|
||||
)
|
||||
{
|
||||
_context->glBindVertexBuffer(bindingindex, buffer.Value, offset, stride);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearBufferData(
|
||||
uint target,
|
||||
uint internalformat,
|
||||
uint format,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> data
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* dataPtr = data) {
|
||||
_context->glClearBufferData(target, internalformat, format, (uint)type, dataPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearBufferSubData(
|
||||
uint target,
|
||||
uint internalformat,
|
||||
nint offset,
|
||||
nuint size,
|
||||
uint format,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> data
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* dataPtr = data) {
|
||||
_context->glClearBufferSubData(target, internalformat, offset, size, format,
|
||||
(uint)type, dataPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void CopyImageSubData(
|
||||
uint srcName,
|
||||
uint srcTarget,
|
||||
int srcLevel,
|
||||
int srcX,
|
||||
int srcY,
|
||||
int srcZ,
|
||||
uint dstName,
|
||||
uint dstTarget,
|
||||
int dstLevel,
|
||||
int dstX,
|
||||
int dstY,
|
||||
int dstZ,
|
||||
int srcWidth,
|
||||
int srcHeight,
|
||||
int srcDepth
|
||||
)
|
||||
{
|
||||
_context->glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
|
||||
dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
|
||||
srcDepth);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageCallback(
|
||||
IntPtr callback,
|
||||
ReadOnlySpan<IntPtr> userParam
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* userParamPtr = userParam) {
|
||||
_context->glDebugMessageCallback(callback, userParamPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageControl(
|
||||
uint source,
|
||||
ShaderType type,
|
||||
uint severity,
|
||||
int count,
|
||||
ReadOnlySpan<uint> ids,
|
||||
byte enabled
|
||||
)
|
||||
{
|
||||
fixed (uint* idsPtr = ids) {
|
||||
_context->glDebugMessageControl(source, (uint)type, severity, count, idsPtr,
|
||||
enabled);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DebugMessageInsert(
|
||||
uint source,
|
||||
ShaderType type,
|
||||
uint id,
|
||||
uint severity,
|
||||
int length,
|
||||
ReadOnlySpan<byte> buf
|
||||
)
|
||||
{
|
||||
fixed (byte* bufPtr = buf) {
|
||||
_context->glDebugMessageInsert(source, (uint)type, id, severity, length, bufPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DispatchCompute(
|
||||
uint num_groups_x,
|
||||
uint num_groups_y,
|
||||
uint num_groups_z
|
||||
)
|
||||
{
|
||||
_context->glDispatchCompute(num_groups_x, num_groups_y, num_groups_z);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void DispatchComputeIndirect(
|
||||
nint indirect
|
||||
)
|
||||
{
|
||||
_context->glDispatchComputeIndirect(indirect);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void FramebufferParameteri(
|
||||
uint target,
|
||||
uint pname,
|
||||
int param
|
||||
)
|
||||
{
|
||||
_context->glFramebufferParameteri(target, pname, param);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetDebugMessageLog(
|
||||
uint count,
|
||||
int bufSize,
|
||||
uint* sources,
|
||||
uint* types,
|
||||
uint* ids,
|
||||
uint* severities,
|
||||
int* lengths,
|
||||
byte* messageLog
|
||||
)
|
||||
{
|
||||
return _context->glGetDebugMessageLog(count, bufSize, sources, types, ids, severities,
|
||||
lengths, messageLog);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetFramebufferParameteriv(
|
||||
uint target,
|
||||
uint pname,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
_context->glGetFramebufferParameteriv(target, pname, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetInternalformati64v(
|
||||
uint target,
|
||||
uint internalformat,
|
||||
uint pname,
|
||||
int count,
|
||||
IntPtr* @params
|
||||
)
|
||||
{
|
||||
_context->glGetInternalformati64v(target, internalformat, pname, count, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetObjectLabel(
|
||||
uint identifier,
|
||||
uint name,
|
||||
int bufSize,
|
||||
int* length,
|
||||
byte* label
|
||||
)
|
||||
{
|
||||
_context->glGetObjectLabel(identifier, name, bufSize, length, label);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetObjectPtrLabel(
|
||||
ReadOnlySpan<IntPtr> ptr,
|
||||
int bufSize,
|
||||
int* length,
|
||||
byte* label
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* ptrPtr = ptr) {
|
||||
_context->glGetObjectPtrLabel(ptrPtr, bufSize, length, label);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramInterfaceiv(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
uint pname,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
_context->glGetProgramInterfaceiv(program.Value, programInterface, pname, @params);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public uint GetProgramResourceIndex(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
ReadOnlySpan<byte> name
|
||||
)
|
||||
{
|
||||
fixed (byte* namePtr = name) {
|
||||
return _context->glGetProgramResourceIndex(program.Value, programInterface, namePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramResourceiv(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
uint index,
|
||||
int propCount,
|
||||
ReadOnlySpan<uint> props,
|
||||
int count,
|
||||
int* length,
|
||||
int* @params
|
||||
)
|
||||
{
|
||||
fixed (uint* propsPtr = props) {
|
||||
_context->glGetProgramResourceiv(program.Value, programInterface, index, propCount,
|
||||
propsPtr, count, length, @params);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetProgramResourceLocation(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
ReadOnlySpan<byte> name
|
||||
)
|
||||
{
|
||||
fixed (byte* namePtr = name) {
|
||||
return _context->glGetProgramResourceLocation(program.Value, programInterface, namePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int GetProgramResourceLocationIndex(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
ReadOnlySpan<byte> name
|
||||
)
|
||||
{
|
||||
fixed (byte* namePtr = name) {
|
||||
return _context->glGetProgramResourceLocationIndex(program.Value, programInterface, namePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void GetProgramResourceName(
|
||||
GlHandle program,
|
||||
uint programInterface,
|
||||
uint index,
|
||||
int bufSize,
|
||||
int* length,
|
||||
byte* name
|
||||
)
|
||||
{
|
||||
_context->glGetProgramResourceName(program.Value, programInterface, index, bufSize,
|
||||
length, name);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateBufferData(
|
||||
GlHandle buffer
|
||||
)
|
||||
{
|
||||
_context->glInvalidateBufferData(buffer.Value);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateBufferSubData(
|
||||
GlHandle buffer,
|
||||
nint offset,
|
||||
nuint length
|
||||
)
|
||||
{
|
||||
_context->glInvalidateBufferSubData(buffer.Value, offset, length);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateFramebuffer(
|
||||
uint target,
|
||||
int numAttachments,
|
||||
ReadOnlySpan<uint> attachments
|
||||
)
|
||||
{
|
||||
fixed (uint* attachmentsPtr = attachments) {
|
||||
_context->glInvalidateFramebuffer(target, numAttachments, attachmentsPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateSubFramebuffer(
|
||||
uint target,
|
||||
int numAttachments,
|
||||
ReadOnlySpan<uint> attachments,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height
|
||||
)
|
||||
{
|
||||
fixed (uint* attachmentsPtr = attachments) {
|
||||
_context->glInvalidateSubFramebuffer(target, numAttachments, attachmentsPtr, x, y,
|
||||
width, height);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateTexImage(
|
||||
GlHandle texture,
|
||||
int level
|
||||
)
|
||||
{
|
||||
_context->glInvalidateTexImage(texture.Value, level);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InvalidateTexSubImage(
|
||||
GlHandle texture,
|
||||
int level,
|
||||
int xoffset,
|
||||
int yoffset,
|
||||
int zoffset,
|
||||
int width,
|
||||
int height,
|
||||
int depth
|
||||
)
|
||||
{
|
||||
_context->glInvalidateTexSubImage(texture.Value, level, xoffset, yoffset, zoffset,
|
||||
width, height, depth);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawArraysIndirect(
|
||||
uint mode,
|
||||
ReadOnlySpan<IntPtr> indirect,
|
||||
int drawcount,
|
||||
int stride
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glMultiDrawArraysIndirect(mode, indirectPtr, drawcount, stride);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawElementsIndirect(
|
||||
uint mode,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> indirect,
|
||||
int drawcount,
|
||||
int stride
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glMultiDrawElementsIndirect(mode, (uint)type, indirectPtr, drawcount,
|
||||
stride);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ObjectLabel(
|
||||
uint identifier,
|
||||
uint name,
|
||||
int length,
|
||||
ReadOnlySpan<byte> label
|
||||
)
|
||||
{
|
||||
fixed (byte* labelPtr = label) {
|
||||
_context->glObjectLabel(identifier, name, length, labelPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ObjectPtrLabel(
|
||||
ReadOnlySpan<IntPtr> ptr,
|
||||
int length,
|
||||
ReadOnlySpan<byte> label
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* ptrPtr = ptr)
|
||||
{
|
||||
fixed (byte* labelPtr = label) {
|
||||
_context->glObjectPtrLabel(ptrPtr, length, labelPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PopDebugGroup()
|
||||
{
|
||||
_context->glPopDebugGroup();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PushDebugGroup(
|
||||
uint source,
|
||||
uint id,
|
||||
int length,
|
||||
ReadOnlySpan<byte> message
|
||||
)
|
||||
{
|
||||
fixed (byte* messagePtr = message) {
|
||||
_context->glPushDebugGroup(source, id, length, messagePtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ShaderStorageBlockBinding(
|
||||
GlHandle program,
|
||||
uint storageBlockIndex,
|
||||
uint storageBlockBinding
|
||||
)
|
||||
{
|
||||
_context->glShaderStorageBlockBinding(program.Value, storageBlockIndex, storageBlockBinding);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexBufferRange(
|
||||
uint target,
|
||||
uint internalformat,
|
||||
GlHandle buffer,
|
||||
nint offset,
|
||||
nuint size
|
||||
)
|
||||
{
|
||||
_context->glTexBufferRange(target, internalformat, buffer.Value, offset, size);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage2DMultisample(
|
||||
uint target,
|
||||
int samples,
|
||||
uint internalformat,
|
||||
int width,
|
||||
int height,
|
||||
byte fixedsamplelocations
|
||||
)
|
||||
{
|
||||
_context->glTexStorage2DMultisample(target, samples, internalformat, width, height,
|
||||
fixedsamplelocations);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TexStorage3DMultisample(
|
||||
uint target,
|
||||
int samples,
|
||||
uint internalformat,
|
||||
int width,
|
||||
int height,
|
||||
int depth,
|
||||
byte fixedsamplelocations
|
||||
)
|
||||
{
|
||||
_context->glTexStorage3DMultisample(target, samples, internalformat, width, height,
|
||||
depth, fixedsamplelocations);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void TextureView(
|
||||
GlHandle texture,
|
||||
uint target,
|
||||
GlHandle origtexture,
|
||||
uint internalformat,
|
||||
uint minlevel,
|
||||
uint numlevels,
|
||||
uint minlayer,
|
||||
uint numlayers
|
||||
)
|
||||
{
|
||||
_context->glTextureView(texture.Value, target, origtexture.Value, internalformat,
|
||||
minlevel, numlevels, minlayer, numlayers);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttribBinding(
|
||||
uint attribindex,
|
||||
uint bindingindex
|
||||
)
|
||||
{
|
||||
_context->glVertexAttribBinding(attribindex, bindingindex);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttribFormat(
|
||||
uint attribindex,
|
||||
int size,
|
||||
ShaderType type,
|
||||
byte normalized,
|
||||
uint relativeoffset
|
||||
)
|
||||
{
|
||||
_context->glVertexAttribFormat(attribindex, size, (uint)type, normalized,
|
||||
relativeoffset);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttribIFormat(
|
||||
uint attribindex,
|
||||
int size,
|
||||
ShaderType type,
|
||||
uint relativeoffset
|
||||
)
|
||||
{
|
||||
_context->glVertexAttribIFormat(attribindex, size, (uint)type, relativeoffset);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexAttribLFormat(
|
||||
uint attribindex,
|
||||
int size,
|
||||
ShaderType type,
|
||||
uint relativeoffset
|
||||
)
|
||||
{
|
||||
_context->glVertexAttribLFormat(attribindex, size, (uint)type, relativeoffset);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void VertexBindingDivisor(
|
||||
uint bindingindex,
|
||||
uint divisor
|
||||
)
|
||||
{
|
||||
_context->glVertexBindingDivisor(bindingindex, divisor);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.v4_4"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindBuffersBase(
|
||||
uint target,
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> buffers
|
||||
)
|
||||
{
|
||||
fixed (uint* buffersPtr = buffers) {
|
||||
_context->glBindBuffersBase(target, first, count, buffersPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindBuffersRange(
|
||||
uint target,
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> buffers,
|
||||
ReadOnlySpan<nint> offsets,
|
||||
ReadOnlySpan<nuint> sizes
|
||||
)
|
||||
{
|
||||
fixed (uint* buffersPtr = buffers)
|
||||
{
|
||||
fixed (nint* offsetsPtr = offsets)
|
||||
{
|
||||
fixed (nuint* sizesPtr = sizes) {
|
||||
_context->glBindBuffersRange(target, first, count, buffersPtr, offsetsPtr,
|
||||
sizesPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindImageTextures(
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> textures
|
||||
)
|
||||
{
|
||||
fixed (uint* texturesPtr = textures) {
|
||||
_context->glBindImageTextures(first, count, texturesPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindSamplers(
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> samplers
|
||||
)
|
||||
{
|
||||
fixed (uint* samplersPtr = samplers) {
|
||||
_context->glBindSamplers(first, count, samplersPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindTextures(
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> textures
|
||||
)
|
||||
{
|
||||
fixed (uint* texturesPtr = textures) {
|
||||
_context->glBindTextures(first, count, texturesPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BindVertexBuffers(
|
||||
uint first,
|
||||
int count,
|
||||
ReadOnlySpan<uint> buffers,
|
||||
ReadOnlySpan<nint> offsets,
|
||||
ReadOnlySpan<int> strides
|
||||
)
|
||||
{
|
||||
fixed (uint* buffersPtr = buffers)
|
||||
{
|
||||
fixed (nint* offsetsPtr = offsets)
|
||||
{
|
||||
fixed (int* stridesPtr = strides) {
|
||||
_context->glBindVertexBuffers(first, count, buffersPtr, offsetsPtr,
|
||||
stridesPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void BufferStorage(
|
||||
uint target,
|
||||
nuint size,
|
||||
ReadOnlySpan<IntPtr> data,
|
||||
uint flags
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* dataPtr = data) {
|
||||
_context->glBufferStorage(target, size, dataPtr, flags);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearTexImage(
|
||||
GlHandle texture,
|
||||
int level,
|
||||
uint format,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> data
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* dataPtr = data) {
|
||||
_context->glClearTexImage(texture.Value, level, format, (uint)type, dataPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void ClearTexSubImage(
|
||||
GlHandle texture,
|
||||
int level,
|
||||
int xoffset,
|
||||
int yoffset,
|
||||
int zoffset,
|
||||
int width,
|
||||
int height,
|
||||
int depth,
|
||||
uint format,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> data
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* dataPtr = data) {
|
||||
_context->glClearTexSubImage(texture.Value, level, xoffset, yoffset, zoffset, width,
|
||||
height, depth, format, (uint)type, dataPtr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,82 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glFunction.v4_6"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Graphics.OpenGL;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
public unsafe partial class OpenGLFunction
|
||||
{
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawArraysIndirectCount(
|
||||
uint mode,
|
||||
ReadOnlySpan<IntPtr> indirect,
|
||||
nint drawcount,
|
||||
int maxdrawcount,
|
||||
int stride
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glMultiDrawArraysIndirectCount(mode, indirectPtr, drawcount, maxdrawcount,
|
||||
stride);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void MultiDrawElementsIndirectCount(
|
||||
uint mode,
|
||||
ShaderType type,
|
||||
ReadOnlySpan<IntPtr> indirect,
|
||||
nint drawcount,
|
||||
int maxdrawcount,
|
||||
int stride
|
||||
)
|
||||
{
|
||||
fixed (IntPtr* indirectPtr = indirect) {
|
||||
_context->glMultiDrawElementsIndirectCount(mode, (uint)type, indirectPtr, drawcount,
|
||||
maxdrawcount, stride);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void PolygonOffsetClamp(
|
||||
float factor,
|
||||
float units,
|
||||
float clamp
|
||||
)
|
||||
{
|
||||
_context->glPolygonOffsetClamp(factor, units, clamp);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void SpecializeShader(
|
||||
GlHandle shader,
|
||||
ReadOnlySpan<byte> pEntryPoint,
|
||||
uint numSpecializationConstants,
|
||||
ReadOnlySpan<uint> pConstantIndex,
|
||||
ReadOnlySpan<uint> pConstantValue
|
||||
)
|
||||
{
|
||||
fixed (byte* pEntryPointPtr = pEntryPoint)
|
||||
{
|
||||
fixed (uint* pConstantIndexPtr = pConstantIndex)
|
||||
{
|
||||
fixed (uint* pConstantValuePtr = pConstantValue) {
|
||||
_context->glSpecializeShader(shader.Value, pEntryPointPtr,
|
||||
numSpecializationConstants, pConstantIndexPtr,
|
||||
pConstantValuePtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -117,15 +118,6 @@ namespace StgSharp.Graphics.OpenGL
|
||||
CustomizeDeinit();
|
||||
}
|
||||
|
||||
protected sealed override Uniform<GraphicsMatrix> NativeCameraUniform(
|
||||
ShaderProgram source,
|
||||
string name
|
||||
)
|
||||
{
|
||||
NativeCamera.GainAllUniforms(source, name);
|
||||
return NativeCamera.convertedUniform;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
protected sealed override void NativeCameraViewRange(
|
||||
Radius fieldOfRange,
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glSync"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.OpenGL
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct glSync
|
||||
{
|
||||
|
||||
public IntPtr Handle;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -38,11 +38,9 @@ namespace StgSharp.Graphics
|
||||
_shape = shape;
|
||||
}
|
||||
|
||||
// private Image _texture;
|
||||
|
||||
public PlainGeometryMesh(
|
||||
PlainGeometry shape,
|
||||
Image texture,
|
||||
Image<Rgba8> texture,
|
||||
Vec2[] texCoord
|
||||
)
|
||||
{
|
||||
@@ -59,10 +57,10 @@ namespace StgSharp.Graphics
|
||||
|
||||
public Vec4[] VertexArray => _shape.VertexStream;
|
||||
|
||||
public Image TextureImage
|
||||
public Image<Rgba8> TextureImage
|
||||
{
|
||||
get => _texture.ProvideImage();
|
||||
internal set => _texture.ReadImage(value);
|
||||
get => _texture.Image;
|
||||
internal set => _texture.Image = value;
|
||||
}
|
||||
|
||||
public ReadOnlySpan<int> MeshIndices => _shape.VertexIndices;
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
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;
|
||||
@@ -133,27 +133,6 @@ namespace StgSharp.Graphics
|
||||
Vec3 up
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Get <see cref="Uniform{T}" />(TView is <see cref="GraphicsMatrix" />) uniform from a
|
||||
/// shader. This uniform will be used as projection matrix of this camera. Additionally,
|
||||
/// for multi- shader rendering, each shader requires a uniform, so do not ignore return
|
||||
/// value of this method.
|
||||
/// </summary>
|
||||
/// <param _label="source">
|
||||
/// Shader using this camera
|
||||
/// </param>
|
||||
/// <param _label="name">
|
||||
/// ContextName of projection camera named in shader
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <see cref="Uniform{T}" />(TView is <see cref="GraphicsMatrix" />) representing
|
||||
/// projection matrix in shader program.
|
||||
/// </returns>
|
||||
protected abstract Uniform<GraphicsMatrix> NativeCameraUniform(
|
||||
ShaderProgram source,
|
||||
string name
|
||||
);
|
||||
|
||||
#endregion
|
||||
|
||||
#region internal operation
|
||||
@@ -198,17 +177,6 @@ namespace StgSharp.Graphics
|
||||
/// </summary>
|
||||
public abstract void RenderEnd();
|
||||
|
||||
#endregion
|
||||
|
||||
#region public resource generator
|
||||
|
||||
protected abstract Shader CreateShaderSegment(
|
||||
ShaderType type,
|
||||
int count
|
||||
);
|
||||
|
||||
protected abstract ShaderProgram CreateShaderProgram();
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="Rgba8"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
/// <summary>
|
||||
/// Four-channel, eight-bit-per-channel RGBA pixel storage.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 4)]
|
||||
public struct Rgba8
|
||||
{
|
||||
|
||||
public byte R;
|
||||
public byte G;
|
||||
public byte B;
|
||||
public byte A;
|
||||
|
||||
public Rgba8(
|
||||
byte red,
|
||||
byte green,
|
||||
byte blue,
|
||||
byte alpha
|
||||
)
|
||||
{
|
||||
R = red;
|
||||
G = green;
|
||||
B = blue;
|
||||
A = alpha;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -5,4 +5,8 @@
|
||||
<ProjectReference Include="..\StgSharp.Mathematics\StgSharp.Mathematics.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="OpenGL\Generated\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -5,26 +5,27 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using StgSharp.Mathematics.Graphics;
|
||||
|
||||
using StgSharp.Mathematics.Numeric.Graphics;
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
public class TextureProvider : IImageProvider
|
||||
public class TextureProvider
|
||||
{
|
||||
|
||||
private Vec2[] _texCoord;
|
||||
private Image _tex;
|
||||
private Image<Rgba8> _image;
|
||||
|
||||
public TextureProvider(
|
||||
Image image,
|
||||
Image<Rgba8> image,
|
||||
Vec2[] coord
|
||||
)
|
||||
{
|
||||
_tex = image;
|
||||
ArgumentNullException.ThrowIfNull(image);
|
||||
ArgumentNullException.ThrowIfNull(coord);
|
||||
|
||||
_image = image;
|
||||
_texCoord = coord;
|
||||
}
|
||||
|
||||
@@ -36,36 +37,17 @@ namespace StgSharp.Graphics
|
||||
get => ref _texCoord[index];
|
||||
}
|
||||
|
||||
public Image<Rgba8> Image
|
||||
{
|
||||
get => _image;
|
||||
set
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(value);
|
||||
_image = value;
|
||||
}
|
||||
}
|
||||
|
||||
public Span<Vec2> TextureCoordinate => new Span<Vec2>(_texCoord);
|
||||
|
||||
public Image ProvideImage()
|
||||
{
|
||||
return _tex;
|
||||
}
|
||||
|
||||
public void ReadImage(
|
||||
IImageProvider provider
|
||||
)
|
||||
{
|
||||
_tex = provider.ProvideImage();
|
||||
}
|
||||
|
||||
public void UpdateFromImage(
|
||||
[NotNull]Image i
|
||||
)
|
||||
{
|
||||
if (i == _tex) {
|
||||
return;
|
||||
}
|
||||
if (i.Size == _tex.Size)
|
||||
{
|
||||
_tex = i;
|
||||
} else
|
||||
{
|
||||
throw new ArgumentException(
|
||||
$"Size of {nameof(i)} does not equals to current image.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,17 @@ namespace StgSharp.Graphics
|
||||
public class GraphicModule : IStaticModule
|
||||
{
|
||||
|
||||
public string ModuleName => "Graphic";
|
||||
public string ModuleName => "Graphics";
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void InitializeModule(
|
||||
IModuleInitializeProfile profile
|
||||
IModuleInitializeConfiguration profile
|
||||
)
|
||||
{
|
||||
GraphicFramework.LoadGlfw();
|
||||
if (GraphicFramework.glfwInit() == 0) {
|
||||
throw new InvalidOperationException("Failed to initialize GLFW.");
|
||||
}
|
||||
}
|
||||
|
||||
public void UninitializeModule()
|
||||
@@ -325,7 +328,7 @@ namespace StgSharp.Graphics
|
||||
internal static unsafe void glfwSetWindowIcon(
|
||||
IntPtr window,
|
||||
int count,
|
||||
GLFWimage* images
|
||||
GlfwImageNative* images
|
||||
)
|
||||
{
|
||||
_glfw.glfwSetWindowIcon(window, count, (IntPtr)images);
|
||||
@@ -750,7 +753,7 @@ namespace StgSharp.Graphics
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe IntPtr glfwCreateCursor(
|
||||
GLFWimage* image,
|
||||
GlfwImageNative* image,
|
||||
int xhot,
|
||||
int yhot
|
||||
)
|
||||
@@ -1087,8 +1090,6 @@ namespace StgSharp.Graphics
|
||||
return _glfw.glfwGetRequiredInstanceExtensions(count);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// file="glfw.struct"
|
||||
// Project: StgSharp
|
||||
// Copyright (c) Nitload.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Internal
|
||||
{
|
||||
// GLFW owns these objects. The managed layer only passes opaque pointers to them.
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct glfwVideomode { }
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct glfwGammaramp { }
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal unsafe struct GlfwImageNative
|
||||
{
|
||||
|
||||
internal int Width;
|
||||
internal int Height;
|
||||
internal byte* Pixels;
|
||||
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct GLFWgamepadstate { }
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user